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 )
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.)
Hier ist ein funktionierendes Beispiel, das die Grundlage für die Beantwortung Ihrer Frage bildet:
Alice will Bob bezahlen, also fragt sie Bob nach einer Adresse.
Bob möchte Zahlungen an eine P2SH-Adresse erhalten.
Also erstellt Bob das RedeemScript und verwendet es dann, um einen RedeemScript-Hash zu erstellen, der dann in eine P2SH-Adresse codiert wird.
Bob gibt Alice die P2SH-Adresse und Alice bezahlt sie.
Einige Zeit später möchte Bob diese Bitcoins an Charlie ausgeben.
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 addmultsigaddress
RPC 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.
addmultsigaddress
BIP45 zu lesen. Danke noch einmal.
sr-gi
Colman McMahon