1

根据示例 2:托管和争议调解,有可能创建托管交易。还有BIP 16,它引入了付费脚本哈希机制。

据我了解,根据这些文件,我必须按照以下步骤处理三个参与者之间的托管交易:

  1. 这三个参与者中的每一个都通过执行 rpc "getnewaddress" 创建一个新地址。

  2. 然后每个人都必须通过执行“validateaddress”来验证他们的地址并获得一个公钥。

  3. 然后我们必须通过执行 rpc 方法“createmultisig”来创建一个多重签名地址,其中三个公钥作为参数,如下所示:

    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,我们必须稍后在另一个 createrawtransaction 中使用它。

  2. 最后一步。魔术开始。我们执行 bitcoind 以使用自定义脚本创建原始交易:

    bitcoind createrawtransaction '[{"txid":"txid","vout":0,"scriptPubKey":"**scriptPubKey**","redeemScript":"redeemScript from createmultisig transaction above"}]' '{"bitcoin address to output":0.001}'这将返回一笔交易。

魔术:上面的一切都很好。最终 createrawtransaction 创建一个事务。但是当我们通过在 vout 部分执行来解码接收到的交易时,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”

所以,问题是:如何为交易的输出设置任意脚本?

4

1 回答 1

2

我正在为与您相同的问题而苦苦挣扎,但也许我走得更远了?接下来我会: 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

于 2014-01-03T16:54:24.510 回答