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

Reality Keys(事実に関する認証局サービス)を使ってみる (1/3)

f:id:yzono:20150201022727j:plain

はじめに

第2回 ビットコイン・スタートアップピッチで発表されたReality Keysについて調べてみました。

目次

  • Reality Keysとは
  • Reality Keysで何ができるか
  • Reality Keysの使い方
  • 1.イベント登録する

Reality Keysとは

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

Reality Keysで何ができるか

現在、Reality Keysは以下5種類のイベントに対する事実認証を行います。

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

パーソナルゴールが特に面白いと思いました。例えば、「今月10km走る。達成できなければユニセフに寄付する」と宣言して周囲に契約を公開できます。周囲の人はBlockchineやRunKeeperのログを見て偽りのない進捗を確認できます。契約者本人はモチベーションを高めることができるでしょう。仮に目標を達成できない場合、ユニセフへの寄付は自動的に行われます。※1

※1 Reality Keysの役割は「事実の認証」です。認証結果を受け取った後の処理はサービス運営者が実装する必要があります。

Reality Keysの使い方

詳細は後で書きますが大雑把に書くと以下のプロセスになります。

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

*1 Reality Keysから発行された2つの公開鍵を利用してP2SHトランザクションを作成します。この部分がReality Keysのキモです(と思ってます)。詳細は次回書きます。

1.イベント登録する

イベント作成のAPIが公開されており、例として為替相場のイベントを試してみます。

為替相場のイベントを作成

リクエストパラメータ

fromcur(交換元通貨) = XBT
comparison(条件 ge=イコールまたは大きい、lt=小さい) = ge
tocur(交換先通貨) = USD
value(価格) = 1000
settlement_date(期日) = 2015-02-10
objection_period_secs(反論を認める時間) = 604800(7日)
accept_terms_of_service(同意した同意書のバージョン) = current
use_existing(TODO 不明) = 1

リクエスト実行

wget -qO- https://www.realitykeys.com/api/v1/exchange/new --post-data="fromcur=XBT&comparison=ge&tocur=USD&value=1000&settlement_date=2015-02-10&objection_period_secs=604800&accept_terms_of_service=current&use_existing=1"

レスポンス

{
"fromcur": "XBT", 
"no_pubkey": "0298794002ba4b93fd51908a6ffa0ab9e695c80b1b5290924e60ddb8775d77096e", 
"settlement_date": "2015-02-10", 
"objection_period_secs": 604800, 
"human_resolution_scheduled_datetime": null, 
"evaluation_method": "ge", 
"objection_fee_satoshis_paid": 0, 
"machine_resolution_scheduled_datetime": "2015-02-10 00:00:00", 
"tocur": "USD", 
"created_datetime": "2015-01-31 07:58:35", 
"winner": null, 
"value": "1000", 
"id": 1675, 
"source": "exchange", 
"yes_pubkey": "029b7a2b5eefd52db75b301ac684bc1b59cb1343135e5a510ec1327242339bf684", 
"objection_fee_satoshis_due": 1000000, 
"winner_privkey": null
}

作成したイベントの情報を取得

リクエスト実行

wget -qO- https://www.realitykeys.com/api/v1/exchange/1675?accept_terms_of_service=current

レスポンス

{
"fromcur": "XBT", 
"no_pubkey": "0298794002ba4b93fd51908a6ffa0ab9e695c80b1b5290924e60ddb8775d77096e", 
"settlement_date": "2015-02-10", 
"objection_period_secs": 604800, 
"human_resolution_scheduled_datetime": null, 
"evaluation_method": "ge", 
"objection_fee_satoshis_paid": 0, 
"machine_resolution_scheduled_datetime": "2015-02-10 00:00:00", 
"tocur": "USD", 
"created_datetime": "2015-01-31 07:58:35", 
"winner": null, 
"value": "1000", 
"id": 1675, 
"source": "exchange", 
"yes_pubkey": "029b7a2b5eefd52db75b301ac684bc1b59cb1343135e5a510ec1327242339bf684", 
"objection_fee_satoshis_due": 1000000, 
"winner_privkey": null
}

まとめ

Reality Keysは、Pay-to-Script-Hash(P2SH)をどのように利用しているか個人的に興味があります。Counterparty等の別のプラットフォームを利用せずに、純粋なBitcoinプラットフォームだけでスマートコントラクトが実現できるのは便利だと思います。

次回は、RKから受け取った公開鍵からP2SHトランザクションを作成するところについて書きます。

(補足)FreeBaseとは

FreeBaseはGoogleが公開しているさまざまな情報のデータベースです。Wikipediaとの違いは、単なる記事の羅列ではなく、データベースとして組織化〜構造化されており、人間とソフトウェアの両方から利用しやすい形式になっています。

FreeBaseを利用したサービスの事例が以下です。

参考

Reality Keys

約2600年間かけて文化や知識が世界中に広まっていった様子を可視化するとこうなる

Difference between Wikidata and Freebase?

Googleがセマンティック検索とFreebaseデータベースのMetawebを買収

Freebase API

Reality Keys: Bitcoin's Third-Party Guarantor for Contracts and Deals

第2回 ビットコイン・スタートアップピッチ

デジタル証明書とは