Erlayでフルノードの通信負担を減らす

Raspberry Piのような廉価で小型なデバイスでもフルノードが問題なく動かせることは、ビットコインの大きな特徴で、その分散性に貢献していると言われています。ところが、フルノードを動かすのに必要な動作条件の中でも比較的厳しい条件が通信量です。

今回紹介するErlayは、トランザクションの伝播を効率化することによって通信量を削減し、フルノードを動かす負担を軽減したり、より多くのノードとの接続を可能にすることでネットワークの堅牢性を増す技術的提案です。

前回の記事はこちら
前回の記事では、ビットコインのスマートコントラクト言語Scriptをより扱いやすくしたMiniscriptという言語について掲載していますので、ぜひご覧ください。 Miniscriptがビットコインのスマートコントラクトを使いやすくする

フルノードの通信先と通信量

典型的なフルノードは、初回起動時に全てのブロックのデータを検証するためダウンロードする他に、起動している間に他のノード8つと接続しており、新しいブロックの伝播やトランザクションの伝播などを行っております。

このうちトランザクションの伝播だけでネットワークの通信量の30%から50%を占めており、典型的なノードで多いときで月間18GB、8つではなく24のノードに接続するよう設定した場合は月間50GBもの通信を行っています

インターネット環境はデバイス性能などと比べると格差が大きいため、コスト面やインフラの面でフルノードを立てることに課される中でも厳しい条件だと考えられます。日本でも田舎や、固定回線のない家庭、通信量によって速度制限のかかるポケットwifiに頼る環境などでは難しい条件かもしれません。

Erlayの概要

Erlayは、これまで比較的無視されてきたトランザクション伝播(Relay)の効率に特化した提案です。

現在、ビットコインのノードは「受信したトランザクションを全ての接続先(ピア)に通知し、通知された方はそのトランザクションを持っていなければ要求する」Floodingという手法でトランザクションを伝播しており、これには高い耐障害性がある上に高速であるという長所がありますが、その代わり同じトランザクションに関する通知を何度もやり取りすることになるため、上述したとおり余分な通信という形でコストがかかります。

Erlayは、「未知のトランザクションを知っていないか接続先に問い合わせる」Set ReconciliationとFloodingを併用することで、現在のFloodingのみの仕組みのセキュリティを維持しながらも余分な通信を減少させる仕組みです。具体的には、当初は数段階の間、一部の接続先にのみFloodingを使ってトランザクションを伝播し、数段階が経過した後はノード間の問い合わせによって未知のトランザクションを互いに補完していくという方法を取ります。

どれくらい通信量を節約できるのか

Erlayの論文には、実証の第一歩としてシミュレーションの概要と結果も記載されています。実験用に6万ノード(パブリックノードが6,000、プライベートノードが54,000)のネットワークをシミュレータ上に構築し、600秒の間に4,200のトランザクションをそれぞれランダムに選んだノードから生成し伝播させました。

この実験の結果、(Floodingの一環でピアにトランザクションを持っていると通知する)アナウンスメントによる帯域幅だけを見た場合、通常のビットコインノードが接続先8つあたり約4.3GBずつピア数に比例して増えていくのに対し、Erlayでは8つのとき0.71GB、32のときでもわずか0.94GBと高いスケール性を発揮することが確認できました。どちらの場合も、トランザクションの共有に関するデータ使用量は等しく4.76GBでした(どのノードも一度しか未知のトランザクションを取得しないため)。

速度に関しては、あるトランザクションがネットワーク全体に伝播されるまでの時間について、Erlayのほうが単純なFloodingより2秒から4秒ほど遅いという結果になりました。この速度低下について論文の著者は、ノード間で未知のトランザクションをまとめて共有することによるものと述べ、2秒程度のロスは大幅な通信量削減の対価として妥当だと主張し、必要であれば通信量の節約度を変更することで軽減できるとしています。

また、さらなるシミュレーションとして、ErlayをBitcoin Coreに試験的に実装したものを用意し、Microsoft Azureクラウド上の6つのデータセンターに合計100のノードを展開して、1つのノードから1,000のトランザクションが毎秒7つのペースで伝播される実験をしています。この試験でも、平均で単純なFloodingよりも0.2秒遅くネットワーク全体に伝播しましたが、その代わりノード間の通信量を40%も節約することに成功しています

ErlayのBitcoin Coreへの正式な実装はまだですが、現在BIPが準備されているところです。ノードを動かす負担を軽減するという意味ではビットコインの方向性とかなり合致しているので、近い将来には制限のある通信環境でもフルノードを常時稼働することが大した負担ではなくなるかもしれません。

コラム執筆者

加藤 規新 @btc_dakara

1994年生まれ、シカゴ大学でGISやコンピューターサイエンスを学び学士号取得。2016年末よりビットコインに関するリサーチをしており、今までにいくつかのブログやサロンで解説を担当。 ビットコインについて一番好きなところはパーミッションレスに誰でも使うことができること。 2019年4月よりトラストレス・サービス株式会社代表。

コメントしてBTCを貰おう