Wie signiere ich eine Bitcoin-Transaktion mit dem privaten Schlüssel „Bitcoind“ und Nicht-Bitcoind-Wallet?

Ich möchte eine Bitcoin-Transaktion nur mit 'bitcoind' und 'bitcoin-cli' erstellen und signieren .

Ich kann eine Transaktion mit der RPC-API „ createrawtransaction “ erstellen , aber das Signieren mit „signrawtransaction“ schlägt fehl.

UPDATE : Ich habe es herausgefunden und mich selbst unten beantwortet. Achten Sie darauf, dass der scriptPubKey korrekt ist, und lassen Sie das Redewendungsskript für einfache Transaktionen leer.

Der private Schlüssel wird nicht in der eingebauten Brieftasche von Bitcoin gespeichert . Das heißt, das private/öffentliche Schlüsselpaar wurde (zum Beispiel) von einem Vanity-Dienstprogramm erstellt.

Konfiguration

  • "Von"-Adresse: 1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD( From_Addr_1As)
  • "to"-Adresse: 1Mu5S5fuztimKZizvYZjKwpYfM9ZFf7zmo( To_Addr_1Mu)
  • Transaktion, die Geld gesendet hat an From_Addr_1As: 4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e( Prev_Tx_4325)
  • neue Transaktion istNew_Tx

Finanzierung

Die Transaktion ( Prev_Tx_4325) sendete 0,00187 BTC an From_Addr_1As: https://blockchain.info/tx/4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e - auch in der Adresstransaktionsansicht zu sehen https://blockchain.info/address/1AsJjnWg5QKBThZM6mKUzDjmmK6

Ich möchte 0,00186 BTC von From_Addr_1Asbis senden To_Addr_1Mu. Die Gebühr von 0,00001 BTC ist inbegriffen.

Bash Shell: Raw-Transaktion erstellen (erfolgreich):

$ ./bitcoin-cli -rpcpassword=123456 createrawtransaction '[{"txid":"4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e","vout":0}]' '{"1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD":0.00186}'

Befehlsausgabe:

01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000

Bash Shell: Raw-Transaktion decodieren (erfolgreich):

Achtung: 'scriptSig' ist leer!

$ ./bitcoin-cli -rpcpassword=123456 decoderawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000

Befehlsausgabe:

{ "txid" : "b1ff3da36a6d7c3aaaee41428a7e239baa6243e37d7e1db60ea022d9f994ec52", "version" : 1, "locktime" : 0, "vin" : [ { "txid" : "4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e", "vout" : 0, "scriptSig" : { "asm" : "", "hex" : "" }, "sequence" : 4294967295 } ], "vout" : [ { "value" : 0.00186000, "n" : 0, "scriptPubKey" : { "asm" : "OP_DUP OP_HASH160 01ddbca1a39b60b54fb671297a4a20a7681e0171 OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac", "reqSigs" : 1, "type" : "pubkeyhash", "addresses" : [ "1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD" ] } } ] }

Bash Shell: Raw-Transaktion signieren (erfolgreich):

Passt auf:

  • scriptPubKeykopiert von derPrev_Tx_4325
  • redeemScriptbleibt leerer String: ""

./bitcoin-cli -rpcpassword=123456 signrawtransaction "01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000" '[{"txid":"4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e","vout":0,"scriptPubKey":"76a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac","redeemScript":""}]' '["5J34hLVaP9UAj4BcdbgYoPia93zzDfo8JhTzUN2tf8qqRiZqtjY"]' "ALL"

Befehlsausgabe:

{ "hex" : "01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000", "complete" : true }

Bash Shell: Signierte Transaktion entschlüsseln (erfolgreich):

$ ./bitcoin-cli -rpcpassword=123456 decoderawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000

Befehlsausgabe:

{ "txid" : "267550934eb413a623459464d88cb14ff47fa192df720cf8485b590812db8fba", "version" : 1, "locktime" : 0, "vin" : [ { "txid" : "4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e", "vout" : 0, "scriptSig" : { "asm" : "304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a01 04aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4a", "hex" : "47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4a" }, "sequence" : 4294967295 } ], "vout" : [ { "value" : 0.00186000, "n" : 0, "scriptPubKey" : { "asm" : "OP_DUP OP_HASH160 01ddbca1a39b60b54fb671297a4a20a7681e0171 OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac", "reqSigs" : 1, "type" : "pubkeyhash", "addresses" : [ "1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD" ] } } ] }

Bash Shell: Raw-Transaktion senden (erfolgreich):

./bitcoin-cli -rpcpassword=123456 sendrawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000 267550934eb413a623459464d88cb14ff47fa192df720cf8485b590812db8fba

Befehlsausgabe: Keine Ausgabe bei Befehlserfolg!

Fazit :-)

Durch das Erklären und Formulieren der Frage fand ich eine Lösung. Es lohnt sich wirklich, bei StackExchange nachzufragen, und ich bin selbst zur Antwort gekommen!

UPDATE : Vielen Dank für Kommentare - ich habe mir unten geantwortet. Stellen Sie sicher, dass scriptPubKey korrekt ist, und lassen Sie „redeedScript“ für einfache Transaktionen leer.

Was ist die Frage?
Stellen Sie die Frage und beantworten Sie sie dann selbst, anstatt die Frage und die Antwort in die "Frage" zu stellen
Wie @JanMoritzLindemann bereits angedeutet hat, passt Ihr Beitrag nicht in unser Format. Bitte trennen Sie es in eine Frage und eine Antwort. Eine visuelle Erklärung des Stackexchange-Formats finden Sie in unserem About .
Warum ist Ihr Vout-> Wert in BTC, während meiner in Satoshis angezeigt wird?

Antworten (1)

Beantwortung meiner eigenen Frage

Beim Erstellen und Signieren einer rohen Bitcoin-Transaktion mit dem Programm „bitcoind“ kamen im Wesentlichen zwei Dinge in Frage:

  • Belassen Sie „redeemScript“ als leeren String
    • Es muss für einfache Bitcoin-Transaktionen leer sein!
  • Verwenden von einfachen Anführungszeichen ('), damit der Bitcoin-RPC-Aufruf schön und nicht chaotisch aussieht.

Das ist alles.

when i do sendrawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000 i get error code: -25 error message: Missing inputs