前回のブログ記事では、金融データのマーケットプレイスを活用することによって誰にでも暗号通貨ヘッジファンドを作ることを可能にするプラットフォームであるCatalystについて説明しました。そして、Catalystを超えた先にあるEnigmaの最も重要な目標についても説明しました。トークンセールの開催日である8月21日が近づきつつあるのに伴い、弊社のビジョンや技術について皆様によく知って頂けるようにもっと多くのブログ記事をリリースしたいと考えています。Mediumで弊社のアカウントをフォローして、情報を見逃さないようにして下さい。
前回ご説明したことを簡単に要約しますと、EnigmaではWeb用の分散型データマーケットプレイスを作るというビジョンに忠実であり続けています。Catalystやトークンセールとともに、弊社ではプロトコルの活用とその導入を促進するための最初のアプリケーションを作成しています(Catalystという名前はこのようなことに由来しています)。
この記事では、データマーケットプレイスとその内部機能についての(やや高レベルな)概略について説明致します。設計するにあたってどのような選択を行ってきたのかを示し、プロトコルを構築する際に必要となった主要なコンポーネントについて一通り説明します。これは、弊社の壮大なビジョンを説明する2部構成の投稿のうちの後編となります。
データマーケットプレイスの技術
Enigmaは高水準の分散型のデータマーケットプレイスを作ろうとしています。そこでは、人々、企業、組織がデータに貢献することができ(このような人たちのことをデータキュレーターと呼びます)、システムのユーザーはそのデータを購読したり消費したりすることができます。言い換えると、データマーケットプレイスは、データベースのネットワークへの単一のゲートウェイとして機能します。そしてそのデータベースは、コンテンツを供給するデータキュレータたちによって共同で所有されることになります。マーケットプレイスは分散化されており、いかなる単一の関係者によっても所有されることはありません。その代わり、データの登録や購読はオンチェーン上で管理されており、その中には報酬やペナルティも含まれています。そして、トークンを使ってデータの交換を行うことも可能です。
データそのものはオフチェーン上にあり、データの保管と転送もそこで行われることになります。その意味で、ブロックチェーンは(Enigmaのホワイトペーパーで示されているように)ネットワークのコントローラーとして機能しています。その一方で、オフチェンネットワークはそれ以外のすべてのことを処理しています。特に、ルーティングのリクエスト、承認の検証、クエリのパースとソース(例えば、データベースやCSVファイルなど)への転送、そしてリクエストを行ったクライアントに返すクエリ結果(クライアントの公開鍵で暗号化済み)のルーティングなどがオフチェーンコンポーネントによって処理されています。
上の図は、データマーケットプレイスがどのように機能するかについてより詳しく示したものです。詳細に入る前に、まずはこの図で概要を掴んでみてください。
新しいデータセットの登録は、新しいデータキュレーションスクリプトを投稿することによって開始されます。その後、このスクリプトによって、トランザクションがブロックチェーンに送信され、新しいデータセットが利用可能になったということがすべてのノードに通知されます。この新しいデータセットは永続的なアドレスを持っており、クライアントはオンチェーン上でそれを購読することができます。データセットの購読が行われると、クエリリクエストに署名が行われ、オフチェーンネットワークのピアにその署名がブロードキャストされます。その後、クライアントはアプリケーション内でそのデータを消費することができるようになります。
システム内の公平性は、主に経済的なインセンティブによって保証されます。つまり、良いデータセットにはより多くの購読者がつき、その結果データキュレーターにはより多くの金が支払われ、システム内でより上位にランクされるようになります。データソースには“購入前に試す”というオプションがあり、新しい購読者を呼び込むのに役立ちます。データセットが有益で無いと判断された場合、ほとんどの人々はそのデータセットの購読をやめることになり、その結果そのデータソースのランクは下がります。さらに、すぐにそれと分かるような違反(例えば、データキュレーターがオフラインになっているなど)に対しては、ペナルティが課せられます。
以下では、データマーケットプレイスの使い方の例を一通り説明します。その一方で、技術的に重要な側面についても目を向けていきます。話を単純にするために、すべてのノードはEnigmaノード であるという仮定に立っています。Enigmaノードとは完全なピアツーピアのノードであり、オンチェーンでの管理が行われるホストブロックチェーンだけでなく、データマーケットプレイスを作成するオフチェーンのEnigmaネットワークにも接続しています。当面の間の私たちの計画は、イーサリアムに弊社のネットワークを接続することです。本記事の執筆時点では、イーサリアムが最もセキュアなチェーンであり、弊社が必要とするスマートコントラクトの機能を提供してくれています。
登録
当然、データマーケットプレイスのプロセスにおける最初のステップは、データセットをマーケットプレイスにアップロードし、その登録を行うことです。内部的には少し複雑な手順であり、オンチェーンとオフチェーンの機能が混在しています。
1. データキュレーターは、オフチェーンのクライアントを通して、cronライクなジョブを投稿します。そのジョブには、データキュレーションスクリプトとどのくらいの頻度でジョブを実行するかの詳細(例えば、1分毎、1時間毎、1日毎など)が含まれています。これにより、データは常に最新の状態であることが保証されます。さらにクライアントは、データベースの名称、物理的な保管場所、ジョブを実行するノードといったのようないくつかのメタデータを指定する必要があります(詳細については後で説明します)。
2. 登録トランザクションはブロックチェーンに送信され、データキュレーターによって署名されます。トランザクションのペイロードには、データセットの名称、購読料(話を単純化するために月極購読と仮定し程ます)、データキュレーターが担保として設定した固定の手付金、キュレーターを支援するノード(例えば、計算リソースの提供やストレージリソースの提供など)の支払いアドレス、オフチェーン上に保管されるすべてのメタデータのハッシュなどが含まれる必要があります。
3. 新しいデータセットに関するすべてのメタデータは、署名済みのメッセージとしてEnigmaオフチェーンネットワーク内のすべてのノードにブロードキャストされます。そして、共有の分散型ハッシュテーブル(Distributed Hash Table, DHT)に保存されます。データの統合性とネットワークの頑健性を保証するために、PBFTとS/KademliaAll の修正版が使用される予定となっています。これにより、特定の規模(実装に依存しますが、ノード全体の1/3〜1/2の間くらい)で悪意のあるノードが結託したとしても、それに対する十分なソリューションを持つことになります。ビットコインでのように、データマイニングの報酬を得るためには、ノードはシステムに対して誠実でなければなりません。このような暗黙的なインセンティブがあるということを考えれば、このようなソリューションでも十分機能すると予測しています。
すべてのEnigmaノード(シンクライアントは含まず)は、Enigmaネットワークの一員でなければなりません。つまり、ホストブロックチェーンとオフチェンネットワークの両方に接続されている必要があります。その一方で、Enigmaノードが提供できる他の(オプショナルな)役割が2つあります。1つ目の役割は、ワーカーノードとして機能することであり、データを収集するためのcronジョブを実行します。2つ目の役割は、データのストレージおよびクエリエンジンとしての機能を提供することです。このようなノードは、永続かノード(Persistence Node)と呼ばれています。
永続化ノードは、散在化し、モジュール化されるように意図して作られています。永続化ノードは、Enigmaネットワークから入ってくるデータクエリをパースし、従来型のデータベースエンジンやストレージユニットにルーティングを行うための単なるラッパーに過ぎません。手始めとして、私たちは単一の共通基盤となるデータベースのためのサポートを構築する予定です。ゆっくり時間をかけて、ネットワークの内側で稼働する完全に分散化されたデータベースを可能にしたいと考えています。
サブスクリプション
データセットの購読(または購読解除)は、完全にオンチェーン上で起こります。簡単に発見できるように、データソースはシンプルな指標に基づいてランク付けされます。
購読したいと思えるようなデータセットをユーザーが見つけると、購読に必要となる支払い情報とともに、データセット固有のパスを指定して、購読トランザクションが送信されます。このトランザクションは、毎月繰り返し実行されるように、クライアント内で自動化されます。実際、これはデフォルトの動作になる可能性があります。支払いが有効である場合、スマートコントラクトは署名者のアドレスを購読者リストに追加します。
消費
購読とは対照的に、消費は完全にオフチェーン上で発生します。特定のデータセットに対して問い合わせを行いたいユーザーは、リクエストとして例えば<curator_address>/coinbase_dataのようなメッセージをブロードキャストすることができます。オフチェーンネットワーク内のノードは、そのデータに対する直接的なアクセスを持つ永続化ノードに達するまで、そのメッセージを伝搬させます。その後、永続化ノードはリクエストをパースし、ユーザーがそのデータを購読しているということを検証します。ユーザーが適切なパーミッションを所有している場合、ノードはそのデータを取得し(可能性としては、ユーザのために解析したクエリーを発行した後に行われます)、ユーザーの公開鍵で暗号化し、目的地に達するまでネットワーク内にそのメッセージを伝搬します。
インセンティブ
マーケットプレイスの主要な原則は、データキュレーターが自らのデータの質と可用性に対して責任を負っているということです。これにより、インセンティブの仕組みが大幅に簡素化され、システム内のユーザーがより良いサービスを楽しむことが保証されます。前述したように、データキュレーターは彼らが共有しているデータセットに対してトークンを提供する必要があります。データがオフラインになったり、破損してしまったりした場合(この問題に関しては、本記事の範囲を超えているため割愛します)、彼らのデポジットから支払いを行う必要があります。そのような不誠実な行いは、データの購読者の数を減らす可能性があり、さらにはデータキュレーターの報酬を減らすことにもなります。キュレーターが自らの効用を最大限にすることを望む理性的なエージェントであるという前提のもと、彼らにとってのベストな戦略が質の高いデータを提供し、その可用性を保証することであることが保証されます。
ワーカーや永続化ノードとして機能するローカルノードを介してデータキュレーターがデータの構築と提供を行うことができる一方で、このような作業を他のノードに委託したいと考えるかもしれません。そうすることで、新しいデータセットの登録後でもデータキュレーターはオフラインになることができます。ワーカーノードと永続化ノードは、登録トランザクション内で追加の支払いアドレス(データキュレーターはいつでも更新することが可能です)として指定されます。これにより、これらのノードが良い働きをすることに対してインセンティブが与えられることが保証されます。キュレーターがすべての報酬を独占したい場合は、自らのノードをワーカー/永続的アドレスとして指定することができます。
データプライバシー
場合によっては、システム内で販売されるデータは、例え使用時であったとしても機密性が保持されている必要があるかもしれません。Enigmaでは、暗号化データに対するコンピューティングに関して多くの研究を行っており、そこから得たアイデアを徐々にプロトコルに導入していこうとしています。
まずは、比較的高速な決定論的かつ順序保存的な暗号化メカニズムを導入する予定です。これにより、データキュレーターがデータソース上で暗号化を行うことが可能となります。これは実用面ではかなり良いトレードオフを提供することになり、適切なセキュリティの保証を提供します。ただし、順応性の選択平文攻撃(Chosen-plaintext Attack)を区別することができないため、完全ではありません。後ほど、完全なセキュリティを提供するより複雑なアイデアを段階的に導入する予定です。より詳しく知りたい方は、ホワイトペーパーをご参照ください。
未解決問題
考え続けなければならない未解決の問題がまだたくさん残っています。このような問題の解決を進展させる手助けをしてくださる方を歓迎いたします。その中の問題のいくつかは、私たちが(遠い)将来に取り組むであろうものです。その他にも、興味深く、私たちに関連性があり、知力を要するような問題がたくさんあります。
- オフチェーンのコンセンサス— ブロックチェーンは長い検証スクリプトを実行するのにはまだ十分スケーラブルではありません。例えば、データセットを検証するスクリプトが特定の検証ルールを守っているかなどと行った問題があります。そのような問題に対しては、ある種の弱いコンセンサスモデルや定数アプローチのようなものが適用できるかもしれません。
- 委託されたノードの信頼性を下げるための報酬/ペナルティモデル
- データ漏えいの防止 — SGXを介してEnigmaネットワークに接続したりクエリを処理したりするクライアントの開発。これにより、永続化ノードによるデータの漏えいを防止することが可能となります。
- より新しく、よりセキュアなBFTコンセンサスとルーティングプロトコロルに基づいて、オフチェーンレイヤーの頑健性とセキュリティを向上させる。
この記事が、持続可能な分散型データマーケットプレイスを作るという私たちの長期的なビジョンについて詳しく説明するのに役立てば幸いです。コミュニティによってキュレートされ、オフチェーンネットワークによって運用され、ブロックチェーンを通して促進されるもの。それこそが私たちの作ろうとしているデータマーケットプレイスなのです。なぜ私たちがWeb用のデータマーケットプレイスを作ろうとしているのかをまだよく理解できておらず、もっとよく知りたいと考えているならば、ぜひこの記事の前半パートをご覧になってみて下さい。
ご不明な点などがございましたら、ぜひSlackやTelegramのコミュニティにご参加ください。データと暗号通貨への投資という未来に対する私たちのビジョンを達成するために皆さんと協力できることを楽しみにしています!