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:
- scriptSig to skrypt odblokowujący. Wymaga klucza publicznego i podpisu cyfrowego.
- 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:
- opdup duplikuje element, który znajduje się na górnym stosie.
- ophash160 zajmuje się danymi wejściowymi, które są kodowane dwukrotnie. Najpierw przy użyciu SHA-256, a później przy pomocy RIPEMD -160.
- opequalverify sprawdzamy, czy dane zostały wprowadzone poprawnie.
- 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.