進化のガバナンスとレイヤー構造
先日*1大学の授業のTAをしてGinocoの森川さんの話を聞く機会があった。その時に以下のレイヤー構造を見せられたのだが、なんだか違和感があったその原因が最近つかめてきたのでその話。
ブロックチェーンとはなんだろうか
という定義をまずはっきりさせないといけない。自分としては少なくとも
- ハッシュのチェーン構造を持ったブロックというデータ構造
- そのブロックのフォークを解決するための分散コンセンサスプロトコル
というものが、ブロックチェーンを構成する要素だと思っている*2。
なので森川さんの言うLayer 1.0まで、ということになるだろうか。ブロックの中にトランザクションとして何が入るか、というのはブロックチェーンを用いたどんなアプリケーションを構築するか、に依存する。Bitcoinでは通貨の所有権利の移転だし、Ethereumであればアプリケーション(DApps)だ。
一番違和感を感じるところ
機能拡張・汎用性向上領域、というところに一番違和感を感じた。これはおそらくEthereumをベースに考案されたレイヤー構造であることに原因がある気がする。
EthereumではProof-of-Stakeや、スループット向上のための分散処理ShardingをEthereum上のコントラクトとして実装を進めている。ちょっと待ってくれ、ブロックチェーン上でアプリケーションを実装できるプラットフォームのアップデートをそのプラットフォーム上で動くアプロケーションとして実装する、というのはなんだが倒錯しているような気がする。セルフホスティングみたいな文脈としてはあるのかもしれない。
ここで森川さんはそうした状況を受けてか、こう述べている。
Layer1.0〜1.5の階層で定義された基幹システムを大きく変えてしまっては、別のシステム体系になってしまいます。2017年に起きたビットコインのハードフォークも、スケーラビリティ問題をLayer1.0まで遡ってブロックサイズを変更することで発生したものです。
ここが一番の問題だ。Ethereumもまだまだ実験的なシステムであり、その下層のプロトコルは完全に決められたものではない。そこでハードフォークを起こしてアップデートするのが問題だ、というのは、Ethereumなどの既存のブロックチェーン上でアプリケーションを作ろうとする人の意見だなぁ、と思う。
進化のガバナンス
ブロックチェーンは、ネットワーク全体で同期していることを前提として動作する。 つまり、全世界が同じルールに則っていることを前提としているため、一部で新たなプロトコル、データ構造の変更などを行うと、ブロックチェーンのハードフォークをおこなさなければならない、という状況に陥る。このブロックチェーンの課題が自分が感じた違和感の根本原因であるということに最近気づいた。
ブロックチェーンをレイヤー構造化し、整理を行おうという試みはいくつかある。だが、未だブロックチェーンは黎明期で、根本的に成し遂げようとしていることも成し遂げられていないのではないか、ということは前回の記事で言及した。BitcoinやEthereumは現状そこそこのサイズへネットワークがスケールしたため運用されているものの、実験システムの域は出ることはない。そこで、現状の下層を壊しに行き、アップデートを試みなければ、いつまでも下層のパフォーマンスに引きずられ実用への道は遠いのではないだろうか。
自分はブロックチェーン技術自体のアップデートを志向して研究をしているが、森川さんはおそらくその上に乗るアプリケーションを志向している。そうなると現状の(Ethereum)の整理としては非常によくまとまっているとは思うのだが、そこはなぜそのレイヤーで基盤の部分のテコ入れをやるのか、というのがしっくりこなくなる。どちらが正義、ということではなくて、どちらもこの技術のアップデートには必要なものだと思う。勝手ながら、同い年であることもあり、お互い頑張ろう、という気分にさせてくれた気づきだった。