Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bitcoinの新しいTxリレープロトコルErlay

 Bitcoinの新しいTxリレープロトコルErlay

GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2019/11/erlay/

shigeyuki azuchi

November 05, 2019
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. 1 Erlay
 Bitcoinの新しいトランザクションリレープロトコル
 https://arxiv.org/pdf/1905.10518.pdf
 Bitcoinネットワークのセキュリティはノード間の 
 接続性に依存し、この接続数が増えればネットワークはよ り堅牢になる。(現在Bitcoinノードが接続するアウトバウン ドピアの数は8)
 


    単純に接続数を増やすと、現在のリレープロトコルではネッ トワークで使用される帯域幅もリニアに増える。 
 
 接続数の増加に対して帯域幅をほぼ一定に保つ 
 新しいトランザクションリレープロトコルを提案。 

  2. 2 既存のTxリレープロトコル
 Peer 1
 Peer 2
 ① インバウンドピアからTxを受信
 ② Txの検証を実施


    inv
 ③ inv:hash(Tx)を接続中のピアに送信
 ④ Peer 2が対象のTxをまだ持っていない
 場合、getdata:hash(Tx)をPeer 1に送信
 ⑤ Txメッセージで応答
 Tx
 getdata
 Tx

  3. 3 既存のTxリレープロトコルの特徴
 既存のリレープロトコルをFlooding方式と呼ぶ
 • 帯域幅
 invメッセージはノードが接続中のピア全てに対し送信されるため、
 接続中のピアの数をnとすると1Txあたりn × 32バイトの帯域を使用する。
 •

    迅速な伝播
 各ノードが(遅延時間があるものの)接続中の全てのピアにinvを送信するため、ネッ トワーク全体に迅速にTxの通知を送ることができる。
 • データの重複
 各ノードは接続中の各ピアからinvを受け取り、そのほとんどは重複したものになるこ とから、冗長的で無駄なデータを受け取っていることになる。
 
 Txのリレーに関しては88%のデータが冗長的で、
 ネットワーク・プロトコル全体で使用される全帯域幅の44%を占める

  4. 4 ノードの分類
 Bitcoinのネットワークのノードは以下の2つに分類される
 
 • Publicノード
 8つのアウトバウンド接続および最大125(設定で変更可能)の
 インバウンド接続を持つノードで、いわゆる一般的なフルノード
 
 •

    Privateノード
 8つのアウトバウンド接続を持つが、インバウンド接続は持たないノード
 (軽量ノードなど)
 
 Publicノードを(帯域幅、計算能力、HWリソースの観点から)実行しやすくし、より多くの Privateノードを受け入れられるようにすることが重要

  5. 5 新しいTxリレープロトコルErlay
 Txのリレーを2段階に分ける
 1. Low-fanout Floodingフェーズ
 Flooding方式は拡散という意味では効率的であるため、Public ノードのアウトバウンド接続のピアに対してのみFloodingでTx をリレーする。
 


    2. Set-reconciliationフェーズ
 Low-fanout Floodingのみではネットワーク全体に
 伝播できないため、それを補完するフェーズ。
 各ノードはローカルの状態と接続中のピアの状態を
 定期的に比較し、その差分を計算し不足Txを要求する。
 

  6. 6 Set-reconciliationフェーズ
 エラー訂正符号に基づいた帯域幅効率の高いライブラリMinisketch (https://github.com/sipa/minisketch)を使って、各ノードはローカルset sketchを計算し、 維持する。
 Peer 1
 Peer 2


    ① Peer 1は自分のSketchをPeer 2に送る
 ※実際には相手との差分の推定値も送る。
 Peer 2
 sketch
 Peer 1
 sketch
 ② Peer 2は自分のSketchとPeer 1のSketch 対称差を計算する。
 Peer 1
 sketch
 Peer 2
 sketch
 XOR
 diff
 =
 Sketchは各ノードが持つトランザクションの 短縮TXIDで構成される。
 ③ Peer 2はdiff sketchから不足分の
 短縮TXIDの復元を試みる。
 ④ Peer 2が持っていないTxを要求し、Peer 1が 持っていないTxを送信する。
 Low-fanout floodingフェーズで
 伝播されなかったTxは、この同期フェー ズでノード間のトランザクションセットの差 異を効率的に解消する
 ことでネットワーク全体にTxが
 いきわたるこをを保証する。
 二者間のセットの差分の上限が予測可能である仮定 の下復元しているため、実際の差分が推定より大きい 場合、デコードに失敗し、二分法を利用して再実行、そ れでもだめな場合は従来のFloodingへ。 
 このラウンドを1秒毎に各アウトバウンドピアと行う 

  7. 7 まとめ
 • ErlayはTxのリレープロトコルを、Txを迅速にネットワークに伝播するための Low-fanout Floodingフェーズと、ネットワークの隅々にまで確実に伝搬させる Set-reconciliationフェーズに分割する。
 
 ◦ Low-fanout

    FloodingフェーズではPublicノードのアウトバウンド
 接続に対してのみTxの通知を送ることで冗長的なinvの送信を抑制。
 ◦ Set-reconciliationフェーズではノード間のメモリプール内のTxの状態差を同期 することで、ネットワーク全体にTxの伝播を保証する。
 
 • Erlayにより新しいTxの伝播に必要な帯域幅を84%削減可能。
 • 但し、Txがネットワーク全体に伝播するまでにかかる時間は約2.6秒ほど
 長くなる。Txの承認が10分に1回であるという側面を考慮すると問題ない範囲のト レードオフと思われる。