SignRawTransaction - Was ist scriptPubKey und einlöserSkript? [GELÖST] [geschlossen]

Lassen Sie mich darüber sprechen, wie ich zu der Situation gekommen bin, in der ich mich gerade befinde. Ich verwende PHP und die JSON-Bibliothek, um Bitcoin zu steuern. Und dabei.....

Ich habe mit createmultisig eine Multisignatur-Adresse erstellt, die 2 von 3 Signaturen erfordert.

Ich habe dann Geld an die Multisignaturadresse gesendet und konnte die an diese Adresse gesendeten Transaktionen mit getrawtransaction und decoderawtransaction bestätigen.

Als nächstes wollte ich diese Gelder an eine bestimmte Adresse freigeben (da ich alle Schlüssel kontrolliere, ist dies nur ein Testlauf).

Also habe ich eine Rohtransaktion erstellt, in der ich die Transaktions-ID eingegeben habe, die ich für eine der Transaktionen verwendet habe, um Gelder an die Multisignatur-Brieftasche zu senden. Ich habe auch die gewünschte Adresse und den Betrag hinzugefügt. Danach spuckt es ein rohes Transaktions-Hex aus.

Mein nächster Schritt besteht darin, die Rohtransaktion zu signieren. Hier stecke ich fest.

Die Parameter für signrawtransaction sind für mich verwirrend, und ich brauche eine Erklärung, als ob ich 5 Jahre alt wäre.

hexstring - assuming this is the hex string that createrawtransaction spit out

transaction id - is this the transaction id from when I transferred in the amount to the multisig wallet?

scriptPubKey - no idea what this is

redeemScript - no idea what this is

Ich habe scriptPubKey und resolveScript aus der Transaktion geholt, mit der ich Gelder in die Multisig-Brieftasche überwiesen habe, aber die resultierende Ausgabe war die exakte Eingabe der Hex-Zeichenfolge, sodass sie offensichtlich nicht korrekt signiert wird. Ich bin mir nicht sicher, was diese 2 Parameter sind.

Kann mir bitte jemand dabei helfen. Ich muss es mir erklären, als wäre ich zurückgeblieben, weil keine der Erklärungen, die ich online gelesen habe, geholfen hat.

Vielen Dank.

EDIT zu RE: Jonathan

Hier ist, was ich bisher getan habe.

1) Erstellte eine Multisig-Adresse mit 3 von mir generierten öffentlichen Schlüsseln. Ich habe mir auch die privaten Schlüssel notiert und die ausgegebene Multisig-Adresse (ABC) und das RedeemScript (redeem1)

2) Münzen an die Multisig-Adresse gesendet und durch Durchsuchen der Blockchain festgestellt, dass die Transaktionen existieren. Ich hatte mehrere Transaktions-IDs, um sie an diese Adresse zu senden, aber ich konzentriere mich auf eine, die ich als Ausgabe verwenden möchte. Wir nennen es (txid1). In txid1, als ich getrawtransaction aufrief, hatte es auch einen 46-Byte-Hex-Pubkey an die Ausgabe angehängt, ich nenne das (pubkey1)

3) Als nächstes habe ich eine Rohtransaktion erstellt, die die Parameter enthielt;

txid1, vout=0, Adresse (Adresse zum Ausgeben) und Betrag (entspricht dem gleichen Betrag, der mit txid1 an die Multsig-Adresse übertragen wurde) und es spuckt einen Hexstring aus, den ich nennen werde (hex1)

4) SignRawTransaction - hier stecke ich fest. Die Parameter, nach denen gefragt wird, sind:

[{"txid":txid,"vout":n,"scriptPubKey":hex, "redeemScript":hex},...] [,...]

Also gebe ich signrawtransaction (hex1, ["txid"=>txid1, "vout"=>0, "scriptPubKey"=>pubkey1, "redeemScript"=>redeem1, array(oneofmyprivatekeys)) ein.

Aber die resultierende Ausgabe ist nur hex1, ohne eine einzige Änderung daran. Ich erhalte keine Fehlermeldungen, nur eine ausgegebene Zeichenfolge, die mit hex1 identisch ist.

Können Sie mir eine Vorstellung davon geben, was ich falsch mache? Ich danke dir sehr!

Das Problem ist, dass ich das falsche Einlösungsskript verwendet habe. Ich hatte zwei Multi-Signatur-Adressen mit ähnlichen Namen erstellt und sie verwechselt
StackExchange ist kein Forum, bitte fügen Sie keine "[GELÖST]" "Tags" zu Fragetiteln hinzu. Sehen Sie sich die Einträge in der Hilfe an, wenn jemand antwortet und/oder selbst antwortet .

Antworten (1)

Schauen Sie sich zunächst https://gist.github.com/gavinandresen/3966071 an . Das ist ein Skript, das zwei Rohtransaktionen erstellt: eine, um eine Multisig-Adresse zu finanzieren, und eine andere, um das Geld auszugeben. Es zeigt jeden der Schritte, die zum Erstellen und Ausgeben einer Multisig-Adresse erforderlich sind. Leider erklärt das Skript nicht gut, woher die Parameter kommen. Ich werde versuchen, die Parameter zu erklären, die Sie benötigen.

Wie Sie erraten haben, ist hexstring die Ausgabe von createrawtransaction, und die Transaktions-ID ist die ID der Transaktion, die die Coins an die Multisig-Adresse gesendet hat. EinlösenScript ist einfach. Als Sie die Multisig-Adresse zum ersten Mal generiert haben, hat der Befehl sowohl die Adresse als auch das RedeemScript zurückgegeben. Wenn Sie diesen Wert nicht haben, können Sie die Multisig-Adresse mit denselben öffentlichen Schlüsseln neu erstellen und Sie sehen sie in der Ausgabe. scriptPubKey ist derjenige, bei dem ich mir nicht sicher bin. Ich glaube, ich weiß, was es ist, aber ich habe kein Bitcoin vor mir, also kann ich mir nicht sicher sein. Wenn Sie die Rohtransaktion dekodieren, die Münzen an die Multisig-Adresse sendet, sehen Sie einen oder zwei Ausgänge, von denen einer Münzen an die Multisig-Adresse sendet. (Die andere Ausgabe sendet den Rest der Münzen an eine Änderungsadresse.) In dieser Ausgabe wird es einen scriptPubKey-Abschnitt geben.

Sobald Sie diese Parameter haben, können Sie die Rohtransaktion signieren und senden. Wenn es nicht funktioniert, hinterlassen Sie hier einen Kommentar und ich werde versuchen, es zu lösen, wenn ich nach Hause komme.

Vielen Dank für die Klarstellung, ich habe den ursprünglichen Beitrag bearbeitet, um die von mir unternommenen Schritte zu verdeutlichen, und obwohl ich das falsche Einlöseskript verwendet habe, erhalte ich immer noch nicht die gewünschte Ausgabe.