Script

使用 Python + 原始協議發送交易

  • January 2, 2017

兩天前我發現了幾篇關於使用原始比特幣協議的文章,現在我仍在嘗試發送交易。

我的程式碼是基於這個的,如果我理解所有這些比特幣魔法,我需要用地址的私鑰簽署我的原始輸入交易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>))更容易理解

引用自:https://bitcoin.stackexchange.com/questions/50501