Powrót

3. Poziom zaawansowany

Ukończono: 0%
Kroki: 0/0
  1. 1. Co to jest Taproot?
  2. 2. Mosty blockchain – co to jest?
  3. 3. Czym jest atak 51% na blockchain?
  4. 4. Zero-knowledge proof- protokół, który szanuje prywatność
  5. 5. Co to jest EOSREX?
  6. 6. Mirror Protocol – co to jest 
  7. 7. Czym jest i jak działa DAO? 
  8. 8. Czym jest spoofing na rynku kryptowalut?
  9. 9. Cyfrowe prawo własności
  10. 10. Jak sprawdzić projekt kryptowalutowy – czyli tokenomia kryptowalut
  11. 11. Czym jest Ethereum Plasma?
  12. 12. Co to jest Ethereum Casper?
  13. 13. Co to jest Selfish Minning?
  14. 14. Jak stworzyć własny NFT?
  15. 15. Podpisy Schnorra - co to jest?
  16. 16. Co to jest dowód Zk-SNARK i Zk-STARK
  17. 17. Co to jest Proof of Elapsed Time- dowód upływającego czasu (PoET)?
  18. 18. MimbleWimble
  19. 19. Czym są ETFy?
  20. 20. Aktywa syntetyczne
  21. 21. Czym są likwidacje DeFI?
  22. 22. Nowy system tożsamości - Polygon ID
  23. 23. Czym jest Ethereum Virtual Machine MEV?
  24. 24. Fundacja Ethereum i protokół Scroll - czym są?
  25. 25. Czym jest bizantyjska tolerancja błędów?
  26. 26. Czym jest skalowalność technologii blockchain?
  27. 27. Interchain Security- nowy protokół Cosmos (Atom)
  28. 28. Coin Mixing vs. Coin Join - definicja, możliwości i zagrożenia
  29. 29. Co to są tokeny SoulBound SBD?
  30. 30. Co to jest Lido?
  31. 31. Czym są Threshold Signatures i jak działają?
  32. 32. Technologia blockchain i cyberataki
  33. 33. Skrypt Bitcoina - czym jest i co powinieneś wiedzieć na ten temat
  34. 34. Czym jest zkEVM i jakie są jego podstawowe cechy?
  35. 35. Czy poufne transakcje na blockchainie istnieją? Co to jest Confidential Transaction?
  36. 36. Algorytmiczne stablecoiny – wszystko, co powinieneś o nich wiedzieć
  37. 37. Polygon Zk Rollups - co powinieneś wiedzieć na jego temat?
  38. 38. Co to jest Infura Web3?
  39. 39. Mantle – skalowalność Ethereum L2 – jak działa?
  40. 40. Polygon zkEVM - wszystko, co powinieneś wiedzieć
  41. 41. Co to jest Optimism (OP) i jak działają jego rollupy?
  42. 42. Czym są węzły RPC node i jak działają?
  43. 43. SEI Network: wszystko, co musisz wiedzieć o rozwiązaniu warstwy 1 dla DeFi
  44. 44. Rodzaje mechanizmów konsensusu Proof-of-Stake: DPoS, LPoS oraz BPoS
  45. 45. Bedrock: krzywa epileptyczna, która zapewnia bezpieczeństwo!
  46. 46. Czym jest Tendermint i jak działa?
  47. 47. Pantos: jak rozwiązać problem transferu tokenów miedzy blockchainami?
  48. 48. Czym jest szyfrowanie asymetryczne?
  49. 49. Funkcja Base-58 w kryptowalutach
  50. 50. Czym jest i jak działa protokół Nostr?
  51. 51. Czym jest i jak działa most XDAI Bridge?
  52. 52. Porównanie Solidity i Rust: Wybór języka programowania w ekosystemie blockchain.
  53. 53. Czym jest Pinata w Web 3? Wyjaśniamy!
  54. 54. Czym jest Real-Time Operating System (RTOS)?
Lekcja 33 z 54

33. Skrypt Bitcoina – czym jest i co powinieneś wiedzieć na ten temat

Skrypt Bitcoina, nazywany inaczej „Bitcoin Script”, to nic innego, jak język, którego używa Bitcoin do robienia wszystkiego, co robi. Mówimy tutaj m.in. o wysyłaniu środków z portfela czy nawet tworzenie konta użytkownika. Wszystkie te funkcje są zawarte w jedną narzędziu. Jakim? To nasz temat na dzisiaj. 

Bitcoin Script – definicja 

Bitcoin Script to język programowania, którego używa Bitcoin. Służy on do przetwarzania transakcji. Tak zapisany kod czyta się od lewej do prawej, a opiera się on na serii liniowych struktur, nazywanych stosami. Stosy natomiast zawierają dane, które ułożone są w kolejności LIFO (Last In-First Out). Co ciekawe, każda instrukcja wykonana w tym języku jest wykonana jedna po drugiej. 

Bitcoin Script to w zasadzie język instrukcji. Są one rejestrowane z każdą dokonaną transakcją. Same instrukcje opisują sposób, w jaki użytkownicy mogą uzyskać dostęp do bitcoinów dostępnych w sieci i zrobić z nich odpowiedni użytek. 

Co ciekawe, język programowania Bitcoina nie jest językiem Full Turinga. Oznacza to, że jego pełna funkcjonalność jest ograniczona – nie może rozwiązywać problemów i tworzyć pętli. To ograniczone jest celowe, ponieważ zapobiega nieskończonym pętlom i wykrywaniu błędów, które mogą tworzyć złośliwe oprogramowanie. 

Jednakże język programowania jest ważnym elementem całego ekosystemu Bitcoina. Dzięki nim programy i komputery mogą wykonywać nasze działania. Bitcoin do tego celu używa opcodes, które głównie służą jako funkcje. Manipulują pamięcią, matematyką, pętlami czy wywołują inne, ważne funkcje. 

Co to jest opcode i kod operacji?

OPCODE, czyli Operation Code. To część instrukcji języka programowania, której zadaniem jest określenie operacji do wykonania. Specyfikacja i format opcodu jest określona przez zestaw instrukcji tzw. ISA, który przetwarza wprowadzoną instrukcję. Tym zadaniem zajmuje się zazwyczaj procesor. 

W Bitcoinie i nie tylko, ale również w przypadku wielu innych kryptowalut, opcodes to szkielet systemu, dzięki któremu możemy zaprogramować instrukcję transakcji. Przypominamy, że większość kryptowalut to w zasadzie programowalny pieniądz. „Programowalny” to nasze słowo klucz, ponieważ Bitcoin Script to język programowania, gdzie wszystkie instrukcje są podawane w opcodes. One natomiast są z góry określone przez sieć BTC. W praktyce wyróżniamy 256 opcodes, które zaczynają się od numeru 0-255 w ekosystemie Bitcoin. Obecnie tylko 116 jest aktywnych. 

I to właśnie opcodes pozwalają nam na wykonywanie różnych operacji w sieci Bitcoin. Mówimy o przeprowadzaniu transakcji, kontroli przepływu danych, zarządzanie stosem, zarządzanie logiką czy nawet operacjami kryptograficznymi. Pełna i zaktualizowana lista opcodes znajduje się w kodzie Bitcoin, który jest ogólnodostępny. 

Bitcoin Script – podział

Język programowania jest podzielony na dwa bardzo ważne skrypty: scriptSig oraz scriptPubKey. Omówmy oba z nich:

  1. scriptSig to skrypt odblokowujący. Wymaga klucza publicznego i podpisu cyfrowego. 
  2. scriptPubKey to skrypt blokujący. Zawiera hash klucza publicznego (adres Bitcoin). 

Po co stworzono Bitcoin Script? 

Język programowania stworzono, aby transakcje były przeprowadzane szybko i łatwo. Skrypt, pod względem programowania jest opracowany bardzo prosto. W zasadzie określa, czy operacja może być wykonana, czy nie. Skrypt Bitcoina pozwala nam na wysłanie transakcji, w momencie, w którym są spełnione pewne jej warunki. Ta cecha czyni Bitcoina i inne kryptowaluty czymś unikalnym. Co więcej, skrypt zapobiega powstawaniu błędów w systemie. Dzięki niemu transakcje w sieci są bardzo łatwe do obliczenia, jednocześnie nie spowalniając jej. 

Jak przebiega transakcja przy użyciu Bitcoin Script 

Wspomnieliśmy wcześniej, że sam skrypt zawiera dwie składowe: scriptPubKey i scriptSig. Pierwszy zawiera czynności, jakie należy wykonać, a drugi podpis i klucz publiczny do weryfikacji autentyczności zawieranej transakcji. W efekcie tylko upoważnione osoby mają dostęp do środków i mogą wykonać na nich jakiekolwiek działania. Operacje wykonywane w opcode są następujące:

  1. opdup duplikuje element, który znajduje się na górnym stosie. 
  2. ophash160 zajmuje się danymi wejściowymi, które są kodowane dwukrotnie. Najpierw przy użyciu SHA-256, a później przy pomocy RIPEMD -160. 
  3. opequalverify sprawdzamy, czy dane zostały wprowadzone poprawnie.
  4. opchecksig zajmuje się danymi wejścia i wyjścia. Sprawdza, czy dane i skrypt całej transakcji są podsumowane w hashu. 

Jeśli powyższe działania zostały wykonane poprawnie, przechodzimy do skryptu. Jako pierwszy zostaje zduplikowany klucz publiczny właściciela. Przechodzi on następnie przez proces hashowania. Otrzymany wynik jest porównywany z hashem klucza publicznego, który znajduje się w scriptPubKey. Wszystko po to, aby upewnić się, że jest on ważny.  

Jeśli tak, to skrypt kontynuuje swoje działanie i przechodzimy do opchecksig, gdzie następuje weryfikacja podpisu z kluczem publicznym. 

Jak widzisz, wszystko, co zachodzi w skrypcie, jest bezpieczne i z góry zaplanowane. 

Wady i zalety 

  • Bitcoin Script jest bardzo prosty i nie wymaga skomplikowanych działań. 
  • Dzięki ograniczonej funkcjonalności jest bardziej bezpieczny. 
  • Jest językiem Turning Incomplete, więc nie posiada pętli. 
  • Ogranicza do minimum wystąpienie błędów i złośliwych kodów. 
  • Może być implementowany praktycznie wszędzie. 
  • Wszystkie informacje, niezbędne do uruchomienia skryptu muszą być w nim zawarte. 
  • Zawiera tylko 256 instrukcji. 

Podsumowanie

Bitcoin Script jest najprostszym językiem programowania. Ma bardzo wiele zalet. Szczególnie ważny jest jego wysoki poziom bezpieczeństwa.