Script
使用 Python + 原始協議發送交易
兩天前我發現了幾篇關於使用原始比特幣協議的文章,現在我仍在嘗試發送交易。
我的程式碼是基於這個類的,如果我理解所有這些比特幣魔法,我需要用地址的私鑰簽署我的原始輸入交易
1LwPhYQi4BRBuuyWSGVeb6kPrTqpSVmoYz
,並在它之後添加我的公鑰——這將是一個有效的解鎖腳本?這是我的程式碼的一部分,我從上一個連結中完全複製了它:
tx_in_count = struct.pack("<B", 1) tx_in = {} tx_in["outpoint_hash"] = flip_byte_order(previous_output_hash).decode("hex") tx_in["outpoint_index"] = struct.pack("<L", 1) tx_in["script"] = ("76a914%s88ac" % private_key).decode("hex") tx_in["script_bytes"] = struct.pack("<B", (len(tx_in["script"]))) tx_in["sequence"] = "ffffffff".decode("hex")
我不確定
tx_in["script"]
線路,因為沒有關於簽署交易或公鑰的內容,所以這可能是我失敗的原因。感謝您的任何答案:)
首先,如果你想學習如何建構一個原始交易,你真的應該去這個問題:Redeeming a raw transaction step by step example required
其次, tx_in 需要一個
outpoint_hash
,這是您花費的上一個交易的雜湊值。第三,你永遠不應該像在
tx_in["script"]
. 這應該保留在安全設備上,您需要它才能生成簽名。第四,
tx_in["script"]
應該是來自oupoint(hash,index)的同一個腳本。以十六進制 (76a914…88ac) 編碼的腳本語言的細節是您應該研究的 OP 程式碼(參見上面的連結)。第五,這個庫在其他地方進行簽名,因為
script_bytes
需要是實際的公鑰和簽名。我認為您會發現使用更標準的 Python 庫(例如 pycoin(<https://github.com/richardkiss/pycoin>)或 pybitcoin(<https://github.com/blockstack/pybitcoin>))更容易理解