Cryptology Academy · Lekcja

Bitcoin Script i weryfikacja podpisów UTXO

Prześledzić skrypty pay-to-public-key-hash (P2PKH) i podpisywanie ECDSA

Lekcja 4 z 413 kroki

Bitcoin Script i weryfikacja podpisów UTXO to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Model UTXO

Bitcoin używa niewydanych wyjść transakcji (UTXO). Każde UTXO jest monetą ze skryptem blokującym (scriptPubKey). Aby je wydać, wydający dostarcza skrypt odblokowujący (scriptSig), który spełnia warunki skryptu blokującego. UTXO są niepodzielne — są albo wydane, albo niewydane, nigdy częściowo.

Bitcoin Script

Bitcoin Script to oparty na stosie język niezupełny w sensie Turinga. Skrypty wykonują się przez umieszczanie danych na stosie i uruchamianie kodów operacji. Nie ma pętli ani rekurencji — skrypty zawsze się kończą. To celowe ograniczenie zapobiega atakom typu denial-of-service i sprawia, że weryfikacja skryptu ma złożoność O(n) względem jego długości.

P2PKH: płatność na skrót klucza publicznego

Najczęściej spotykany typ wyjścia. scriptPubKey: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG. scriptSig: . Wykonanie: umieść podpis i klucz publiczny na stosie, zduplikuj klucz publiczny, oblicz hash160, porównaj wynik z osadzonym skrótem, zweryfikuj podpis ECDSA. Jeśli wszystkie kroki się powiodą, monetę można wydać.

Ślad wykonania P2PKH

Ślad stosu dla P2PKH: push ; push ; OP_DUP → umieść kopię; OP_HASH160 → oblicz hash160 dla elementu na szczycie stosu; push ; OP_EQUALVERIFY → zdejmij dwa elementy, zakończ niepowodzeniem, jeśli nie są równe; OP_CHECKSIG → zdejmij podpis i klucz publiczny, zweryfikuj ECDSA, umieść TRUE/FALSE na stosie. Skrypt kończy się powodzeniem, jeśli wynikiem jest TRUE.

ECDSA w Bitcoinie

Bitcoin używa ECDSA na krzywej secp256k1 (krzywej Koblitz, y^2 = x^3 + 7 mod p). Klucz prywatny d ∈ [1, n-1]. Klucz publiczny Q = d*G. Sign(m): k losowe; r = (k*G).x mod n; s = k^{-1}(H(m)+r*d) mod n. Podpis = (r, s). Jest kodowany w formacie DER w scriptSig.

Typy SIGHASH

Podpisy Bitcoin określają, które części transakcji obejmują: SIGHASH_ALL (domyślnie): podpisuje wszystkie wejścia i wyjścia. SIGHASH_SINGLE: podpisuje tylko odpowiadające mu wyjście. SIGHASH_NONE: nie podpisuje żadnych wyjść (niebezpieczne). SIGHASH_ANYONECANPAY: podpisuje tylko własne wejście — umożliwia tworzenie transakcji współtworzonych przez wiele stron.

P2SH: płatność na skrót skryptu

P2SH pozwala ukryć złożone warunki wydawania środków za skrótem. scriptPubKey: OP_HASH160 OP_EQUAL. scriptSig: . Wykonanie: sprawdź, czy hash(redeemScript) == scriptHash, a następnie wykonaj redeemScript. Umożliwia stosowanie multisig bez ujawniania warunków aż do chwili wydania środków.

Multisig (2 z 3)

redeemScript: OP_2 OP_3 OP_CHECKMULTISIG. scriptSig: OP_0 . OP_0 omija błąd w OP_CHECKMULTISIG, który zdejmuje ze stosu o jeden element za dużo. Multisig 2 z 3 wymaga dowolnych 2 z 3 podpisów.

SegWit i P2WPKH

Segregated Witness (SegWit, BIP-141) przenosi podpisy z scriptSig do osobnego pola witness. Eliminuje podatność transakcji na modyfikację (identyfikator zmienia się, gdy zmieni się scriptSig). scriptPubKey P2WPKH: OP_0 <20-byte pubKeyHash>. Witness: [ ].

Taproot (P2TR)

Taproot (BIP-340/341/342) używa podpisów Schnorra i zmerklizowanych abstrakcyjnych drzew składniowych (MAST). Domyślne wydanie środków: pojedynczy podpis Schnorra (nierozróżnialny od wydania ścieżką klucza). Złożone warunki są ukryte w drzewie Merkle'a i ujawniane tylko wtedy, gdy są używane. Prywatność i wydajność.

Weryfikacja skryptów w kodzie

Bitcoin Core weryfikuje skrypty za pomocą interpretera stosowego. CheckSig wywołuje VerifyScript, które wykonuje połączone scriptSig+scriptPubKey. Dla każdego kodu operacji CHECKSIG wywołuje CheckECDSASignature, które weryfikuje zakodowane w formacie DER (r,s) względem skrótu transakcji, używając secp256k1.

Szybkie sprawdzenie

Co weryfikuje OP_CHECKSIG w skrypcie P2PKH?

Podsumowanie

UTXO używają opartego na stosie Bitcoin Script. P2PKH to najczęstszy schemat wydawania środków — najpierw weryfikuje skrót klucza publicznego, a następnie podpis ECDSA. SegWit eliminuje podatność na modyfikację; Taproot dodaje podpisy Schnorra i MAST. Dalej: kryptoanaliza różnicowa.

Bezpłatny start

Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
67
Lekcje
261

Często zadawane pytania

Czy lekcja „Bitcoin Script i weryfikacja podpisów UTXO” jest bezpłatna?

Tak — pełny tekst „Bitcoin Script i weryfikacja podpisów UTXO” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Bitcoin Script i weryfikacja podpisów UTXO”?

Prześledzić skrypty pay-to-public-key-hash (P2PKH) i podpisywanie ECDSA Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Bitcoin Script i weryfikacja podpisów UTXO”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Łańcuchy skrótów i łączenie bloków
  2. Drzewa Merkle’a: integralność transakcji na dużą skalę
  3. Proof of Work: wydobywanie i dostosowywanie trudności
  4. Bitcoin Script i weryfikacja podpisów UTXO
← Powrót do Cryptology Academy