Was bedeutet dieser Pubkey?

Ich habe gerade angefangen, etwas über Bitcoin zu lernen, und bin mit p2pk und p2pkh irgendwie vertraut. Ich habe gerade diese Eingabe in einem Bitcoin-Blockchain-Explorer gefunden:

Geben Sie hier die Bildbeschreibung ein

Es sieht so aus, als ob das Pkscript durch etwas, das hash160 ist, "gelöst" werden kann (ich bin mit der Terminologie nicht sehr vertraut), das 0b49fe ...

Das ScriptSig sieht etwas einschüchternder aus :)

Was genau macht das ScriptSig? Wie funktioniert diese Art von Zahlungsmechanismus?

Danke

Antworten (1)

Dies ist ein P2SH-Skript (Pay-to-Script-Hash), definiert in BIP 16 .

Das scriptPubKeyselbst ist sehr uninteressant: Es nimmt ein Element aus dem scriptSig, hasht es mit OP_HASH160und vergleicht es dann mit 0b49fe...f1. Mit anderen Worten, das einzige, was zum Ausgeben benötigt wird, ist die Kenntnis einiger Daten, deren Hash 0b49fe .... f1 ist.

Das hat BIP 16 nun geändert. Wenn a genauscriptPubKey die Form OP_HASH160 + 20 Byte Hash + OP_EQUAL hat , dann lösen die speziellen P2SH-Validierungsregeln aus:

  • Alle Operationen im scriptSigmüssen Pushs sein.
  • Der letzte Push in scriptSig(derjenige, dessen Hash wir wissen, ist 0b49fe...f1) wird wieder als Skript (mit dem Namen the ) angesehen redeemScript.
  • Dieses Skript wird ausgeführt, mit allen Eingaben außer dem letzten Push in der scriptSig.

Semantisch entspricht die gesamte Operation also der einfachen Verwendung von as redeemScript, scriptPubKeyohne dass dies dem Absender mitgeteilt werden muss. Stattdessen kann dem Absender einfach eine kurze P2SH-Adresse (3 ...) gegeben werden, die den Hash der verschlüsselt redeemScript, und die echte wird erst beim Verbringen von Zeit offenbart.

In Ihrem Beispiel redeemScriptscheint die eine 2-von-3-Multisig-Richtlinie zu codieren: OP_2 <pubkey1> <pubkey2> <pubkey3> OP_3 OP_CHECKMULTISIG, und die zusätzlichen Stack-Elemente in scriptSigsind OP_0 (eine Problemumgehung für einen Fehler, der OP_CHECKMULTISIGein Element zu viel vom Stack entfernt) plus 2 Signaturen.