Ethereumネットワークでは、仮想通貨そのものの取引量が増加したことに加え、分散型アプリケーションやICOが注目を集めたこともあいまって、2017年後半から処理能力の課題が浮き彫りになりました。本記事ではEthereumネットワークの処理能力向上を目指して議論が進められている「シャーディング」について解説します。
シャーディング導入計画のこれまで
Bitcoinに次ぐ時価総額をほこり、スマートコントラクトを動かせるプラットフォームとして常に注目を集め続けるEthereumについては以前本ブログでも解説しました。
分散アプリケーションプラットフォームを目指すブロックチェーンEthereum(イーサリアム)
2017年後半から2018年年初にかけての仮想通貨に盛り上がりにおいては、Ethereumも他の仮想通貨同様注目を浴び、ICOブームや、Crypto Kittiesをはじめとする分散型アプリケーションが注目を集めたときに、大量のトランザクションが集中し、Ethereumのネットワークに大きな負荷をかけました。
Ethereumが1秒間に処理できるトランザクション数は7-15トランザクションです。よく引き合いに出されることの多いVISAの処理能力が最大秒間56,000トランザクションであることと比べると、大きな差があります。通常時ならまだしもネットワークに負荷がかかれば処理の遅さに批判が出るのも無理はありません。
ブロックチェーンの処理能力については既知の課題で、Ethereumの考案者Vitalik Buterin氏が書いた2015年のEthereumブログの記事「Vitalik’s Research and Ecosystem Update」ではすでにシャーディングによるスケーラビリティー向上にふれています。その後数年間、長期間に渡って議論や研究が進められ、2018年4月にVitalikがシャーディングのプルーフ・オブ・コンセプトを示しました。
シャーディングという単語は、破片を意味する英単語シャード(shard)に由来します。データベース分野では古くから使われてきた単語で、データを複数のデータベースに分散配置して、データベースの負荷を分散することを意味します。
これまですべての検証ノードがすべてのトランザクションの処理に関与していました。これをEthereumでのシャーディングでは、検証ノードを「シャード」と呼ばれるグループに分け、グループごとのシャードチェーンで分担してトランザクションと関連するステートの処理を行うことを意味します。
シャーディングのプルーフ・オブ・コンセプトが示されて間もない2018年夏、シャーディングとは別に計画が進行していたCasperと呼ばれるPoSへの移行を一緒に進めた方がよいのではないかという意見が出てきました。当初はシャードの管理は現行のPoWブロックチェーンのスマートコントラクトとして実現し、合意形成アルゴリズムについては段階的に移行する計画でしたが、現在のEthereum Metropolisの次のバージョンのSerenityでは一気にPoSに移行し、新しいブロックチェーンでシャーディングを導入することになりました。一連の計画はEVMの改良なども含みEthereum2.0とも呼ばれています。
シャーディングの導入が検討されて来た経緯とその概要を把握したところで、続いてシャーディングについて、現行のEthereumを大改造するEthereum2.0の構想と合わせて見てみましょう。
Ethereum 2.0の中のシャーディング
Ethereum 2.0ではシャーディングとCasperのほかにもさまざまな改善が計画されていますが、このふたつが密接に関わり、Ethereumのブロックチェーンの構造が大きく変更されます。
Vitalikはシャーディングを発表したTweetから始まる一連のやりとりで、シャーディングについて読むべき資料を尋ねられると「It is still scattered in parts」(まだ部分的な資料が散らばっている状態)とし、発表から半年たった2018年11月現在でもまだ資料は散在している状態で、本家の資料にあたりたいという方はGitHubにあるシャーディングに関する資料のリストを参照するとよいでしょう。
Sharding introduction R&D compendium · ethereum/wiki Wiki – GitHub
特にこの資料のリストの「Ethereum 2.0 spec—Casper and sharding」というタイトルの文書には、PoSへの移行とシャーディングに関する最新の仕様が詳細に記述されています。
eth2.0-specs/beacon-chain.md at master · ethereum/eth2.0-specs – GitHub
ここでEthereum 2.0でブロックチェーンがどのように変化するか全体像を見てみましょう。Ethereum ResearchのHsiao-Wei Wang氏のプレゼンテーションWhat you can do for Ethereum 2.0 a.k.a. shardingのシャーディングのコンセプトを示した図に最新の計画を書き入れました。
画像:Ethereum 2.0のブロックチェーン(What you can do for Ethereum 2.0 a.k.a. sharding、17ページより)
Ethereum 2.0のブロックチェーンはビーコンチェーン(Beacon Chain)を中心にシャードチェーン(Shard Chain)を含む無数のブロックチェーンの集合と見ることができます。現行の一本のブロックチェーンだけからの構造から大きく変わります。現行のPoWのブロックチェーンとPoSのビーコンチェーンはリンクされ、いきなり旧ブロックチェーンが廃止されてしまうということはないようです。
Ethereum 2.0では合意形成アルゴリズムとしてPoSが想定されていることから、トランザクションを処理する検証ノードはステークとして32ETH(2018年11月現在、約71万円)をデポジットし、検証ノードのプールに加わります。脆弱なシャードができないように検証ノードは定期的にシャッフルされランダムなシャードに割り振られます。
個々のシャードでは独自のブロックチェーンであるシャードチェーンが進行します。ビーコンチェーンに対してブロックを提案し、Committeeとよばれる検証ノードの委員会の承認を経て、ビーコンチェーンに取り込まれます。ビーコンチェーンの情報も定期的にシャードチェーンに伝搬されます。メインチェーンとシャードの同期については、Butelin氏による解説Cross-links between main chain and shardsで概要が説明されています。
Cross-links between main chain and shards – Sharding – Ethereum Research
前出の資料Ethereum 2.0 spec—Casper and shardingdの末尾には「仕様の約60%が完成」とあり、これからも継続して議論がすすむことになりますが、シャーディングとは、階層化によるノードごとの役割分担と、サイドチェーンによる並列処理でネットワークの処理能力の向上させる技術と言えます。
シャーディングの課題
Ethereumの処理能力を劇的に向上させる可能性のあるシャーディングですが、課題も指摘されています。
Bitcoin誕生の背景を振り返ると、ネットワークが特定の組織や個人に支配されない「非中央集権的であること」は、Ethereumや他の多くの仮想通貨やブロックチェーン、分散型アプリケーションのためのプラットフォームにとっても非常に重要です。
EthereumにPoSとシャーディングが導入されると、ネットワークの中央集権化が加速するのではないかという指摘もあります。
- Sharding centralizes Ethereum by selling you Scaling-In disguised as Scaling-Out
- イーサリアムの「中央集権化」はShardingが加速させる | ビットコインの最新情報 BTCN|ビットコインニュース
シャーディングの今後
シャーディングのロードマップはGitHub上で公開されています。
Sharding roadmap · ethereum/wiki Wiki – GitHub
PoSのためのビーコンチェーンの導入からはじまり、最下層のステートを扱うEVMをのぞいたシャーディングの導入、EVMも含むシャーディングの導入とシャーディングの導入が進んでいくようです。公式に発表されたタイムラインではありませんが、Ethereumについては、Casperのリリースが2019年、続いてシャーディングが2020年から2021年にかけて導入されていくだろうという見方が多いようです。
シャーディングと合わせてPoSの導入が進み、今後数年かけてSerenityでEthereumが真のWorld Computerとなるのか注目したいところです。