EOS開発者ダン・ラリマー氏の新プロジェクト「Clarion」の発表内容と仕組みについて
TL;DR
EOSの開発者で有名なダン・ラリマー氏は「Clarion」という新しいプロジェクトを発表
ブロックチェーンではない分散型SNSプラットフォーム
本文
EOSの開発者で有名なダン・ラリマー氏は、3月2日「Clarion」という新しいプロジェクトを自身のGitHubにて発表した。彼のこれまでの多くのプロジェクトと同様に、Clarionは分散型ネットワーキングに焦点を当て、人々が信頼できるまたは第三者に頼らずにコミュニケーションができる、つまり、"操作やサードパーティへの依存から自由なソーシャルネットワーク "を実現することが目標だという。 ラリマー氏は、複数の著名なブロックチェーンプロジェクトを作ったことで知られている。2013年には、法定通貨を暗号資産に交換可能なBitSharesを構築した。2016年には、分散型コンテンツネットワークであるSteemを設立したが、後にブロックチェーン戦争に見舞われ、Hiveへと進化した。そして2017年にはブロックチェーンプラットフォームEOSを作り、世界最大のICOで50億ドルを調達した。そして今、彼は新たなスタートを切っている。 https://gyazo.com/91a84f85f3ce16471b6189759f2d7a4a
ClarionはC++で開発されており、ブラウザ上に高速でプログラムできるWebAssemblyをベースとした「モバイルファースト&プログレッシブなWebアプリケーション」として開発を進めていく予定で、プロジェクトはまだ初期の設計段階で、最初のプロトタイプを構築するために開発者のチームを集めている。
ラリマー氏によると、Clarionは「様々なプロジェクトから学んだ」要素を取り入れており、EOS基盤のSNSであるVoice、Steemitの要素も取り入れているという。また、分散型SNSとして開発したVoiceやSteemitは「論理的に中央集権的」であり、すべてのトランザクションを処理するためにフルノードを必要としており、それによる課題が多かったと述べている。ということは、Clarionは別のブロックチェーンを構築するというよりは、基礎となるメッセージングプロトコルであり、InterPlanetary File System (IPFS)に似たものになるであろう。また、GitHubのコメント欄で新しいプラットフォームはその基盤にトークンを持たないが、既存のトークンシステムと統合できると述べている。 Clarionの焦点は、ブロックチェーンが一般的に機能する方法である価値の移動とは対照的に、情報を移動させることにある。その結果、すべてが正しい順序であることを確認することはそれほど重要ではない(例えばbitcoinの場合、二重支払いなどを防ぐために不可欠)。そのため、マイニングなど、ブロックチェーンが使用しているような複雑なコンセンサスメカニズムを必要としなくなる。これによってよりスケーラブルになり、典型的なブロックチェーンが持つ多くの制約から解放される。
一方で、このプロジェクトではブロックチェーンと同様に暗号技術を使用する。これは、各ユーザーが自分が誰であるかを識別するための秘密鍵のセットによって制御された独自の暗号化されたアイデンティティを持つことを意味する。これにより、悪質な行為者が簡単に人になりすますことを防ぐことができる(ツイッターのボットが日常的に行っているように)。暗号化されたアイデンティティをベースにClarionは下記のようなCore機能を提供すると述べている。
1. asynchronous person to person (like email)
2. realtime person to person (video/chat)
3. one to many (like tweet/Facebook)
4. many to many (like an open chatroom / blockchain )
アーキテクチャ
Clarionは、下記の理由からモバイルファースト&プログレッシブ・ウェブ・アプリケーション(PWA)として設計されている。
ソーシャルメディア上でのやりとりの大半がモバイルデバイス上で行われる
アプリストアが検閲できないようにする(そもそもアプリストアを必要としない)
また、IPFSなどのDHTは使用しないと述べている。その理由としては
コンテンツを継続的に再転送しなければならない
悪用を防ぐのは難しい
ユーザーノードが信頼できないソースからデータを保存/配布してしまう
ユーザー間のリソース使用量に非対称性がある
技術スタック
基本C++
wasm
スマホはPWA、デスクトップアプリケーションはElectron
ネットワークの維持やデータのやり取りにはWebSocket、QUIC、WebRTC(Data channel)などを検討中
データ分散に関する仕組み
登場人物
PWA提供サーバ
スマホ
ユーザ
Adam, Eve, Cain, Abel
緑色BOX
eden.com cain.com abel.com
PWAを提供するサーバ
cipepser.icon これは誰が運営するイメージです?
Users
PWAに登録されているユーザ
Identities
紫色BOX
Eveのスマホ
Users
eden.comに登録されている本人情報
Identies
いわゆる友達一覧
https://gyazo.com/39eb16e590bf9a7c3a33b9f610fc5277
前提
Eveはeden.com, cain.com, abel.comに登録されているユーザ
秘密鍵を生成して自分のプロファイルをPWA提供側に提出することでユニークなID発行され、ユーザとして登録される
EveはAdamとCain, Abelと友達
Eveが投稿したものはすべて、自分がユーザであるすべてのノードにアップロードされる
Adamが投稿したものはすべてEveにpushされる
CainがAdamをフォローしている場合、EveがAdamから受け取ったものはすべてCainに転送される
Eveがすべてのノードのユーザであることは誰もが知っている
CainはAdamをフォローしているためAdamのIdentityを知っているが、AdamはCainのノードのユーザではないため、Cainのノードと接続はできないノードへの接続できるのは登録されているユーザだけ)
課題
PWAの場合、データはブラウザのindexDBに保存されるため容量的に制限あり
たくさん活動する人をフォローすることによってCPUに限界がくる可能性あり