2019年5月24日、ブロックチェーン専用コワーキングスペースNeutrinoで、ブロックチェーンのスケーラビリティに特化したミートアップが行われました。
イベントページ:IoTブロックチェーンのスケーリング課題
ミートアップでは、主催者のLONGHASH代表のChris Dai氏が冒頭の挨拶で、IoTデバイスの現状からブロックチェーンのスケーリングの必要性を語った後、Nayutaの栗元憲一氏とTaraxaのSteven Pu氏がスケーラビリティへの対処として自身らの取り組みを紹介しました。
[the_ad id=”13126″]
Lightning Networkの説明
Nayutaの栗元憲一氏は、Lightning Network(ライトニングネットワーク)に早期から取り組んでいます。
ビットコインは分散やトラストレスに最もこだわるコミュニティで、誰でも参加することができるため、技術開発が進んでいます。
しかし、ビットコインは実際のところ決済には使われていません。取引がリアルテイムではなく、ファイナリティ(決済の確定)が確率的で遅く、スケーラビリティが低いからです。その遅さから、社会インフラで使うことはできません。
そのビットコインの問題に対して取り組んでいるのがLightning Networkです。Lightning Networkはセカンドレイヤーに位置します。ビットコインのブロックチェーンレイヤーに対し、それを補う形のレイヤーがLightning Networkだからです。
Lightning Networkは、トランザクション情報をノード全体にばらまいて送金をするビットコインのベースレイヤーと異なり、ビットコインをバケツリレーのように送金をします。Lightning Networkにより、大きな処理能力と即時支払い、0.1円未満の低い送金手数料が実現します。
栗元氏は、Lightning Networkを支えるコアの技術は「Micropayment channel」「HTLCs」「Routing」の3つだと語ります。
Lightning Networkでは、Micropayment channelによりリアルタイムの支払いを実現します。2つのノード間の共通口座を作り、そこにビットコインをデポジットし、両者の合意をもとに引き出しができるようにします。そして、支払いが生じた場合に共有口座の支払いの残高を変化させていきます。
遠くのノードまで送金を行う場合、Lightning Networkではトランザクションを全体にばらまかないために、送金を誰かに中継してもらう必要があります。中継するノードが送金を途中で盗難しないようにするために、HTLCsという技術が用いられます。
また、どのノードを中継するかはRoutingという技術で決定されます。参加したノードが保有しているチャネルをブロードキャストすることにより、どこのノードを中継させれば良いかをネットワーク全体で形成させていきます。結果的に、ノードは適切な経路を伝って送金を実行することができます。
今までの内容をまとめた動画が以下になります。
上記のような仕組みにより、Lightening Networkでは同時に大量のトランザクションをさばくことができるようになります。IoTでは大量のトランザクションが生まれるのでこのような仕組は重要になります。
最後に、栗元氏よりNayutaの取り組みが紹介されました。
Nayutaは、Lightening Networkに早期から取り組んでいます。ハードウェアのリソースが少なくても動くPtarmiganとよばれる世界最小独立のLightening Networkノードを実装したり、RFCの提案や他の実装へのフィードバックなどを行っています。
また、IoT分野では中部電力と実証事件を行い、事前に支払った分だけ電子自動車が動かす実験や、Arduino(アルテュイーノ)に組み込める拡張ボードのシールドを使った研究を行っています。
栗元氏は、まだ具体的なマイクロペイメントのキラーアプリは登場していないが、開発者を増やし、プロトタイプをガンガン回せるようになる環境が重要だと考えています。
Lightening Network / Nayutaについて
Taraxaの説明
Taraxa(タラクサ)は、IoTにフォーカスしたブロックチェーンです。今回は、FounderのSteven Pu氏によりその内容が語られました。内容が難しいため、特に詳細に説明していた部分に絞ってご紹介します。
従来のブロックチェーンは、分散性と安全性、速度のすべてを高めることはできませんでした。Taraxaでは、以下の5つの革新的な要素によりこれらを実現します。
- Speculative Concurrency:トランザクションの予測的な並列処理ができる
- Rapidly Finalized DAG:ファイナリティをもたらす水平処理ができるDAG
- Fuzzy Sharding:無駄なブロックを生成させないシャーディング
- Trustless Light Nodes:フルノードをサンプリングして参照する技術
- Evolving Network:トランザクションの状況によりブロックサイズなどを動的に調整
今回の説明では、主にトランザクションの並列処理とDAGについて紹介されました。
Taraxaのトランザクションの並列処理では、垂直+水平処理を採用しています。
現状のブロックチェーンでは、TPSを上げるには限界があります。その方法はブロックサイズを上げるか、ブロック生成時間を短くすることです。前者では、ブロックの拡散速度が遅くなるため、ノード間で異なる記録が起こる可能性が高くなり、チェーンが分岐しやすくなります。後者でも、分岐の確率が高くなってしまいます。いずれにおいても、全体で無駄な処理が増えてしまいます。
Taraxaの並列処理では、ネットワークの処理ノードを分割して並列処理を行い、垂直処理によりノードが一度に複数のトランザクションを処理できるようにします。
ここで問題になるのが、メモリのコンフリクトになります。並列処理をすると、並列処理できるトランザクションとできないトランザクションが混同することになります。そのため、並列処理できないものは逐次処理をさせ、できるものはそのまま並列処理をさせていきます。
実際にTaraxaをプラットフォームとして使う場合は、開発者が並列処理をするためにメモリのロッキングを考慮しなくても良いようにSTMという技術が用いられています。
続いてDAGについてです。厳密にはTaraxaはブロックチェーンではなく、データ構造にDAGを採用したチェーンです。DAGでは、ブロックが複数の親となるブロックとの関係性を持つことができるようになります。これらの処理を同時にすることができるため、Taraxaでは処理速度が高速になります。
この際にブロックの順序付けが問題になってきます。Taraxaではブロックに重み付けをし、重みにより順番がわかるようにします。重みは、ブロックの参照数で決まります。Taraxaでは、ブロックの参照関係からグループ付を行い、グループで最も重みがあるブロックを決定します。それらのブロックをつないだものがアンカーチェーンと呼ばれます。
このままだとファイナリティの問題が解決しません。そこでTaraxaでは、検証可能なランダム関数(VRF)とPBFTを採用したシングルチェーンを使い、ノードの投票によってPeriodと呼ばれるグループ単位でファイナライズをしていきます。