DFINITYとは
DFINITYは、ブロックチェーンを使って分散型のクラウドコンピューティングプラットフォームを提供しようというプロジェクトです。
DFINITY Foundation | Internet Computer
DFINITY上では、現在私たちが利用しているようなウェブサイトやウェブサービス、API、企業・業界システム、昨今注目を集めるDeFiサービス(分散型金融サービス)などありとあらゆるインターネットサービスが稼働することが想定されています。
DFINITYは、提供するクラウドコンピューティングプラットフォームを、安全で止められない「インターネットコンピュータ」(Internet Computer)と表現しています。初めて聞くと、直観的にイメージしにくいですが、分散型のAWS(Amazon Web Services)とそのプロトコルと考えるとわかりやすいでしょう。AWSもサーバーは世界中に分散していますが、オペレーターはAmazonという一企業です。DFINITYでは世界中の独立したデータセンターを横断的にICP(Inter Computer Protocol)というプロトコルで一つのコンピュータ、インターネットコンピュータに見たてて扱います。
画像: DFINITYのインターネットコンピュータの概要(資料Internet Computer for Entrepreneursより)
分散型のアプリケーション実行環境という点で、DFINITYはEthereumと似ていると感じた人もいるかもしれません。DFINITYは改竄不可能で止められないという分散型のアプリケーション実行環境の利点は強調しつつも、あくまでサービス運用者がデプロイからアプリケーションの運用まで事業に利用しやすく、かつエンドユーザーがトークンやウォレットを使うといったハードルのない、分散型の使いやすいクラウドコンピューティングプラットフォームを提供することに重きを置いているようです。
DFINITYを統括するのは2016年に設立されたスイスの非営利団体DFINITY Foundationで、DFINITYの研究センターはスイスのチューリッヒ、アメリカのサンフランシスコとパロアルトにあります。DFINITYは2017年から2018年にかけて、ICOや、ブロックチェーン・仮想通貨関連の企業への投資で名前が挙がることの多いAndreessen Horowitzといったベンチャーキャピタルから170億円近くの資金を調達しました。2018年にはユーザーあたり最低$100相当のDFNトークン(現ICPトークン)を配布する巨額のエアドロップが実施されました。2020年には外部の開発者に向けてDFINITYのプラットフォームが解放されました。
続いてDFINITYでブロックチェーンがどのように使われているのか見ていきましょう。
DFINITYとブロックチェーン
DFINITYでプログラムを動かすには、キャニスターと呼ばれるコードと状態を持つひとまとまりのソフトウェアとしてDFINITYのネットワークにデプロイします。キャニスターは異なるデータセンターのノードからなるサブネットでホストされます。
画像: DFINITYのネットワークの階層(DFINITYのブログ記事より)
ネットワーク全体の管理はNetwork Nervous System(NNS)というマスターブロックチェーンが行っています。NNSはノードを監視し、サブネットやノードの追加でネットワークを拡張するかといった提案を投票にかけます。投票にはDFINITYのトークンICPをロックしたユーザーが参加します。また、NNSはDFINITYプラットフォームのユーティリティトークンICPを発行し、データセンターや投票の参加者に対して配布します。個々のキャニスターはサブネットと呼ばれるブロックチェーン上で実行されます。サブネットに割り当てられたノード同士は、ICP(Internet Computer Protocol)で連携し、アプリケーションを実行します。
画像: サブネットとキャニスターの関係(DFINITYのブログ記事より)
DFINITYのネットワークにはCycleとICPというふたつのトークンが存在します。Cycleはサービス運用者がキャニスターを稼働し、ノードのCPUやメモリ、ストレージといったリソースを使用する対価を支払う際に使われます。Ethereumの手数料(ガス代)にあたるものですが、ユーザーが支払うのではなく、従来のウェブアプリケーションのようにアプリケーションの運用者が支払います。一方、ICPはCycleと交換することができ、また、前述のようにネットワークにロックすることでガバナンストークンのように利用することもできます。
ブロックチェーンに関する詳細について触れた文書は公開されていませんが、DFINITYの概要、技術的な詳細については、DFINITYが公開している資料「Internet Computer for Entrepreneurs」(サービス運用者のためのインターネットコンピュータ)と技術概要を説明したブログ記事が参考になります。
- Internet Computer for Entrepreneurs
- A Technical Overview of the Internet Computer | DFINITY | The Internet Computer Review
DFINITYを使ったアプリケーション
DFINITY上を使えばどのようなアプリケーションでも運用できるといいますが、具体的にはどんなことができるのでしょうか。ここではDFINITYが開発したデモアプリやTungsten DemoDayで発表された外部開発者によるアプリケーションを見てみましょう。
DFINITYは2020年1月にLinkedInの分散型バージョンLinkedUp、6月にはTikTokの分散型バージョンCanCanのデモを発表しました。ブラウザから見ただけではわかりませんが、これらは分散型環境で現実的な時間で実行されているようです。LinkedUpのソースコードはDFINITYのGitHubのリポジトリで公開されています。CanCanのソースコードは公開されていませんが、1000行未満のシンプルなコードで書かれているといいます。
- Dfinity launches an open-source platform aimed at the social networking giants – TechCrunch
- TikTok, but Decentralized: Dfinity Launches ‘CanCan’ – CoinDesk
画像: Facebookで公開されたCanCanのデモビデオのスクリーンショット
Tungstenのリリース後にはTungsten DemoDayが開催され、10のプロジェクトが招待されました。DFINITYはブログの記事でこれらのプロジェクトを紹介しています。DFINITY NNSエクスプローラなどDFINITYに関するサービスのほか、分散型取引所、音楽制作ツール、政治に関するサービス、匿名データマーケットプレイス、企業ポイント発行・取引プラットフォーム、オープンサイエンスプラットフォームなどさまざまなプロジェクトが発表されました。
DFINITYの課題と今後
ブロックチェーンベースのアプリケーションを使ったことがある、開発したことがある人であれば、現行のウェブサービスのスピードでアプリケーションが動くことに驚くことでしょう。
DFINITY上ではアプリケーションのフロントエンドもホストできるため、フロントエンドが中央集権的なウェブサーバーに依存してしまうということもありません。開発者は、dfxというコマンドラインツールでアプリケーションの骨組みを作り、開発環境でコーディングし、dfxでネットワークに送信、ネットワーク上でビルド・デプロイするというシンプルなステップでアプリケーションを公開できます。興味がある人はDFINITYのクイックスタートチュートリアルを見てみるとよいでしょう。
アプリケーションの実行コストは運用者が支払うため、Ethereumベースのアプリケーションのように、利用者が「トークンとは」「ウォレットとは」といったブロックチェーンの慣れない概念を意識する必要がありません。
DFINITYにはメリットが多いように見えますが、これらは「本当に分散化されていれば」という条件付きです。DFINITYはデータセンターの参加を随時呼びかけ、ネットワークに参加するデータセンターを増やしていく計画ですが、参加データセンターの詳細は明かされていません。また、2021年1月現在、マスターブロックチェーンやサブネットのブロックチェーン、プロトコルといったプラットフォームの要となるソフトウェアのソースコードがオープンでない点も、オープンソースのプラットフォームに比べ透明性を欠いていると見ることができます。
2021年年初に公開されたDFINITYのブログ記事によると、2021年第一四半期にインターネットコンピュータの一般公開の最終ステップであるMercuryがリリースされます。さらに並行して、資金調達や課題の解決、数百人規模のユーザーに対応するためのスケーリングが行われます。
おわりに
本記事ではブロックチェーンを使ってクラウドコンピューティングプラットフォームの実現を目指すDFINITYについて解説しました。ブロックチェーンが各業界に浸透する中で、従来のクラウドコンピューティングプラットフォームの開発・運用のしやすさを引き継ぎ、ユーザーの利便性も重視しながら、さらに分散化を実現しようとするDFINITYはEthereumに続く新たなる分散型アプリケーションプラットフォームの標準となるのでしょうか。2021年に完全なバージョンとして公開されるDFINITYの動向、分散度合いや透明性の向上に注目したいところです。