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 Ethereum Plasma?
  4. 4. Co to jest Ethereum Casper?
  5. 5. Co to jest dowód Zk-SNARK i Zk-STARK
  6. 6. Co to jest Selfish Minning?
  7. 7. Czym jest spoofing na rynku kryptowalut?
  8. 8. Podpisy Schnorra - co to jest?
  9. 9. MimbleWimble
  10. 10. Cyfrowe prawo własności
  11. 11. Czym są ETFy?
  12. 12. Jak sprawdzić projekt kryptowalutowy – czyli tokenomia kryptowalut
  13. 13. Czym jest atak 51% na blockchain?
  14. 14. Czym jest i jak działa DAO? 
  15. 15. Zero-Knowledge Proof- protokół, który szanuje prywatność
  16. 16. Co to jest EOSREX?
  17. 17. Co to jest Proof of Elapsed Time- dowód upływającego czasu (PoET)?
  18. 18. Mirror Protocol – co to jest?
  19. 19. Aktywa syntetyczne
  20. 20. Jak stworzyć własny NFT?
  21. 21. Czym są likwidacje DeFI?
  22. 22. Nowy system tożsamości - Polygon ID
  23. 23. Fundacja Ethereum i protokół Scroll - czym są?
  24. 24. Czym jest bizantyjska tolerancja błędów?
  25. 25. Czym jest skalowalność technologii blockchain?
  26. 26. Interchain Security- nowy protokół Cosmos (Atom)
  27. 27. Coin Mixing vs. Coin Join - definicja, możliwości i zagrożenia
  28. 28. Czym jest Ethereum Virtual Machine MEV?
  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. Czym jest NEAR Rainbow Bridge?
  41. 41. Liquid Staking Ethereum i tokeny LSD. Co musisz wiedzieć na ten temat?
  42. 42. 10 najlepszych blockchainowych wyroczni. Jak działają? Czym się różnią?
  43. 43. Czym jest Web3.js i Ether.js? Jakie są między nimi podstawowe różnice?
  44. 44. Czym jest StarkWare i rekurencyjne dowody ważności
  45. 45. Quant Network: Skalowalność przyszłości
  46. 46. Polygon zkEVM - wszystko, co powinieneś wiedzieć
  47. 47. Co to jest Optimism (OP) i jak działają jego rollupy?
  48. 48. Czym są węzły RPC node i jak działają?
  49. 49. SEI Network: wszystko, co musisz wiedzieć o rozwiązaniu warstwy 1 dla DeFi
  50. 50. Rodzaje mechanizmów konsensusu Proof-of-Stake: DPoS, LPoS oraz BPoS
  51. 51. Bedrock: krzywa epileptyczna, która zapewnia bezpieczeństwo!
  52. 52. Czym jest Tendermint i jak działa?
  53. 53. Pantos: jak rozwiązać problem transferu tokenów miedzy blockchainami?
  54. 54. Czym jest szyfrowanie asymetryczne?
  55. 55. Funkcja Base-58 w kryptowalutach
  56. 56. Czym jest i jak działa protokół Nostr?
  57. 57. Czym jest i jak działa most XDAI Bridge?
  58. 58. Porównanie Solidity i Rust: Wybór języka programowania w ekosystemie blockchain.
  59. 59. Czym jest Real-Time Operating System (RTOS)?
  60. 60. Czym jest i jak działa Rinkeby Testnet Ethereum?
  61. 61. Czym jest szyfrowanie probabilistyczne?
  62. 62. Czym jest Pinata w Web 3? Wyjaśniamy!
  63. 63. Czym jest EIP-4337? Czy Ethereum Account Abstraction zmieni Web3 na zawsze?
  64. 64. Czym są audyty inteligentnych kontraktów? Jakie firmy się nim zajmują?
  65. 65. Jak działa portfel AirGapped?
  66. 66. Czym jest proto-danksharding (EIP-4844) na Ethereum?
  67. 67. Czym jest i jak działa zdecentralizowana pamięć masowa?
  68. 68. Jak odzyskać kryptowaluty wysłane na niewłaściwy adres lub sieć? Praktyczny poradnik!
  69. 69. Portfel MPC i Obliczenia Wielostronne: Innowacyjna technologia dla prywatności i bezpieczeństwa.
  70. 70. Podpis progowy w kryptografii: zaawansowana technika podpisywania!
  71. 71. Adres Vanity w kryptowalutach: czym jest i jaka jest jego charakterystyka?
  72. 72. Atak Ponownego Wejścia (Reentrancy Attack) na inteligentnych kontraktach: zagrożenie dla bezpieczeństwa blockchain!
  73. 73. Slither: statyczny analizator dla smart kontraktów!
  74. 74. Sandwich Attack w DeFi: wyjaśnienie i zagrożenia!
  75. 75. Blockchain RPC dla Web3: Kluczowa technologia w świecie zdecentralizowanych finansów!
  76. 76. Re-staking: Korzyści z ponownego delegowania środków w stakingu!
  77. 77. Base: Ewolucja transakcji kryptowalutowych dzięki rozwiązaniu warstwy 2 od Coinbase
  78. 78. IPFS: Nowa era zdecentralizowanego przechowywania danych
  79. 79. Typowe luki i zabezpieczenia mostów w technologii blockchain
  80. 80. JumpNet – nowy sidechain Ethereum
Lekcja 33 z 80

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.