Wie erstelle ich eine p2sh-Transaktion mit einem Skriptsig von OP_true?

Wie kann ich eine p2sh-Transaktion mit einer Skriptsig erstellen, die nur OP_TRUE enthält, wodurch die Notwendigkeit einer digitalen Signatur entfällt, die gesendet und abgebaut wird?

Könnte jemand auch ein Beispiel für eine solche Transaktion geben?

@Michael Folkson Ich sehe, dass das Tag bitcoin-core-developmentvon Ihnen hinzugefügt wurde, aber ich verstehe nicht, wie es mit der Frage zusammenhängt, können Sie das erklären?
@VojtěchStrnad: Nicht sicher, es ist eine Weile her! Ich dachte, es wäre ein Zusammenhang mit Funktionstests, wurde aber jetzt entfernt :)

Antworten (1)

Hier haben Sie ein Beispiel für eine Transaktionsausgabe aus einer P2PKH-Ausgabe und das Erstellen einer P2SH-Ausgabe mit einem OP_1.

Und hier haben Sie das Gegenstück , eine Transaktion, die von der ersten ausgegeben wird (mit einem Eingabeskript „0151“) und eine P2PKH-Ausgabe generiert.

Ich habe beide mit einer Python-Bibliothek erstellt, an der ich Mitautor bin. Sie können es hier überprüfen .

Ich habe neue Transaktionen inklusive Gebühren hinzugefügt, um sicherzustellen, dass sie in einem Block landen.
Muss das Ausgabeskript, das Sie zur Finanzierung der p2sh-Transaktion verwenden, immer OP_HAS160 (Hash) OP_EQUAL sein?
Ja, das ist die Struktur eines jeden P2SH-Ausgabeskripts.
Könnte eine solche Transaktion im Mainnet erstellt werden?
Sicher. Sie sollten jedoch vorsichtig sein, jeder kann es einlösen.
Würde die Transaktion mit scriptsig 0151 als Standard oder Nicht-Standard betrachtet werden?
Standard AFAIK, es ist nur ein Push von Daten.
Sobald das Ausgabeskript, das Sie als Eingabe verwenden, OP_HASH160 (Hash) OP_EQUAL ist, können Sie eine p2sh-Transaktion mit scriptsig OP_TRUE erstellen, die keine digitale Signatur erfordert?
Sie spielen ein wenig mit den Konzepten herum. Wenn Sie einen UTXO vom Typ P2SH ausgeben, der den Hash eines OP_True kapselt, können Sie eine P2SH-Transaktion erstellen, die ihn ausgibt, indem Sie einfach eine 1 auf den Stack schieben.
Wie können Sie also wissen, ob es den Hash von OP_TRUE kapselt und wie ein Hash von OP_TRUE aussieht?
has160(A) = hash_Aegal wie oft du es ausrechnest. Der Hash von OP_True wird also immer seinda1745e9b549bd0bfa1a569971c77eba30cd5a4b
Wenn also der utxo OP_TRUE nicht kapselt, gibt es einen anderen Opcode oder eine Kombination von Opcodes, die verwendet werden können, um eine Transaktion zu erstellen, die gesendet und abgebaut werden kann?
Ja, die op_code-Kombination spielt keine Rolle. Sie können beispielsweise ein P2SH erstellen, das ein OP_2 OP_EQUAL kapselt, und es dann mit einem Push von 2 einlösen. Es gibt viele Kombinationen, die keine Signatur implizieren.
Gibt es also einen Opcode oder eine Kombination von Opcodes, die eine Transaktion gültig machen, unabhängig davon, was das Ausgabeskript kapselt, und wenn nicht, wie können Sie bestimmen, was das Ausgabeskript kapselt, um ein Skriptsig mit den erforderlichen Opcodes zu erstellen?
Aktualisierte Links zu blockstream.info, da frühere Block-Explorer-Links entfernt wurden