スケーラビリティ問題を解決する次世代ブロックチェーン「Zilliqa」|Gincoローンチイベント登壇PJ #2
この記事のポイント
- 4月25日(水)に開催されるGincoローンチイベントに登壇するプロジェクト「Zilliqa」を紹介します。
- ブロックチェーンの大きな課題である「スケーラビリティ問題」を解決する「Zilliqa」独自の手法に迫ります。
- 緻密な設計で作り上げられた「Sharding」の特徴を紹介します。
はじめに
4月25日(水)に開催されるGinco ローンチイベント「ブロックチェーンが実現する分散化された社会」に登壇するプロジェクトを、2回にわたって紹介します。
今回は、スケーラビリティ問題を独自のシステムで解決した新たなブロックチェーン「Zilliqa」を紹介します。
Ethereumとは異なるZilliqa独自の仕組みと、その可能性に迫ります。
Ethereumで広がったブロックチェーンの可能性
Satoshi NakamotoによるBitcoinの発明は大きなものでしたが、Ethereumの誕生もまたブロックチェーン業界における大きな転換点でした。
それまで、ブロックチェーンの活用シーンは限られたもので、Bitcoinを始めとした支払いアプリケーション、”仮想通貨”として利用されることがほとんどでした。
しかし、Vitalik氏をはじめとした開発者によって「スマートコントラクト」が実装できるEthereumが構築され、ブロックチェーンが通貨だけではなく、様々なシーンで利用される可能性が生まれました。
Ethereumはアプリケーションの実行環境、オープンソース化されたデータベースであり、誰でもEthereumネットワークを利用して開発を行うことができます。
スマートコントラクトを利用したアプリケーション(DApps)も多く開発されており、分散型のサービスがEthereumを基盤として構築される期待感が高まっています。
一方、Ethereumが普及するにつれて、大きな問題が立ちふさがるようになりました。
それが「スケーラビリティ問題」です。
これ以上のネットワーク拡大が危ぶまれる「スケーラビリティ問題」
現在のEthereumは、コンセンサスアルゴリズムにPoWを採用しているため、一定時間内に処理できるトランザクション数が限られています。
現状では1秒間に処理できるトランザクション数は約10〜15程度となっており、これは1秒間に8000以上のトランザクションを処理できるVisaなどの決済システムと比べると大きな差があります。
Ethereumを利用するユーザーが少ないうちはそこまで大きな問題ではありませんでしたが、近年になってトランザクション数は爆発的に増えてきています。
今後、Ethereumを利用したサービスが一般化していくと、処理しきれないトランザクションが渋滞をおこしてネットワーク全体が鈍化すると危惧されています。ブロックチェーンを利用したDAppsが普及すればするほど、そのブロックチェーンネットワーク全体の取引処理が遅くなります。
このようにブロックチェーンネットワークの拡大に対して、処理量を拡大させることが出来ない事態を「スケーラビリティ問題」と呼びます。
この問題に対する解決策はいくつかありますが、今回はその中でも「Sharding」という手法に注目します。
スケーラビリティ問題の解決策「Sharding」
Shardingという単語はもともと、データベース構造の文脈で用いられてきました。
そもそも、中央管理型のデータベースを維持することは簡単ではありません。大きくなればなるほどデータ処理にかかる時間は長くなってしまいますし、サーバーの容量にも限界があるからです。
このようなデータベースのスケーラビリティ問題に対処する手法が「Sharding」です。
Shardingは本来「分割する」「バラバラにする」といった意味があり、一つのサーバーで一つの大きなデータベースを管理するのではなく、複数のサーバーでデータベースを分割して管理する方法を指しています。
これをブロックチェーンに応用し、スケーラビリティを高めようとするアイデアが、EthereumやZilliqaで提案される「Sharding」です。
ブロックチェーン技術におけるShardingでは、いくつかのグループに分割されたノードが役割を分担し、検証作業を並列して処理するのが一般的です。
例えばですが、100のトランザクションが作成された場合、100のノードが検証を行うと、実行される計算処理は100×100にも及びます。
そこで、100のノードを5つで1グループ、全部で20のグループに分けるとどうなるでしょうか。
100のトランザクションはそれぞれのグループに5つずつ分配されます。このとき、各グループのノードは割り当てられた5つのトランザクションを処理するだけで済むようになります。
このように、ブロックチェーンネットワークに存在するノードを細かいグループに分けることで、膨大だった計算処理を少ない回数で済ませるようにするのが「Sharding」の基本概念です。
新たなブロックチェーンネットワーク「Zilliqa」
Zilliqaはシンガポール国立大学の研究者によって設立されたプロジェクトです。
Zilliqa運営チームは、ブロックチェーンの普及に際して、最も重要なのがスケーラビリティ問題だと考えています。
例えば、決済などの日常的な利用シーンを想定するならば、一定時間に処理できるトランザクション量を増やさなければなりません。
そこでZilliqaは、Shardingの手法を上手く活用して、Ethereumとは異なる独自のブロックチェーンを開発しました。もちろん、Ethereumと同様、スマートコントラクトも備えているので、Zilliqaネットワーク上でDAppsを開発することも可能です。
今回の記事では、次世代ブロックチェーンの「Zilliqa」が持つ、ハイレベルなShardingを取り上げていきます。
ZilliqaのShardingの特徴
ZilliqaのShardingで特徴的なのは、そのセキュリティの高さです。
処理能力を高めるShardingのアプローチは、各Shardで行われる不正への検証回数を減らしてしまうため、セキュリティとトレードオフになりがちです。このため、Shardを形成する際には、悪意のあるノードがもたらすリスクに対策を講じなければいけません。
Shardingでは、構成要素である各ノードがShard内のガバナンスを管理します。仮に、悪意のあるノードがShard内で過半数を占めた場合、ネットワーク全体に害をなそうとする可能性が生まれてしまいます。
ZilliqaのShardingではこういったことを回避するために工夫している点が2点あります。
ノードをShardへ割り振る際のランダム性
まず、1点目にネットワークに参加するノードをランダムに各Shardへ割り振っている点です。
各ノードはネットワークに参加する際、PoWによる計算競争を経て、ランダムなShardに所属することになります。
このため、複数のノードを参加させるためには膨大な計算処理を行わなければならず、たとえ複数ノードを参加させたとしても、ランダムでShardに配属されるので、特定のShardに悪意のあるノードが集中しにくくなっています。
Shardごとのノード数
次に特徴的な点は1つのShardごとのノード数です。
ZilliqaのShardingでは、1つのShardが600ものノードによって構成されています。これにより、Shard内で寡占状態を作るために必要なノードの数が多くなります。
ZilliqaのWhitepaperによれば、ZilliqaのShardの3分の1が悪意のノードで満たされることで、ネットワークの健全さが侵される可能性は0.000001%となっています。
このように、ZilliqaではShard内ガバナンスの脆弱性に対して対策を講じ、高いセキュリティを実現しています。
Zilliqaのコンセンサスアルゴリズム「BFT(Byzantine Fault Tolerance)」
BitcoinやEthereumでは、新たなブロックを生成する際に、ナカモトコンセンサスと呼ばれるコンセンサスアルゴリズムを用いています。
ナカモトコンセンサスとはPoWの一形態で、新しいブロックを提案するリーダーを選出し、リーダー以外のノードがそのブロックに賛否を示す仕組みです。
これは一見、民主的な手法に思われますが、リーダーはPoWをいち早く行ったノードが選出されるため、マシンパワーの強いノードばかりが選出されてしまいます。
リーダーはブロックを提案した見返りとして報酬を受け取ることができ、報酬も偏りが生まれてしまいます。それ以外にも、PoWによる報酬合戦が始まるので、膨大なマシンパワーが世界中で必要になります。
ZilliqaではBFT(Byzantine Fault Tolerance)というコンセンサスアルゴリズムを用いています。
BFTでは、ブロックを提案するPrimaryノードと呼ばれるリーダーを予め決めておきます。Primaryノードは、次のブロックを他のノードに提案し、他のノードからの賛否の返信を受け取ります。ここで賛成が多かった場合、新たなブロックの形成がされます。
この際、重要なのはこのブロック形成がその時点で決定性を持つ、ということです。PoWは確率的なコンセンサスアルゴリズムのため、トランザクションが決定性を持つには6つのブロック形成を待つ必要がありました。
しかし、BFTの場合はブロック形成時点で取引を確定させることが可能です。
このように、BFTをネットワーク内の合意形成に用いることで、ネットワーク全体が高効率で運営されるブロックチェーンを実現しています。
マルチシグの採用によるコミュニケーションの効率化
BFTを採用することによって、ネットワーク全体を効率化することができますが、代わりにコミュニケーションコストは大きくなってしまいます。
Primaryノードから、他のノード全てに通信を行わなければならず、受信したノードは返信を送らなければなりません。
一般的なBFTでは、MAC(Massage Authentication Code)という手法を用いて、やり取り一つ一つに暗号化されたタグを生成してメッセージの真正性を確認していました。
しかし、600ものノードで形成されるZilliqaのShardで、通常どおりこのコミュニケーションを行った場合、やりとりするメッセージの数は179,700にもなります。
このコミュニケーションを効率化するため、Zilliqaではシュノア署名という暗号技術を採用しています。
この技術を用いることで、各Shard内での合意形成および、全Shardによる合意形成がそれぞれ1回のマルチシグネチャーで実現します。
シュノア署名はBFTによる合意形成以外でも用いられ、ネットワーク全体の合意形成に至るまでに必要なコミュニケーションを、徹底して効率化しています。
Zilliqaテストネット「Red Prawn」について
Zilliqaは高い処理能力をShardingを中心とした以下の技術的特徴によって実現しています。
- Shardの選定法とサイズの拡大による高いセキュリティ
- BFTによる効果的なコンセンサスの形成
- シュノア署名を用いることによる高効率のノード間コミュニケーション
4月に入ってからテストネットのリリースを発表し、最新の開発結果を報告しました。テストネットのコードネームは「Red Prawn」で赤えびを指しています。
リリース後、最初の実験では2000~3000ノードが参加し1秒あたり2000~3000トランザクションの処理に成功しています。現在のEthereumが1秒間に10~15トランザクション処理しているので、数百倍の処理能力を持つスマートコントラクトブロックチェーンを実現したことになります。
その上、Red Prawnは研究段階で、その性能は今後もますます向上していきます。
現在は、ノードとしてネットワークに参加したり、スマートコントラクトを開発することはできませんが、今後は開けたブロックチェーンとして一般の参加者を集めていくことでしょう。
おわりに
Zilliqaはスケーラビリティ問題に対して、最新の技術と緻密な設計によって解決しようとする気鋭のブロックチェーンといえるでしょう。
位置付けとしては、パブリックチェーンを前提としながら、プライベートチェーンで用いられるコンセンサスアルゴリズムを組み込み、新たな暗号技術で補強して、高効率を実現したブロックチェーン、というイメージでしょうか。
Etheruemの「Solidity」にあたる、Zilliqaの開発言語「Scilla」も発表され、Zilliqaを用いたDApps開発が盛んに行われていくことが予想されます。
4月25日(水)に行われるGincoローンチイベントでは、ZilliqaからHead of Business DevelopmentのOng En Hui氏が登壇します。
残席は既になくなってしまいましたが、当日のイベント内容は後日当マガジンでもおまとめしますので、そちらをご覧いただければと思います。
ご参加いただける方は、本日のイベントでお会いすることを楽しみにしています!