昨日このような記事をquvoxさんが書かれました。これを参考にしてBBc-1のコアノードを運営するモチベーションがどこに存在するかを考えてみました。
前提
- BBc1_design_document_v1.0_ja.pdfを読んでBBc-1が何かをなんとなく理解した人向け
この記事の狙い
- 「BBc-1のコアノードって運営するメリットあんの?」という素朴な疑問を解決したい
コアとは
こちらによるとコア機能の役割は以下のように定義されています。
- ユーザ(appプロセス)間のメッセージング機能の提供
- トランザクション/アセットの登録、検索機能の提供
- トランザクションの署名検証
私のようなズブの素人でもわかるように具体例でそれぞれを解釈してみようと思います。
とりあえず、以降はデジタル通貨のやり取りを例に考えてみます。
デジタル通貨のやり取りを例に考えてみると
ここでの登場人物は以下とします。
- アプリ利用者(通貨の利用者)
- アリス
- ボブ
- アプリ運営者(通貨の発行元)
- チャーリー
- コア運営者
- デイブ
構図的にはこんな感じでしょうか。デイブのコア一つで通貨アプリを支えるというなんとも頼りない構成ですがそこは目をつむってやってください・・・。
「ユーザ(appプロセス)間のメッセージング機能の提供」とは
メッセージング機能によって、トランザクションデータを当事者全員に通知します。これによって承認(署名付与)が可能になります。
BBc-1はで重要な**「合意」**という概念によってあるドメイン(ここではデジタル通貨)の中で発生する取引を関係者間で承認し合う、みたいな考えがあります。(詳しくはこちら)ここではアリスとボブの間で発生するお金のやり取りを発行元のチャーリーが都度承認することがコアによって可能になるということです。「そもそも承認をいちいちする必要あんの?」って思う人はこちらを読んでください。
「トランザクション/アセットの登録、検索機能の提供」とは
トランザクションやアセットの検索機能を提供することで、appプロセスが過去のトランザクションを参照して、新規のトランザクションを承認するかどうかを判断できるようになります。
デジタル通貨はその性質によりコピーできることが問題です。なので当然ですが取引に使われたデジタル通貨は過去に使われてないか(俗に言う二重支払い)確認するためにその履歴を追跡できなければなりません。ビットコインなどのいわゆる「ブロックチェーン」では取引記録を束にした台帳の連鎖を、BBc-1では取引記録の連鎖を生成する機構(Relation部の説明を参照のこと)が存在します。それらの連鎖(参照関係と言う方が適切でしょうか)を使って過去にさかのぼることをコアが実現するのです。
「トランザクションの署名検証」とは
トランザクションの検証についても、中身そのものを解釈するのではなく、付加されている署名が有効かどうかをチェックするのみです。
そして検索機能を使って該当する取引(ここではデジタル通貨)を探し当てるとそれらに付与されている署名が正しいものかを検証して先ほど述べた二重支払いを発見することができるようになります。
トランザクションの中身が本当に正しい(正当なもの)かどうかは、トランザクション登録の前に当事者間で合意していれば、そこにcoreプロセスが踏み込む必要性がないためです。
上記で言われているように中身の正当性を検証することはしないことに注意しておいてください。
まとめると
- コアノードを運営することでアプリ運営者はコアノードの機能を使って以下のことができるようになる
- 取引の検知
- 取引の検索
- 取引の署名検証
- デジタル通貨の取引ではコアノードの運営は2重支払いの検知に貢献できる
最後に
- 「これ違う」「これ勘違いされる」「こうしたほうが良い」などご意見お待ちしてます



