例 2: エスクローと紛争調停によると、エスクロー取引を作成する可能性があります。また、pay-to-script-hash メカニズムを導入するBIP 16もあります。
これらの文書によると、私が理解しているように、3 人の参加者間のエスクロー取引を処理するには、次の手順に従う必要があります。
これら 3 つの参加者はそれぞれ、rpc "getnewaddress" を実行して新しいアドレスを作成します。
次に、全員が「validateaddress」を実行してアドレスを検証し、公開鍵を取得する必要があります。
次に、次のように、3 つの公開鍵をパラメータとして rpc メソッド「createmultisig」を実行して、マルチシグ アドレスを作成する必要があります。
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
<...>
}`
最終ステップの 1 つ: 独自の scriptPubKey を作成する必要があります。OK、それは問題ではありません。Pybitcointools、Bitcoin 署名およびトランザクション用の Python ライブラリを使用して、 を実行することでそれを行うことができます。その 結果、 scriptPubKey
pybtctool mk_multisig_script pub_key1 pub_key2 pub_key3 2 3
を取得し、後で別の createrawtransaction で使用する必要があります。最終段階。魔法が始まります。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」が必要です。
問題は、トランザクションの出力に任意のスクリプトを設定する方法です。