flowブロックチェーンのテクニカルペーパー読んでみる雑メモ Part1
Separating Consensus and Compute
概要
既存のブロックチェーンのスループットの限界はよく知られている。
ビットコインやイーサリアムにおいてL2ソリューションが使われていたり、シャーディングと呼ばれる方法が用いられたりするが、これはプログラミングモデルを複雑にし、ACID保証を破壊する。
本論文ではマイナーの作業を2つの異なるノードの役割に分割する新しいアプローチを説明する。
コンセンサスと計算の分割を形式化し(関心ごとの分離)セキュリティーを損なうことなく、従来の56倍のスループットを達成している。
Introduction
PoWは非常に高い計算能力と電力を使う。これに代わるアルゴリズムはBFTコンセンサスアルゴリズムである。PoSブロックチェーンはPoWの計算努力を取り除いているが、PoWからアーキテクチャの大部分を受け継いでいる。特に全ノードがブロックの検証と実行をすることが要求されており、ノードを追加してもスループットに何のメリットもない。そのため、小規模なコンセンサス委員会(セキュリティが弱い)かブロック生産率が低い(スループットの低下)かのトレードオフを迫られる。
セキュリティも分散化も妥協したくない場合、シャーディングやメインネットでの作業の移行(Lightning, Plasma)などのアプローチがあるがスマートコントラクト開発の複雑さが増す。
flowブロックチェーンはトランザクションの選択と順序づけをその実行から切り離すことで両方のプロセスを並行して実行できるようにしている。これにより、セキュリティや参加率を損なうことなく大幅に高いスループットを実現している。
従来のブロックチェーンの各ノードはブロックを確定する前に状態更新の計算を再現する必要がある。
flowではブロック内の順序1のトランザクションにおけるコンセンサスを得ることができれば良い。そのため、コンセンサスに参加するための計算量は大幅に削減される。
現在のブロックチェーンのほとんどは金融取引の処理にのみ焦点を当てているが、flowはブロックチェーンを一般的なチューリング完全分散コンピューティングプラットフォームとして考えている。
ブロックチェーンを台帳と呼ぶのではなく分散型ステートマシン
トランザクションは計算状態間の遷移
コンセンサスという用語は状態遷移の順序を線形化することのみに使用する。
Theoretical Performance and Security Analysis
flowのコンセンサスアルゴリズムはコンセンサスノードから実行ノードに処理が移っていく。
コンセンサスノードでトランザクションの実行順序のみを決めるため実行ノードはそれのみに注力すれば良くなっている。
flowでは実行ノードで発生するいかなるエラーも保証されるように設計されている。そして、実行ノードによってもたされるいかなるエラーも次の4つの属性を維持するように設計されている。
- Detectable: 検出可能であること。ネットワーク全てのノードのうち一つでも誤りを検出できれば他の全てのノードに対して誤りを証明することができる。
- Attributable: 帰属性。flowにおけるすべての決定論的プロセスの出力はその出力を生成したノードのIDで署名されなければならない。そのため、検出されたエラーは全て、そのプロセスを担当したノードに明確に帰属させることができる。
- Punishable: 処罰可能。上記のように検出した全てのエラーは明確に帰属させることができるためスラッシングによって確実に罰することができる。
- Recoverable: 回復可能。エラーが検出されたときにそれを元に戻す手段を備えていなければならない。これは、悪意のある行為者がスラッシングのペナルティよりも自分達の利益になるようなエラーを誘発することを抑止している。
Performance Simulations
3パターンのシミュレーション実験
(詳細な実験内容は省略)
1 . コンセンサス処理のみ実行する低速ノード20、中速ノード10、実行処理のみ高速ノード2
2. 役割の分割をせず検証パターン1と同じ振り分け
3. 低速ノードのみで実証
結果として2と3はほとんど差異がなく高速なノードがあったとしても低速ノードにパフォーマンスが引きづられていることがわかる。そして、1では大幅なスループットの向上が見られ、コンセンサスと計算処理を分割することが有効であることがわかる。