1

例 2: エスクローと紛争調停によると、エスクロー取引を作成する可能性があります。また、pay-to-script-hash メカニズムを導入するBIP 16もあります。

これらの文書によると、私が理解しているように、3 人の参加者間のエスクロー取引を処理するには、次の手順に従う必要があります。

  1. これら 3 つの参加者はそれぞれ、rpc "getnewaddress" を実行して新しいアドレスを作成します。

  2. 次に、全員が「validateaddress」を実行してアドレスを検証し、公開鍵を取得する必要があります。

  3. 次に、次のように、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. 最終ステップの 1 つ: 独自の scriptPubKey を作成する必要があります。OK、それは問題ではありません。Pybitcointools、Bitcoin 署名およびトランザクション用の Python ライブラリを使用して、 を実行することでそれを行うことができます。その 結果、 scriptPubKeypybtctool mk_multisig_script pub_key1 pub_key2 pub_key3 2 3を取得し、後で別の createrawtransaction で使用する必要があります。

  2. 最終段階。魔法が始まります。bitcoind を実行して、カスタム スクリプトで生のトランザクションを作成します。

    bitcoind createrawtransaction '[{"txid":"txid","vout":0,"scriptPubKey":"**scriptPubKey**","redeemScript":"redeemScript from createmultisig transaction above"}]' '{"bitcoin address to output":0.001}'これはトランザクションを返します。

Magic : 上記のすべてが正常に動作します。最後の createrawtransaction は、トランザクションを作成します。しかし、受信したトランザクションbitcoind decoderawtransaction <transaction, received on the last step> を vout セクションで実行してデコードすると、次のようになります。

.

"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