fbpx

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

Bitcoin Script, zwany również “Bitcoin Scripting Language”, stanowi język, którym posługuje się Bitcoin do realizacji różnorodnych funkcji, takich jak przesyłanie środków z portfela czy nawet tworzenie konta użytkownika. Wszystkie te operacje są zawarte w jednym narzędziu, które będzie dzisiaj przedmiotem naszej dyskusji.

Bitcoin Script – definicja 

Bitcoin Script to język programowania wykorzystywany przez sieć Bitcoin do przetwarzania transakcji. Kod napisany w tym języku jest czytany od lewej do prawej i opiera się na liniowych strukturach zwanych stosami. Stosy zawierają dane ułożone w kolejności LIFO (Last In-First Out), a każda instrukcja wykonywana jest jedna po drugiej.

Bitcoin Script można określić jako język instrukcji, ponieważ rejestruje on instrukcje wraz z każdą dokonaną transakcją. Te instrukcje opisują, w jaki sposób użytkownicy mogą uzyskać dostęp do bitcoinów w sieci i jak mogą z nich korzystać.

Warto zauważyć, że Bitcoin Script nie jest językiem Turinga w pełnym tego słowa znaczeniu. Oznacza to, że jego funkcjonalność jest ograniczona i nie pozwala na rozwiązywanie problemów czy tworzenie pętli. To ograniczenie jest celowe, aby zapobiec potencjalnym problemom, takim jak nieskończone pętle czy wykrywanie błędów, które mogą prowadzić do złośliwego oprogramowania.

Mimo tych ograniczeń, język programowania Bitcoina odgrywa kluczową rolę w całym ekosystemie. Bitcoin używa tzw. “opcodes” jako funkcji, które manipulują pamięcią, wykonują operacje matematyczne, obsługują pętle czy wywołują inne istotne funkcje.

Co to jest opcode i kod operacji?

OPCODE, co oznacza Operation Code, stanowi integralną część instrukcji języka programowania. Jego zadaniem jest precyzyjne określenie operacji, która ma zostać wykonana. Specyfikacja i format opcodu są ustalane przez zestaw instrukcji, znanego jako ISA (Instruction Set Architecture), który obsługuje wprowadzoną instrukcję. Zazwyczaj procesor jest odpowiedzialny za realizację tego zadania.

W kontekście Bitcoin oraz wielu innych kryptowalut, opcodes stanowią podstawę systemu, który umożliwia programowanie instrukcji transakcji. Ważne jest zrozumienie, że większość kryptowalut to w istocie programowalny środek płatniczy. “Programowalny” jest tutaj kluczowym słowem, ponieważ Bitcoin Script, będący językiem programowania Bitcoina, wykorzystuje opcodes do definiowania instrukcji. Opcodes są wcześniej zdefiniowane przez sieć BTC, a obecnie w ekosystemie Bitcoin wyróżniamy 256 opcodes, o numerach od 0 do 255. Jednak tylko 116 z nich jest obecnie aktywnych.

Opcodes umożliwiają wykonywanie różnorodnych operacji w sieci Bitcoin, takich jak przeprowadzanie transakcji, kontrola przepływu danych, zarządzanie stosem, zarządzanie logiką czy nawet operacje kryptograficzne. Aktualna i pełna lista opcodes znajduje się w kodzie źródłowym Bitcoina, który jest ogólnodostępny.

Bitcoin Script – podział

Język programowania Bitcoin Script dzieli się na dwa kluczowe skrypty: scriptSig oraz scriptPubKey. Przeanalizujmy obie te kategorie:

  1. scriptSig (skrypt odblokowujący):
    • Jest to skrypt, który służy do odblokowywania transakcji.
    • Wymaga obecności klucza publicznego oraz odpowiadającego mu podpisu cyfrowego.
    • Jego funkcja polega na dostarczeniu niezbędnych danych autoryzacyjnych umożliwiających przeprowadzenie transakcji.
  2. scriptPubKey (skrypt blokujący):
    • Stanowi skrypt, który blokuje dostęp do środków przekazywanych w transakcji.
    • Zawiera zazwyczaj hash klucza publicznego (adres Bitcoin), do którego są kierowane środki.
    • Jego celem jest ustanowienie warunków, które muszą zostać spełnione, aby nastąpiło odblokowanie środków i zakończenie transakcji.

Te dwa skrypty współpracują ze sobą w ramach procesu przetwarzania transakcji, umożliwiając zarówno zabezpieczenie, jak i uwalnianie środków w sposób bezpieczny i kontrolowany.

Po co stworzono Bitcoin Script? 

Język programowania Bitcoin Script został stworzony w celu zapewnienia szybkości i łatwości przeprowadzania transakcji. Programowanie skryptów jest zaprojektowane w sposób prosty, skupiając się na określeniu, czy dana operacja może być wykonana, czy nie. Skrypt Bitcoina umożliwia przesyłanie transakcji tylko wtedy, gdy spełnione są określone warunki, co stanowi unikalną cechę Bitcoina i innych kryptowalut.

Skrypt ten nie tylko pozwala na sprawne realizowanie transakcji, ale także minimalizuje ryzyko pojawienia się błędów w systemie. Dzięki takiemu podejściu, transakcje w sieci są obliczane efektywnie, a jednocześnie nie wpływają negatywnie na prędkość działania systemu.

Jak przebiega transakcja przy użyciu Bitcoin Script 

Wspomnieliśmy wcześniej, że skrypt Bitcoin Script zawiera dwie kluczowe składowe: scriptPubKey i scriptSig. Pierwsza z nich definiuje operacje, jakie mają zostać wykonane, natomiast druga zawiera podpis cyfrowy i klucz publiczny służący do weryfikacji autentyczności transakcji. Dzięki temu jedynie uprawnione osoby posiadające odpowiednie dane mogą uzyskać dostęp do środków i dokonywać operacji na nich. Poniżej przedstawiamy kilka operacji, które są realizowane w opcodach:

  1. OP_DUP: Duplikuje element znajdujący się na górnym stosie.
  2. OP_HASH160: Przetwarza dane wejściowe dwukrotnie – najpierw przy użyciu funkcji SHA-256, a następnie przy użyciu RIPEMD-160.
  3. OP_EQUALVERIFY: Sprawdza, czy dane wejściowe są zgodne.
  4. OP_CHECKSIG: Zarządza danymi wejściowymi i wyjściowymi, sprawdzając, czy dane i skrypt transakcji sumują się do określonego hasha.

Jeśli powyższe operacje są wykonane pomyślnie, przechodzimy do skryptu, który zaczyna od zduplikowania klucza publicznego właściciela. Następnie ten klucz przechodzi przez proces hashowania, a otrzymany wynik jest porównywany z haszem klucza publicznego znajdującego się w scriptPubKey. Wszystko po to, aby upewnić się, że klucz publiczny jest autentyczny.

Jeśli porównanie jest pozytywne, skrypt kontynuuje swoje działanie, przechodząc do operacji OP_CHECKSIG, gdzie następuje weryfikacja podpisu cyfrowego przy użyciu klucza publicznego.

Jak widzisz, skrypt Bitcoin Script zawiera sekwencję operacji, które składają się na proces weryfikacji transakcji i dostępu do środków.

Wady i zalety 

  • Bitcoin Script wyróżnia się prostotą i nie wymaga skomplikowanych działań.
  • Ograniczona funkcjonalność skryptu sprawia, że jest bardziej bezpieczny.
  • Jako język Turing Incomplete, brak w nim pętli, co dodatkowo zwiększa bezpieczeństwo.
  • Minimalizuje występowanie błędów i potencjalnie złośliwego oprogramowania.
  • Dzięki swojej prostocie, może być implementowany praktycznie wszędzie.
  • Wszystkie niezbędne informacje do uruchomienia skryptu muszą być w nim zawarte.
  • Posiada ograniczoną liczbę instrukcji, wynoszącą jedynie 256.

Podsumowanie

Bitcoin Script to najprostszy język programowania, co stanowi jedną z jego głównych zalet. Jednak jego najważniejszą cechą jest wysoki poziom bezpieczeństwa.

Zapisz się do newslettera!

Otrzymuj co tydzień najnowsze informacje o kryptowalutach na swój e-mail.