Wo werden P2SH-Skripte zum vollständigen Einlösen gespeichert?

Ein Pay-to-Script-Hash/P2SH-Full-Relöse-Skript kann bis zu 520 Bytes groß sein . Nur zur Verdeutlichung: Wird das Einlösungsskript vor der Offenlegung/Ausgabe in der Brieftasche des Spenders/Bobs oder anderswo gespeichert?

Der Entwicklerleitfaden sagt:

"Wenn Bob die Ausgabe ausgeben möchte, stellt er seine Signatur zusammen mit dem vollständigen (serialisierten) Einlösungsskript im Signaturskript bereit." ( https://bitcoin.org/en/developer-guide#p2sh-scripts )

Geben Sie hier die Bildbeschreibung ein

Soroushjp sagt:

„Das Einlösungsskript selbst wird nur angezeigt, mit dem Einlösungsskript-Hash verglichen und während der Ausgabetransaktion ausgewertet.“ ( http://www.soroushjp.com/2014/12/20/bitcoin-multisig-the-hard-way-understanding-raw-multisignature-bitcoin-transactions/ )

Antonpuolous erklärt:

„P2SH verlagert die Last in der Datenspeicherung für das lange Skript von der Ausgabe (die im UTXO-Set ist und daher den Speicher beeinflusst) auf die Eingabe (die nur in der Blockchain gespeichert ist).“ (2014:133)

(Diese Frage stellt fast dasselbe: Wo wird das P2SH-Skript geschrieben? )

(Es gibt eine unbeabsichtigte Beziehung zu dieser Frage „Speichern von Skripten (intelligenten Verträgen) außerhalb der Blockchain“ insofern als der Speicherort von Einlösungsskripten.)

Nur zur Verdeutlichung, meinen Sie, wo das vollständige Skript von demjenigen gespeichert wird, der es erstellt, bis er beschließt, die von ihm gesperrten UTXOs auszugeben? (Alle UTXOs, die diesen bestimmten Hash als AusgabeskriptPubkey enthalten)?
Ja, wo wird es buchstäblich gespeichert / aufbewahrt, bis es zum Ausgeben aufgedeckt wird? Im Diagramm steht Bobs Computer. Ich möchte nur festhalten, wo/wie es in einem typischen Nutzungsszenario gespeichert wird.

Antworten (1)

Hier ist ein funktionierendes Beispiel, das die Grundlage für die Beantwortung Ihrer Frage bildet:

  1. Alice will Bob bezahlen, also fragt sie Bob nach einer Adresse.

  2. Bob möchte Zahlungen an eine P2SH-Adresse erhalten.

  3. Also erstellt Bob das RedeemScript und verwendet es dann, um einen RedeemScript-Hash zu erstellen, der dann in eine P2SH-Adresse codiert wird.

  4. Bob gibt Alice die P2SH-Adresse und Alice bezahlt sie.

  5. Einige Zeit später möchte Bob diese Bitcoins an Charlie ausgeben.

  6. Bob erstellt eine Transaktion mit einer Eingabe, deren scriptSig das zuvor erstellte Einlöseskript enthält.

Nun zur Antwort auf Ihre Frage: Bob muss das RedeemScript zu dem Zeitpunkt kennen, zu dem er die P2SH-Adresse für Alice erstellt und wenn er die Bitcoins an Charlie ausgibt. Er kann, wie Sie vorschlagen, das RedeemScript die ganze Zeit in seiner Brieftasche speichern oder es bei Bedarf aus anderen Daten in seiner Brieftasche regenerieren oder es extern speichern - aber niemand anderes speichert es automatisch für ihn und es wird nicht Teil der Blockchain, bis er es in den Ausgaben für Charlie verwendet.

Ich glaube, Bitcoin Core macht das Einfache und speichert das gesamte RedeemScript in seiner Brieftasche für Adressen, die mit dem addmultsigaddressRPC erstellt wurden.

Es könnte einige Wallets geben, die so etwas wie BIP45 verwenden , um P2SH-Adressen bei Bedarf aus Paaren/Kombinationen von HD-Wallet-Seeds neu zu generieren.

BitPay Cosign kann in einigen Fällen die Speicherung von P2SH-Adressen auslagern, obwohl ich mir da wirklich nicht sicher bin.

Danke dir. Das gibt viel Einblick. Ich hatte noch nicht über diese anderen Ansätze nachgedacht (oder gelesen). Ich finde, dass viele Bitcoin-Tutorials und -Dokumentationen vage Beschreibungen wie "gepflegt", "gespeichert", "gehalten" usw. verwenden. Ich finde viele angeblich "einfache" / elementare Fragen, z. B. "Wo wird X-Skript gespeichert?" schwer konkrete Antworten zu bekommen. (Es ist sehr wahrscheinlich, dass ich nicht an den richtigen Stellen suche.) Ich mache mich auf den Weg, um etwas über addmultsigaddressBIP45 zu lesen. Danke noch einmal.