Reality Keysを理解する

技術メモ

P2SHをいろいろ調べていると、Reality Keysというもので P2SHを使用しているという面白い記事を見つけた。

zono blog – Reality Keys
realitykeysのサイト

上記ページにも記載を引用させてもらうと Reality Keys とは

RealityKeysは世界初の「事実に関する認証局」です。暗号システムが読み込めるデータを提供してコンピューターが理解できるスマートコントラクトを可能にします。ベリサインのような認証局(Certificate Authority)がデジタル証明書を発行するのと同じように、RealityKeysは事実に関するデータを認証します。

以下5種類のイベントの事実認証ができるということ。

1. Freebaseに登録されている46Mのトピック
2. 為替相場
3. スポーツゲームの結果(サッカーの結果)
4. Blockchain
5. パーソナルゴール(RunKeeper)

Reality Keysの使い方は以下のような感じ。ざっくりと。こちらも記事参照させてもらってますm(_ _)m

1. イベント登録する。(WEBまたはAPI)
2. 2つの秘密鍵と公開鍵を生成。公開鍵のみ発行する。(RKシステム) *1
3. イベント発生日時まで待つ。
4. APIを利用して結果を受け取る。
5. 4の結果が正しいか検証する。
6. 正しい予想に対する秘密鍵を発行する。

この Reality Keys、P2SHとどう関わるというかというと
Reality Keysから発行された2つの公開鍵を利用してP2SHトランザクションを作成する
という部分。

realitykeysdemo.py というReality Keysの作成者が作られたツールを使ってコマンドうちながら流れを確認。

1 Bitcoin to be at least 1000 US Dollar on Jan. 10, 2014
「2014年1月9日のBTCの終値が$1,000を超えているか」という問いに対して、「NO」という事実が証明されて、NOの公開鍵の対応する秘密鍵が発行されている。

こちらをもとにコマンド確認。
もう、ほぼzonoさんのブログそのままなのですが、、、P2SHのトランザクション作成の流れ

1. Aliceの公開鍵を作成(makekeysコマンド)
2. Bobの公開鍵を作成(makekeysコマンド)
3. 1と2で作成した公開鍵に対してビットコインを送金
4. AliceがP2SHアドレスを作成して署名する
5. 4のトランザクションに対して、Bobが署名する
6. 5のトランザクションをブロードキャストする

こちらのコマンドの実行結果が書かれていて、流れがわかりやすくなるようにわかる範囲はhash値じゃなく日本語でコマンドで実行していくことにすると

1. Aliceの公開鍵を作成(makekeysコマンド)

python ./realitykeysdemo.py makekeys --seed [Aliceのseed]
公開鍵 -> 040190c6e169d2aaadb45cae2964db48d48c16b42a9cf963aceda3644068a73f3d23a33a4efd87f2e73e9482bb7425a8500a2ca19124f1c2930df2aa5e726ff119
Aliceアドレス -> 1ERnz7DafLYP4GX3brhPGMq4mq1Mmyc3Pu

2. Bobの公開鍵を作成(makekeysコマンド)

python ./realitykeysdemo.py makekeys --seed [Bobのseed]
公開鍵 -> 043e90a622f851754b83c0d28bc0d4a4c619b13c70c174658a0b0dd7480a32631629734a00ba16434e6f64060ec6e3837b5d148134cd6522302b5243b34ad37543
Bobアドレス -> 1D8AbYyryKH27yiJhUVpztthXwxQxCjMop

3. 1と2で作成した公開鍵に対してビットコインを送金

AliceとBobにビットコインアドレスに対して0.01BTCを送金されたものとする。

4. AliceがP2SHアドレスを作成して署名する

python ./realitykeysdemo.py setup 1 [Bobの公開鍵] 1000  [Aliceの公開鍵] 1000 --seed [Aliceのseed]
p2shアドレス -> 3GMYiDszdeGTQ8K52EozB9vLGdLuiRxHtg

5. 4のトランザクションに対して、Bobが署名する

./realitykeysdemo.py setup 1 [Bobの公開鍵] 1000 [Aliceの公開鍵] 1000 [4で作成したtransaction] --seed [Bobのseed]
p2shアドレス(変わらず) -> 3GMYiDszdeGTQ8K52EozB9vLGdLuiRxHtg

6. 5のトランザクションをブロードキャストする

7. Bob(敗者)がSpnedをトライして失敗する

./realitykeysdemo.py claim 1 [Bobの公開鍵] [Aliceの公開鍵] -f [報酬] -d [fee送信先のアドレス] --seed [Bobのseed]

8. Alice(勝者)がSpendをトライして成功する

./realitykeysdemo.py claim 1 [Bobの公開鍵] [Aliceの公開鍵] -f [報酬] -d [fee送信先のアドレス] --seed [Aliceのseed]

とコマンドを羅列してみた。次は自分でも実際にコマンドを動かしてみる。
ついでに、P2SHアドレスの作り方も理解する。

Sponsored Link

ビットコイン(Bitcoin)、イーサリアム(Ethereum)、リップル(Ripple)、ネム(NEM)などの仮想通貨を買うならコインチェックがおすすめです。

※アプリは指値売買ができず手数料が高いので、アプリをダウンロードするのではなくメール&パスワード登録へ!まずは5万円ほど入金して仮想通貨とブロックチェーンの世界を楽しんでください!

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


miningpoolhub
miningpoolhubのAPIを使って自動スイッチングを試してみる in ethOS

* アイキャッチの男性は、Flicker上のライセンスフリーの画像ひっぱってきているだけで、本文とま …

NEM
[memo] NEMを送金しようとするとFAILURE_TIMESTAMP_TOO_FAR_IN_FUTUREが出る

Docker上のコンテナで、NEM-libraryを使ってmosaicの送金を試していたところ FA …

NEM
NEMのテストネットワークで独自通貨を試す

NEMアプリケーションを作る際にテストネットワークでのテスト非常に重要になってきます。 このため今回 …