[英]How to set an arbitrary scriptPubKey during generation of escrow bitcoin transaction?
根據示例 2:托管和爭議調解,有可能創建托管交易。 還有BIP 16 ,它引入了支付腳本哈希機制。
根據這些文件,據我所知,我必須按照以下步驟處理三個參與者之間的托管交易:
這三個參與者中的每一個都通過執行 rpc "getnewaddress" 創建一個新地址。
然后每個人都必須通過執行“validateaddress”來驗證他們的地址並獲得一個公鑰。
然后我們必須通過使用三個公鑰作為參數執行 rpc 方法“createmultisig”來創建一個 multisig 地址,如下所示:
bitcoind createmultisig 2 '["pubkey1","pubkey2","pubkey3"]'
然后我們創建一個交易,將一些硬幣放入這個多重簽名地址:
bitcoind createrawtransaction '[{"txid":"my some txid","vout":0}]' '{"created multisig address":0.001}'
之后,我們必須通過執行“decoderawtransaction”來解碼我們創建的交易,以獲得創建下一個交易所需的 txid:
.
bitcoind decoderawtransaction <blah-blah>
{
**"txid" : "txid,that we need",**
"version" : 1,
"locktime" : 0,
<...>
and so on
<...>
}`
最后的步驟之一:我們必須創建我們自己的 scriptPubKey。 好的,這不是問題:我們可以使用 Pybitcointools,用於比特幣簽名和交易的 Python 庫通過執行pybtctool mk_multisig_script pub_key1 pub_key2 pub_key3 2 3
來做到這一點,結果,我們得到了一個scriptPubKey ,我們稍后必須在另一個中使用它創建原始交易。
最后一步。 魔法開始。 我們執行 bitcoind 以使用自定義腳本創建原始交易:
bitcoind createrawtransaction '[{"txid":"txid","vout":0,"scriptPubKey":"**scriptPubKey**","redeemScript":"redeemScript from createmultisig transaction above"}]' '{"bitcoin address to output":0.001}'
,這將返回一個交易。
魔術:以上一切正常。 最后 createrawtransaction 創建一個事務。 但是當我們通過執行bitcoind decoderawtransaction <transaction, received on the last step>
在bitcoind decoderawtransaction <transaction, received on the last step>
解碼收到的交易時,將會有這樣的情況:
.
"vout" : [
{
"value" : 0.00100000,
"n" : 0,
"scriptPubKey" : {
"asm" : "OP_DUP OP_HASH160 blah blah OP_EQUALVERIFY OP_CHECKSIG",
"hex" : "blah blah",
`
如您所見,在 scriptPubKey 中有“OP_CHECKSIG”但我們的腳本必須有“OP_CHECKMULTISIGVERIFY”
那么,問題是:如何將任意腳本設置為交易的輸出?
我和你遇到了同樣的問題,但也許我更進一步? 接下來我會: transaction=pybitcointools.deserialize(hex)
transaction["outs"][n]["script"]=**script pub key**
hex=pybitcointools.serialize(transaction)transaction=pybitcointools.deserialize(hex)
transaction["outs"][n]["script"]=**script pub key**
hex=pybitcointools.serialize(transaction)
我不認為你使用贖回腳本,直到你想用這筆交易發送的比特幣?
更新https://bitcoin.stackexchange.com/questions/4486/transaction-with-slightly-changed-script-is-never-relayed看起來我們的客戶將拒絕廣播這些交易,我們需要將它們交給一個特定的礦工池。
如果您想進行更多合作:zack[dott]bitcoin@gmail.com
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.