本稿について
The Honey Badger of BFT Protocolsを読みます。バージョンは20161024:215945です。
今回の範囲は「5. Implementation and Evaluation」の序文と「5.1 Bandwidth Breakdown and Evaluation」です。原文はこちらになります。
スポンサードサーチ
5. 実装と評価
本章ではHoneyBadgerBFTプロトコルのプロトタイプ実装を用いていくつかの実験とパフォーマンス測定を行う。特に注意のない限り、本章でレポートする数値は、デフォルトで全てのノードが誠実にふるまうと仮定する「楽観的な」場合についてのものである。
まず、5大陸に散在する104ノードの広域ネットワークで実験を行うことで、HoneyBadgerBFTプロトコルが実際にスケーラブルであることを実証する。これらの条件下でもHoneyBadgerBFTはピークで毎秒数千トランザクションのスループットに達する。さらに代表的な部分的同期プロトコルであるPBFTと比較対照しても、HoneyBadgerBFTは取るに足らない一定のファクターだけしか悪化しない。最後に非同期BFTをTorの匿名通信レイヤで実行することの実現可能性について示す。
実装の詳細
私たちはHoneyBadgerBFTのプロトタイプ実装をPythonで並行タスク用のGeventライブラリを使って開発した。
決定論的な抹消コーディングのために、リード・ソロモン符号を実装するzfecライブラリ[52]を用いる。汎用コインプリミティブをインスタンス化するために、Boldyrevaのペアリングベース閾値署名スキーム[11]を実装する。トランザクションの閾値暗号化のために、BaekとZhengのスキーム[7]を用いて256bitの一時的な鍵を暗号化し、そのあとにCBCモードで実際のペイロードに対してAES-256で暗号化を行う。Charm[3]のPBCライブラリ[38]用のPythonラッパーを利用してこれらの閾値暗号スキームを実装する。閾値署名にはMNT224曲線を使い、これによりわずか65バイトの署名(と署名シェア)となり、ヒューリスティックに112bitのセキュリティ6を提供できる。私たちの利用する閾値暗号スキームには対称な双線型集合が必要であるため、SS512グループを利用する。これはヒューリスティックに80bitのセキュリティを提供する[44]7。
EC2の実験では、通常の(認証されていない)TCPソケットを用いる。実際のデプロイではクライアントとサーバ双方の認証のあるTLSを使うことになるだろうが、長時間のセッションに些細なオーバヘッドをもたらすだけである。同様にTorの実験では、各ソケットのエンドポイントが1つだけ("秘匿サービス"アドレスを介して)認証されている。
私たちの理論モデルでは、ノードは無制限のバッファを持つと仮定している。実際にはメモリ消費が一定水準(75%)に達するとさらなるリソースをノードに動的に追加することができるが、このプロトタイプ実装ではその機能を備えていない。適切なバッファのプロビジョニング失敗は、失敗予算fに不利に作用する。
脚注6:過去のレポートではMNT224には112bitのセキュリティがあると見積もっていた[44]が、最近の離散対数計算の向上でより大きなパラメータが必要であると言われている[28, 29]。
脚注7:私たちの使うパラメータのセキュリティレベルは相対的に80bitより弱いと考えている。というのも、平文は各バッチがコミットされた後に明らかになることから、秘密の必要性は短命であることだからだ。予め計算しておく攻撃から守るためには、公開しているパラメータと鍵を定期的に再生成すべきである。
5.1 帯域幅のブレイクダウンと評価
まず、私たちの作ったシステムの帯域幅コストを分析する。全ての実験において、トランザクションサイズmT = 250バイトで一定であるとし、ECDSA署名、2つの公開鍵、アプリケーションペイロードを許容するものと仮定する(つまり、概ね典型的なBitcoinのトランザクションサイズである)。実験ではパラメータN = 4fを用い8、各パーティがB/Nトランザクションのバッチを提案する。最悪の場合のシナリオをモデル化するために、ノードはサイズBで同一のキューから始める。また実行時間を実験開始から(N - f)番目のノードが値をアウトプットした時点までの時間として記録する。
帯域幅とブレイクダウンの調査結果
各ノードが消費する帯域幅全体は固定の付加的なオーバヘッドとトランザクション依存のオーバヘッドで構成される。私たちが考えているすべてのパラメータの値について、この付加的なオーバヘッドはABAフェーズとそれに伴う復号フェーズにおける閾値暗号による結果としてO(λN2)の項で特徴づけられる。ABAフェーズは各ノードに関係し、各ノードは期待値で4N2の署名シェアを送信する。トランザクション依存のオーバヘッドを生じさせるのはRBCフェーズだけで、これは抹消コーディングの拡張ファクターr = N/(N - 2f)と等しい。またRBCフェーズはN2logNハッシュ分のオーバヘッドを出す。ECHOメッセージにマークルツリーのブランチが含まれるためである。(ノードあたりの)合計の通信コストは以下のように見積もることができる。
mall = r(BmT + NmE) + N2((1 + logN)mH + mD + 4mS)
ここでmEとmDはそれぞれTPKEスキームおける暗号文のサイズと復号シェアのサイズであり、mSはTSIG署名シェアのサイズである。
システムの効果的なスループットはバッチサイズBを上げるにつれて上昇するので、コストのうちトランザクション依存の部分が支配的である。図5に示すように、N = 128についてバッチサイズが1024トランザクションまではトランザクション非依存の帯域幅が依然としてコスト全体の大部分を占める。だが、バッチサイズが16384までいくとトランザクション依存の部分が支配し始める。これは主にノードが抹消コード付きのブロックを送信するRBC.ECHOステージによるものである。
脚注8:N = 4fの設定は最大のフォールトトレランスではないが、Nをfで割るときに便利である。
(HoneyBadgerBFTプロトコルを見てみる10 ←← 前)|(次 →→ HoneyBadgerBFTプロトコルを見てみる12)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。