イベントレポート
ZilliqaのパブリックブロックチェーンはShardingで秒間2500件の取引処理を実現
新開発言語Scillaでより安全なスマートコントラクト設計も可能
2018年10月30日 06:00
これからの未来を創る「ブロックチェーン」の可能性を探求するカンファレンスイベント「BlockChainJam 2018」が10月21日、東京・六本木アカデミーヒルズのタワーホールにて開催された。イベントレポート第3弾となる本稿ではカンファレンス第2部で行われたブロックチェーンプロジェクトの概要解説から、シンガポールのブロックチェーン企業Zilliqa Research Pte. Ltd社・ビジネス担当のEn Hui Ong氏による「Zilliqaの概要」および「パブリックブロックチェーンをスケールアップする技術」について詳細を報告する。なお、イベント概要については、「仮想通貨・ブロックチェーンの課題を解決する最新技術を知る『BlockChainJam 2018』」の記事にてレポートしているので併せて読んでいただきたい。
Zilliqa(ジリカ)は、シンガポール国立大学の研究者によって設立されたプロジェクトで、Dappsにおける高スループット、安全性の高いスマートコントラクト、取引の格安手数料を目指して開発された仮想通貨およびブロックチェーンだという。Zilliqaのデータ処理能力は、1秒で2500件のトランザクションを処理できる機能を有するそうだ。
始めに仮想通貨の「スケーラビリティ問題」ありき
Bitcoinは毎秒7件程度、Ethereumで10件から15件程度の取引を処理することができるが、しかし、既存のペイメントシステムであるクレジットカード(VISA)は毎秒8000件程度、ピーク時は最大で2万から3万件程度の処理が可能だとEn Hui Ong氏はいう。従来の仮想通貨と既存のペイメントシステムを比べると、このようにスループット(一定時間あたりのデータ処理能力)に大きな差があり実用には耐えがたいことが明らかであると、仮想通貨のパブリックブロックチェーンのスケーラビリティの問題について解説をする。
また、パブリックブロックチェーンは取引の際に手数料がかかるが、ここにもスループットに関するスケーラビリティの問題があることをEn Hui Ong氏は指摘する。たとえぱEthereumを例に挙げると、Ethereumの取引にはGAS代(手数料の名称)がかかるが、取引が集中するとGAS代を高く設定している取引から処理されるため、膨大な取引が発生すると一時的に手数料が高騰するという問題が生じるという。実際にEthereumでは、「CryptoKitties」という人気のブロックチェーンゲームが流行った際に、手数料が通常の30倍以上にもなったという。
En Hui Ong氏は、今後、仮想通貨を既存のペイメントシステムのように使うのであれば、まずはこのスケーラビリティの問題を解決しなければならないという。
ここで考えられる解決方法としてEn Hui Ong氏は、Bitcoinであればブロックチェーンに書き込むブロックのサイズを倍にすれば、取引処理も今の倍の14件程度に増やすことは可能であるという。もっともこの方法で2倍、4倍程度にブロックサイズを増やすぐらいなら問題ないが、ブロックサイズが大きくなればなるほど、ブロックチェーンを記録し続けるノードの記憶容量を圧迫することになるし、ネットワークにも負荷がかかり効率が悪く、ブロックサイズを永遠に増やし続けることはできないことから、この方法では根本的な解決にはならないという。
また、スケーラビリティを改善する方法として、Bitcoinのブロックチェーンの承認方法である「みんなが承認する方法」(PoW:Proof of Work)ではなく、「選ばれた一部の人が承認する仕組みを使う方法」(PoS:Proof of Stake)もあるという。PoSには、より多く仮想通貨を持っているなど、何らかの条件による投票権を持った人の多数決で承認をするというものもあれば、少数の権限ある特定の人が承認する方法(DPoS:Delegated Proof of Stake)などいろいろ考えられるという。承認する人を限定すれば承認時間も短縮でき、コンセンサスを早く達成できるというメリットがあるという。しかし、これはかなり中央集権的なものになりかねないというデメリットもあるとのこと。
ZilliqaはShardingで高スループットを実現
そこでZilliqaが提案するのは、Sharding(シャーディング)という方法だという。Zilliqaは、2016年にシャーディングの論文を発表し、これまでその開発をしてきたとのこと。簡単にシャーディングを説明すると、分割統治であるという。仮にネットワーク上に1000ノードあるとしたら、それらを100ノードずつ10グループに分ける。各グループは平行して取引を分散し承認することができるため、10倍の処理能力になるというイメージとのこと。ちなみにZilliqaがテストネットで達成した結果は、1800ノードで毎秒1200件程度の取引を処理することができたそうだ。ノードを倍の3600ノードに増やすと、その結果も倍の2488件の取引処理を行うことができたという。
新たにスマートコントラクト開発言語を開発
Zilliqaはスケーラビリティの問題解決以外にもいくつか特徴があり、その1つが、安全性の高いスマートコントラクトを実現するために新たに開発した「Scilla」(シラ)というプログラミング言語だという。Scillaの開発背景には、2016年のThe DAO事件があるという。Ethereumのブロックチェーンプラットフォーム上で動いていたプロジェクトThe DAOは、スマートコントラクトのバグを突かれ、6000万ドル相当分のトークンが盗まれたという。Ethereumは「Solidity」というプログラミング言語でスマートコントラクトを設計できることから人気だが、Solidityは自由度が高い反面プログラミングも難しく、バグが潜む可能性も高いというのだ。
また、Solidityは「形式的検証」ができないという。形式的検証とは、ハードウェアやソフトウェアのシステムを形式手法(プログラム開発手法の1つ)や数学を利用し、システムが正しく動くかどうかを検証するための方法だという。バグを回避するために有効な検証方法とのこと。これらを踏まえ、Zilliqaは新たにスマートコントラクト用の言語Scillaを開発したという。データフロー型言語のScillaは、より簡単にスマートコントラクトを設計することができ、形式的検証も可能なツール機能を備えているため、スマートコントラクトをより安全に設計できるそうだ。
なお、Zilliqaは現在、テストネットにて運用中だが、年末年始にはいよいよメインネットへと移行予定であるという。