簡體   English   中英

如何在生成托管比特幣交易期間設置任意 scriptPubKey?

[英]How to set an arbitrary scriptPubKey during generation of escrow bitcoin transaction?

根據示例 2:托管和爭議調解,有可能創建托管交易。 還有BIP 16 ,它引入了支付腳本哈希機制。

根據這些文件,據我所知,我必須按照以下步驟處理三個參與者之間的托管交易:

  1. 這三個參與者中的每一個都通過執行 rpc "getnewaddress" 創建一個新地址。

  2. 然后每個人都必須通過執行“validateaddress”來驗證他們的地址並獲得一個公鑰。

  3. 然后我們必須通過使用三個公鑰作為參數執行 rpc 方法“createmultisig”來創建一個 multisig 地址,如下所示:

    bitcoind createmultisig 2 '["pubkey1","pubkey2","pubkey3"]'

  4. 然后我們創建一個交易,將一些硬幣放入這個多重簽名地址:

    bitcoind createrawtransaction '[{"txid":"my some txid","vout":0}]' '{"created multisig address":0.001}'

  5. 之后,我們必須通過執行“decoderawtransaction”來解碼我們創建的交易,以獲得創建下一個交易所需的 txid:

.

bitcoind decoderawtransaction <blah-blah>
{
    **"txid" : "txid,that we need",**
    "version" : 1,
    "locktime" : 0,
 <...>
and so on
<...>
}`
  1. 最后的步驟之一:我們必須創建我們自己的 scriptPubKey。 好的,這不是問題:我們可以使用 Pybitcointools,用於比特幣簽名和交易的 Python 庫通過執行pybtctool mk_multisig_script pub_key1 pub_key2 pub_key3 2 3來做到這一點,結果,我們得到了一個scriptPubKey ,我們稍后必須在另一個中使用它創建原始交易。

  2. 最后一步。 魔法開始。 我們執行 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM