Elements 22.1.1: ノード軽量化によりDIYハードウェアでも運用可能に
Elements Liquid Network

Elements 22.1.1: ノード軽量化によりDIYハードウェアでも運用可能に

Blockstream Team

Elementsノードクライアントを安価なDIYハードウェアで実行できるよう軽量化してほしいというLiquidコミュニティからの長年の要望に応えるため、今回のElements 21.1.1リリースでは、まずLiquidのブロックヘッダー処理を最適化しました。今後もノードのさらなる効率向上に継続して取り組んでまいります。

社内で実施したベンチマークスコアによると、バージョン21.1.1では、liquidv1実行時のメモリ使用量がおよそ半減しています。メモリに保存された大きなヘッダーフィールドをいくつか圧縮した結果です。これにより、ビットコインスタック(Bitcoin、Core Lightning、Liquidすべてのノード)をRaspberry Pi 8GBモデルのような端末で運用できるようになります。

Elements 22.1.1のその他の主な改善点は以下の通りです:

  • getsidechaininfo RPCとtestproposedblockのヘルプメッセージを修正
  • ログのメインチェーンRPCフィールドを秘匿
  • Pay-to-Witness-Script-Hash (P2WSH)ペグインでRegtestネットワークを生成可能に
  • ブロックがヘッダーの先をいく場合のアンダーフローを修正

また、アセット利用時に”Use Available Balance”を選択した際、選択アセットがL-BTCに切り替わる問題を含む複数の不具合をelements-qtの改修で修正しました。

リリース詳細はチェンジログからご確認いただけます。ご意見・ご要望はBuild On L2 (BOL2)コミュニティの開発者ページからお寄せください。

Elementsの最適化 (鍵はヘッダーにあり)

以下、メモリ使用量を大幅削減したElements 21.1.1の最適化について、もう少しご説明します。

ElementsはBitcoin Coreの仕様を引き継ぎ、すべてのブロックヘッダー (ブロックのメタデータ) を常時メモリ内に保存していました。Bitcoinはヘッダーが比較的小さいため、これが問題になることはありません。しかし、Elementsのヘッダーはブロック生成間隔が1分と短いこと、DynaFed、ブロック署名情報などの関係で格段に大きいです。現時点で、Liquidブロックチェーン (liquidv1) のブロック数は、Bitcoinの 3 倍に達します。

今回新たに設けたtrim_headersパラメータ (プルリクエスト #1190) により、十分なブロックタイムが経過して、ヘッダー参照の必要性が低くなったブロックについて、ヘッダー内の大きいフィールドを複数メモリから削除できるようになりました。ただし、実装には注意を要しました。イニシャル・ブロック・ダウンロード (IBD) では、通常 (Bitcoinノードや、trim_headersが無効の場合)、ヘッダーとブロックは別々にダウンロードされます。ヘッダーを先にダウンロードしておくことで、ブロックをダウンロード後速やかに検証するためです。IBDでtrim_headersモードを有効にすると、古いブロックヘッダーが削除されるため、古いブロックが検証できなくなります。かと言って、ヘッダーを削除しなければ、メモリー使用量を減らせません。そこで、私たちは、trim_headersモードを有効化すると、ヘッダーとブロックが並行してダウンロードされるようにしました。検証中のブロックよりも、はるかに前のブロックヘッダーが削除されるのを回避するためです。

このように不要なフィールドを複数削除することで、メモリを解放できました。ディスクに保存されるデータは従来通り変更はないので、trim_headersパラメータは必要に応じて設定・解除できます。

RAM 8GB、スワップ領域4GBの仮想マシン環境におけるIBD後のメモリ使用量の比較。

BOL2に参加して新機能をリクエスト

Elementsはフリー・オープンソース・ソフトウェアです。誰でも自由にダウンロードして、ビットコイン上にサイドチェーンを構築できます。ローンチ以降、新しいオペコードのほか、秘匿トランザクションやIssued Assetsといった新機能を追加してきました。こうしたアップデートの中には、OP_CSVやSegregated Witness  (SegWit) のように、後にBitcoinに実装されたものもあります。Liquidで年内リリース予定の次世代スマートコントラクト言語Simplicityも、将来的にBitcoinに導入される可能性があります。

今後もBitcoinでの実装の可能性を見据えて、Liquidにオペコードや機能を追加してまいります。そのためにも、Bitcoinコミュニティからご意見・ご要望をいただけると幸いです。開発チームへのフィードバックや、Liquidユーザーと新しいアイデアやプロジェクトについて議論を交わす場として、ぜひBuild On L2 (BOL2)コミュニティプラットフォームをご活用ください。

本日、Liquidの開発マネージャーPablo GrecoがBOL2にてライブAMAを開催します。22.1.1リリースについての質問にも回答しますので、ぜひご参加ください。

皆様の貴重なご意見・ご質問をお待ちしております!

If you have specific preferences, please, mark the topic(s) you would like to read: