皆さま、こんにちは。今回はブロックチェーン技術の可能性のひとつ、”非中央集権”という部分に焦点を当てて海外の記事をご紹介いたします。今回は非中央集権型のインデックスを開発しているThe Graphに関する記事の日本語翻訳版をご案内いたします。
記事を執筆されたMONDAY CAPITALさんの許可を得て翻訳しております。
元記事はこちらです。
Decentralized index for faster dApps: The Graph
私達がどのように興味深いプロジェクトを見分けているのか、沢山の友人から質問されます。そこで今回は、実際に精査した/投資を行ったケースを例に、デューデリジェンスをどのようにしているのか簡単に共有できればと思います。この記事が健全な投資エコシステムの醸成に少しでも寄与できれば幸いです。
数日前、The Graphというチームと大変内容の深いミーテイングをすることができました。The Graphはブロックチェーンに保存したデータを利用した、非中央集権型インデックスを作るためのインフラを作っているチームです。
ミーテイングをする前、私たちは彼らに対してかなり懐疑的でした。何故非中央集権型インデックスが必要なのか。どのくらいの速さでインデックスが動作するのか。どのように普及していくのか。—誰が何故利用するのか。
私達はエンジニアですので、製品の問題点が直ぐに浮き上がって見えます。しかし、直接チームの方々と話すとそれがクリアになりました。
まず、どんなプロジェクトかご紹介する前に、インデックスとは何かを説明したいと思います。
インデックスとは?
データベースとファイルシステムはデータがどのように保存、整理されるか定義します。インデックスとはデータの電話帳のようなもので、どのように検索するのが最適なのか割り出してくれます。
各インデックスがストレージデバイス上の全てのファイル(もしくはデータ構造)の所在地を割り出すカタログだと想像してみて下さい。名前、拡張子、ファイルの種類、内容等で物事を整理することができます。
違う方法で何かを整理したときには、新しいインデックスが作られます。
インデックスは実際に何をしてくれるのか?
回答: 重要度に応じて、データを取得する速度を早めてくれます。
もう少し詳しく説明します。
データベースの典型的な例は冷蔵庫、そしてインデックスとは私達の日常生活
冷蔵庫を想像してみて下さい。冷蔵庫はストレージレイヤーの例えです。冷蔵庫にモノを保管する方法は、欲しいものを取り出すために効率的にすることもできます。例えば、最も取り出す機会が多いものは手前において、あまり使わないものは奥にしまっておけばいいでしょう。
データベース(例えばBluzelle)はこのように動いています。あなたの都合に合わせてデータを整理することができるのです。あなたの友達がミルクが欲しいと頼んできたとします。このコマンドは“the query.”と呼ばれており、どのデータを取得するか指示するものです。もし、ミルクがどこにあるのかわからなかったとして、ミルクを探すために全てのモノを一回出さなければならないとしましょう。
ここで、インデックスが活躍します。冷蔵庫の見取り図があれば、何がどこにあったか記憶していなくても比較的直ぐに取り出せますよね?これがインデックスの役割なのです。
左はサーバーにあるデータの様子。そして右はデータベースにあるデータがインデックスで整理された様子。
ブロックチェーンデータにおいて、インデックスがどうして必要なのか?
単純に、よりサクサクと動くDappsを開発できる環境に他の手段がないからです。Ethereumではチェーンからデータを取得するのに10秒かかります。車輪を回すのに10秒かかるなんて考えたくないですよね。中央集権的なプラットフォームでは10ミリ秒で行われています。
何故非中央集権型のインデックスが必要で中央集権的なものを使わないのか?
ここが最も興味深い点です。中央集権的なプラットフォームでは、誰かがインデックスを変更して、間違えた方向を指示して異なるファイルまで誘導するかもしれません。顧客の口座残高を調べようとしているとします。インデックスにそれを指示します。中央集権のこのインデックスは、あなたを思いの方向に誘導できてしまいます。現在の残高確認をしたいのに、違う日の残高を表示する恐れもあります。
分散型インデックスは、インデックスのコピーを持つネットワークのノードを利用することで、この課題を解決します。トラストレスで管理でき、他のブロックチェーン同様に動作します。
何か問題が生じてノードの1つが壊れた場合、その他のノードを使ってインデックスの100%アップタイムを達成します。
The Graphはどのように動作するのか?
The graphは非中央集権型インデックスで、ブロックチェーン間を超えて動作します。(例えばEth, Btcの複数のブロックチェーンだけでなく、IPFSやFilecoinのデータををインデックスすることができます。)ブロックチェーン上の新しいデータを取得するたびにインデックスを更新します。インデックスが更新されると、ノード間で同意を得るように動作します。同意が獲得できるとインデックスのユーザーは最新のデータが利用可能となります。
私たちはより早いブロックチェーンが出てきた時、インデックスの更新中にボトルネックが生じるのではないかと危惧していました。Ethereum上では新しいブロックが平均10秒毎に生成されます。The Graphは現在1秒ごとにインデックスを更新します。
一般的に取得するデータよりもインデックスの更新は早いのですが、もし10以上もの異なるチェーンがそれぞれデータを1秒毎取り入れていたとしたら、どうなるのでしょうか。充分な更新速度と全てのユーザーが最新の状態を得られるような同意を得ることができるのでしょうか。
ミーテイングにおいて、上記のスケーラビリティの解決策をチームは説明してくれました。そして彼らの目標が、特定のデザインにロックする前に異なるトポロジーをプロトタイプで実験をすることだと説明してくれました。
Query言語については、The GraphはGraphQLを利用しています。Facebookで開発され、比較的容易に多くの開発者にとって親しみのあるものです。
仕組みはこうです。
アプリがqueryを実行すると、the graphはインデックスをもつqueryノードへと(ゲートウェイノードを利用して)ルートを作ります。queryノードはゲートウェイノード、開発者に結果を戻します。
トークンはネットワークを安全に統治するため、そして参加者の動機づけをするために用いられます。端的にいうとネットワークはquery nodesが核となって設計されています。 そしてネットワークにおいてトークンは、取引における媒介、もしくはステークとして利用されます (詳細は別の記事で)。
私達が予見している更なる挑戦は、ネットワークのガバナンスです。ノードは誰が決定するのか?変更は誰が決定してデプロイするのか?そしてどのように適合されるのか?チームは依然として取り組んでいますが、彼らが分散型な方法でネットワークを管理するオープンソースコミュニティを目指す姿勢は大変好感が持てます。
プロジェクトの詳細はこちら
https://medium.com/graphprotocol
Art by Peter Judson
いかがだったでしょうか。ブロックチェーンの特徴でもある非中央集権的なコンセプトが何かを考えるのにもわかりやすい記事だったと思います。記事を書いていただいているマンデーキャピタルさんはブロックラビットの活動にもご協力いただいております。ブロックラビットやマンデーキャピタルさんにご質問などありましたら、いつでもブロックラビットのテレグラムチャンネルでご連絡ください!
ブロックラビットのテレグラムチャンネル
Comments are closed