如何從沒有同步餘額的離線比特幣核心發送比特幣?
我正在設置一個冷錢包。如何從控制一些比特幣的比特幣核心錢包生成簽名的原始交易?
getnewaddress
PS:我使用來自 bitcoin-qt GUI 的控制台生成了錢包
最簡單的方法是將您在離線比特幣核心客戶端上生成的地址導入線上完全同步的比特幣核心。命令是:
bitcoin-cli importaddress <address>
. 將此地址導入同步的比特幣核心機器的好處是,您可以將其用作僅限觀看的地址,這將允許您查看與其相關的所有 UTXO。然後,您可以使用該命令bitcoin-cli listunspent
向您顯示所有 UTXO,然後您可以使用與相關地址相關的那些。注:以下
txid
s 及金額均為補編。現在,使用輸出中顯示的 UTXO,您可以使用命令
listunspent
在線上客戶端上創建交易。createrawtransaction
我特意使用了兩個 UTXO 來展示如何為多個 UTXO 完成此操作,並展示如果輸入中的一個輸出點屬於舊地址而另一個輸出點屬於 P2SH-P2WPKH 地址時其他命令的外觀。bitcoin-cli createrawtransaction '[{"txid":"27893ad827ddd94c442c561b1d3bf3d0f60571d6518e4941698e5778b25e1991","vout":0},{"txid":"776be22ff789a86283b247f99f7b2c6f7f53185cb765570bc65c6e6bb7ed8558","vout":1}]' '{"12WJykFa1hqJUJ65QbFB8dS5XNJaR22w2S":0.1}'
這將為您提供以下十六進製字元串,您可以將其複製到離線機器上。
output: 020000000291195eb278578e6941498e51d67105f6d0f33b1d1b562c444cd9dd27d83a89270000000000ffffffff5885edb76b6e5cc60b5765b75c18537f6f2c7b9ff947b28362a889f72fe26b770100000000ffffffff0180969800000000001976a9141083323e89f0f734c448cd16d5a5513afb841b1788ac00000000
在離線機器上複製該輸出以簽署交易。Now
signrawtransaction
命令在 v0.17 中被棄用,並在 v0.18 之後被刪除。取而代之的是我們現在有signrawtransactionwithwallet
andsignrawtransactionwithkey
。當您想使用屬於您的比特幣核心錢包的密鑰簽署交易時,您將使用前者,而當您想通過將私鑰與命令一起傳遞來使用不在您錢包中的密鑰簽署交易時,您將使用後者。由於您的地址是從錢包中的密鑰生成的,我們將使用第一個命令。複製
createrawtransaction
我們在線上客戶端上獲得的命令輸出後,我們還需要提供sciptPubKey
andredeemScript
。這樣做是為了讓離線客戶端知道什麼是外點的鎖定腳本以及它需要使用哪個密鑰,因為它無權訪問事務(因為它是離線的)。現在,使用命令:
bitcoin-cli signrawtransactionwithwallet "020000000291195eb278578e6941498e51d67105f6d0f33b1d1b562c444cd9dd27d83a89270000000000ffffffff5885edb76b6e5cc60b5765b75c18537f6f2c7b9ff947b28362a889f72fe26b770100000000ffffffff0180969800000000001976a9141083323e89f0f734c448cd16d5a5513afb841b1788ac00000000" '[{"txid":"27893ad827ddd94c442c561b1d3bf3d0f60571d6518e4941698e5778b25e1991","vout":0,"scriptPubKey":"76a914623ff66fb88ff802fe1b8eaff666ba52307eecb088ac","amount":0.09}, {"txid":"776be22ff789a86283b247f99f7b2c6f7f53185cb765570bc65c6e6bb7ed8558","vout":1, "scriptPubKey":"a914de7dad83bb2d6e9638d347dcb3c53fe238773c9387","redeemScript":"0014df7bcc159ade813e6bd6290d97ed0bc8987dc084", "amount":0.011}]' "ALL"
這會給你一個簽名的交易作為輸出。讓我們稱之為
hexoutput
。有幾點需要注意。如果您密切注意,您會看到輸入中使用的第二個 outpoint 包含redeemScript
. 這是因為它屬於 P2SH-P2WPKH 事務,因此您需要在欄位redeemScript
旁邊提供下一個。scriptPubKey
有關更多資訊,您可以參考此處的文件。現在將其複製
hexoutput
到您的線上比特幣核心客戶端並使用以下命令通過網路中繼它。bitcoin-cli sendrawtransaction hexoutput
這將為您提供
txid
一筆交易作為輸出,您可以使用它來監控您的交易。