Wie verbringen Sie eine P2SH-Transaktion?

Ich bin auf eine Menge Probleme gestoßen, eine Transaktion zu erhalten, um Münzen in einer Multisig-Adresse auszugeben.

Ich erstelle die Rohtransaktion. Wenn ich zum Signieren gehe, erhalte ich "Operation not valid with the correct stack size".

Ich verwende Core, und die Codes sind hier.

Prüfen Sie zuerst, ob es gut ist.

bitcoin-cli decoderawtransaction 0100000001d2aba456546be8f5223802112637e484c5d94118dfe560fa23de06fb37e621dd0000000000ffffffff01107a0700000000001976a914a4f29e1c8f592021fd79eda1be85c96a9a8d349a88ac00000000
{
    "txid" : "e71006c60dbfa2793710d5cf866d1b6b89ba80bc41634031d927738c40ae8228",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "txid" : "dd21e637fb06de23fa60e5df1841d9c584e4372611023822f5e86b5456a4abd2",
            "vout" : 0,
            "scriptSig" : {
                "asm" : "",
                "hex" : ""
            },
            "sequence" : 4294967295
        }
    ],
    "vout" : [
        {
            "value" : 0.00490000,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 a4f29e1c8f592021fd79eda1be85c96a9a8d349a OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a914a4f29e1c8f592021fd79eda1be85c96a9a8d349a88ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "1G3ATq31k5SrGdqucXKqA9dHbzS3wJHzbc"
                ]
            }
        }
    ]
}

Und dann gehen wir unterschreiben.

bitcoin-cli signrawtransaction 0100000001d2aba456546be8f5223802112637e484c5d94118dfe560fa23de06fb37e621dd0000000000ffffffff01107a0700000000001976a914a4f29e1c8f592021fd79eda1be85c96a9a8d349a88ac00000000
{
    "hex" : "0100000001d2aba456546be8f5223802112637e484c5d94118dfe560fa23de06fb37e621dd000000009200483045022100eaae5737ab000f614ce73da11ba456b4467cf640ed881fd1fa90183d1d28c2e8022066c78bf750ae0a175f6ef116ecc3e4a0c18eda1aff9c951952f8f6e45a3521ad0147522102908921b30aa37fe6e522c528cca0ebcda9f0df4019301fa45bc3b3c7df60245a2103559dc92d6e44a98080d487e585b93278106249a166795584ae554a4275f059b752aeffffffff01107a0700000000001976a914a4f29e1c8f592021fd79eda1be85c96a9a8d349a88ac00000000",
    "complete" : false,
    "errors" : [
        {
            "txid" : "dd21e637fb06de23fa60e5df1841d9c584e4372611023822f5e86b5456a4abd2",
            "vout" : 0,
            "scriptSig" : "00483045022100eaae5737ab000f614ce73da11ba456b4467cf640ed881fd1fa90183d1d28c2e8022066c78bf750ae0a175f6ef116ecc3e4a0c18eda1aff9c951952f8f6e45a3521ad0147522102908921b30aa37fe6e522c528cca0ebcda9f0df4019301fa45bc3b3c7df60245a2103559dc92d6e44a98080d487e585b93278106249a166795584ae554a4275f059b752ae",
            "sequence" : 4294967295,
            "error" : "Operation not valid with the current stack size"
        }
    ]
}

Ich verwende https://gist.githubusercontent.com/gavinandresen/3966071/raw/ca21870c190ba0e90c1a30673e790ef5acd207d2/TwoOfThree.sh als Referenz.

Haben Sie alle notwendigen Schlüssel, um diese Ausgabe auszugeben? Das sieht so aus, als wäre es mit einigen der Schlüssel signiert, aber Sie brauchen einen anderen.
Ist es das, was es bedeutet? Ich habe nicht einmal daran gedacht, dass es einen Teil unterzeichnet hat, es scheint kein Anzeichen für einen Teilerfolg zu geben. Ja, ich habe nur einen der erforderlichen Schlüssel, aber welcher Teil davon zeigt, dass er teilweise signiert ist?
Nun, es ist länger.
Ich danke dir sehr! Bitte schreiben Sie eine Antwort und ich werde akzeptieren. Welches Genie hat sich entschieden, einen so benutzerunfreundlichen „Erfolg“ zu programmieren?

Antworten (1)

Sie erhalten diesen Fehler, weil Bitcoin versucht hat, das Skript zu validieren, und fehlgeschlagen ist, weil nicht alle erforderlichen Signaturen in der vorherigen hinzugefügt wurden signrawtransaction. Sie können dies auch sagen, weil completees falsch ist.

Sie müssen es zu Clients bringen, die über die anderen erforderlichen Schlüssel verfügen, und signrawtransactiondie Transaktion auch dort ausführen.

Zur weiteren Verdeutlichung können Sie für zukünftige Betrachter feststellen, dass der tx teilweise signiert ist, indem Sie den zurückgegebenen Hash decoderawtransactionausführen und feststellen, dass Sie jetzt Inhalt im Feld vin scriptsig haben. Es sollte wirklich eine Nachricht enthalten, die besagt, dass es teilweise signiert wurde, aber das ist nicht der Fall.
@Drazisil Warum erhalte ich Inhalte im Skriptsig von vin?