読者です 読者をやめる 読者になる 読者になる

Reality Keysのsetupからclaimまで一連の流れ

f:id:yzono:20150207131653j:plain

はじめに

過去数回にわたってReality Keysの試行錯誤をダラダラ書いてきましたが、setupからclaimまで一連の流れが成功しましたので書きます。

Reality Keysの開発者Edmundに貴重なアドバイスをたくさん頂きました。ありがとうございます。

目次

  • 動作確認した環境情報
  • claimが動かなかった理由
  • pybitcointoolsの再インストール
  • test.py実行
  • realitykeysdemo.py再実行
  • ブロードキャスト後のブロックチェーン
  • Non-Standardトランザクションのブロードキャスト

動作確認した環境情報

動作確認できた環境はこれです。

pybitcointools 1.1.15
bitcoid 90200
Python 2.7.6
realitykeysdemo.py(2016/2/7時点)

claimが動かなかった理由

Edmundからの情報によると、最新のpybitcointoolsはマルチシグのアドレス生成に関するissueがあるとのこと。

Wrong MultiSignature Address Generation #71

私が使っていたバージョンは1.1.25。Githubから最新ソースをダウンロードしていました。Edmundと同じバージョン1.1.15(pipインストール)に変更することにしました。

pybitcointoolsの再インストール

pipインストールの手順はこれです。(INSTALLED: 1.1となっているのは、いろいろなバージョンを試してたからです。気にしないでください)

// 検索
$ pip search pybitcointools
pybitcointools            - Python Bitcoin Tools
  INSTALLED: 1.1
  LATEST:    1.1.15

// インストール
$ sudo pip install pybitcointools --upgrade

// インストール結果確認
$ pip search pybitcointools
pybitcointools            - Python Bitcoin Tools
  INSTALLED: 1.1.15 (latest)

test.py実行

test.py

realitykeysdemo.pyにはテストクラスがあります。テストを実行して以下結果が出れば問題ありません。(バージョンは1.1.25の時はエラーが出ていました)

$ python test.py 
......
----------------------------------------------------------------------
Ran 6 tests in 9.800s

OK

以下エラーが出たら、

ImportError: No module named simplejson

jsonのimport部分を修正してください。

#import simplejson
import json as simplejson

realitykeysdemo.py再実行

実行結果は以下です。

// 1. makekeys
python ./realitykeysdemo.py makekeys --seed [Aliceのseed] // Alice
python ./realitykeysdemo.py makekeys --seed [Bobのseed] // Bob

// 2. send some bitcoins to generated address
pybtctool unspent 1E4rzbdkH2aemsbxhTUJHypdEqhEiQSNR5
pybtctool unspent 12ppqR5u96dWP4VNNj4j38m2j515GyYwzv

$ pybtctool unspent 1E4rzbdkH2aemsbxhTUJHypdEqhEiQSNR5
[{"output": "900e89d5fef26c950178a53b812b67f8262f86772c8a7264541181eca81332fb:0", "value": 35000}]
$ pybtctool unspent 12ppqR5u96dWP4VNNj4j38m2j515GyYwzv
[{"output": "77c7c1c1d2382edb3f7e5d2ab1a887316c49a4529a72802e465e57a29b1b230a:0", "value": 35000}]

// 3. setup 
./realitykeysdemo.py setup 1 04fb77357e489693971dbc8f569cb4231f4ee3f5bc4fe4135932885ace38b638cbd84ba0a89d6a9708980a972502609bad00395aa544b61fdf03013002ef292986 30000 0465254e8bc9a349e1d2629ad4771171585930403813d10d10e8fe21d8f2d54e45b245ed31244d2efb5172259efd45f047284bfee94064520a8caea0536f1060a8 30000 --seed [Aliceのseed]

./realitykeysdemo.py setup 1 04fb77357e489693971dbc8f569cb4231f4ee3f5bc4fe4135932885ace38b638cbd84ba0a89d6a9708980a972502609bad00395aa544b61fdf03013002ef292986 30000 0465254e8bc9a349e1d2629ad4771171585930403813d10d10e8fe21d8f2d54e45b245ed31244d2efb5172259efd45f047284bfee94064520a8caea0536f1060a8 30000 01000000020a231b9ba2575e462e80729a52a4496c3187a8b12a5d7e3fdb2e38d2c1c1c7770000000000fffffffffb3213a8ec81115464728a2c77862f26f8672b813ba57801956cf2fed5890e90000000008c493046022100b55cef707fb41ed722518d651f17bf3a44d1f2c5ef1bd19415228ba24ddaa289022100ef1c1f24a31ecc61d762e98155102aca5dc0902ae26287807043dbc6f2ca358701410465254e8bc9a349e1d2629ad4771171585930403813d10d10e8fe21d8f2d54e45b245ed31244d2efb5172259efd45f047284bfee94064520a8caea0536f1060a8ffffffff0160ea00000000000017a914db730bb1a762580f86d97927c2a5530166d2582a8700000000 --seed [Bobのseed]

3MhMj4vuaXX2Rh1Rdr59A4g1ncUmPK6U6W // generated P2SH address

// 4. claim
python ./realitykeysdemo.py claim 1 04fb77357e489693971dbc8f569cb4231f4ee3f5bc4fe4135932885ace38b638cbd84ba0a89d6a9708980a972502609bad00395aa544b61fdf03013002ef292986 0465254e8bc9a349e1d2629ad4771171585930403813d10d10e8fe21d8f2d54e45b245ed31244d2efb5172259efd45f047284bfee94064520a8caea0536f1060a8 -f 10000 -d 1Fcyh3T6zsQtwBpwpTADf6M24GY5CC4vbx --seed [Aliceのseed]

ブロードキャスト後のブロックチェーン

https://blockchain.info/address/3MhMj4vuaXX2Rh1Rdr59A4g1ncUmPK6U6W

通常のトランザクションに比べて承認が遅く感じます..

Non-Standardトランザクションのブロードキャスト

https://github.com/edmundedgar/realitykeys-examples/commit/d2c606be9e146016fe32b175ff0c419ad6c908a8

今日のコミットを見るとブロードキャスト先の優先度を、1.Blockchain.info、2.eligiusに変更していますね。

Blockchain.infoもNon-Standardトランザクションを受けつけるようになったということらしいです。

まとめ

pybitcointoolsはマルチシグのアドレス生成の問題も気になりますが、次回からはReality Keysを使った実際のサービスについて書きます。

参考

Wrong MultiSignature Address Generation #71