現在多くの方がElectrumサーバーを従来のElectrumXから乗り換えようとしているので、他のElectrumサーバーの選択肢をいくつか紹介するのにいい機会だと考え、オープンソースのブロックエクスプローラーであり非常にスケーラブルなElectrumサーバーが同梱されるようになったBlockstream Esploraを中心に取り上げてみました。
自分でElectrumサーバーを動かす
既定ではElectrumウォレットはランダムに選ばれたElectrumサーバー数台に接続します。これは自分のアドレスや残高を未知の第三者に伝えてしまうこととなるため、プライバシー面で問題があります。また、残念なことに接続可能なElectrumサーバーの多くがブロックチェーン分析企業や悪意のある主体によって運営されていることも知られています。したがって、もしElectrumウォレットを使っているのであれば、弊社はユーザー自身がElectrumサーバーを立ち上げ、ウォレットをそこに接続して利用することを基本的に推奨しています。
Bitcoinを扱うアプリケーションの開発者はこれに加えて、複数あるElectrumサーバーの選択肢をそれぞれの実装が提供するトレードオフを考慮してしっかりと検討するべきです。実装によって特定の用途への向き・不向きが異なるためです。
ただ、喜ばしいことにElectrumサーバーの良質な選択肢は増えてきており、様々なユーザーのニーズに対応しています。それぞれの概要を以下に記します。
ElectrumのElectrumX
最近になって従来のElectrumXからフォークされ、公式にElectrumチームによって保守開発されているElectrumのElectrumXは個人用であるパーソナル系のソリューションより高いパフォーマンスを発揮し、ウォレットアプリが自動的にサーバーに接続できるようにするP2Pディスカバリ・プロトコルに対応しています。これらの特徴によって、 外部からの接続を受け付ける公開Electrumサーバーとしての利用に適しています。
Electrum Personal Server
Electrum Personal Server (EPS)はElectrumXやElectrsと比べてパフォーマンスは低いですが、セットアップとBitcoinノードへの接続が簡単なため、個人用の非公開Electrumサーバーの運用に適しています。また、インデックスをすべて保存するElectrumXやElectrsと比較してリソースの消費が少ないので、低スペックなデバイスでも動作することができます。
Bitcoin Wallet Tracker
最近リリースされたElectrumプラグインと併せて使うことで、Bitcoin Wallet Tracker (BWT)はワンクリックで簡単にセットアップすることができ、パーソナルElectrumサーバーの選択肢として人気が出てくると予想されます。Rustで実装されているBWTはビットコインウォレットや決済事業者のバックエンドとして使用するのに十分なパフォーマンスを発揮する一方で、プルーニングにも対応しています。利用する場合の注意点として、BWTはまだ開発初期段階のα版ソフトウェアなのでバグを含む可能性があります。
Electrs
ElectrsはRustで実装された軽量なElectrumサーバーで、Electrum Personal ServerやBitcoin Wallet Trackerとは異なり、ユーザー以外のものを含む過去全てのBitcoinトランザクションのインデックスを保持します。ただし、これはより多くのリソースが必要になるというデメリットがあります。また、キャッシングをあまり行わないため、Esplora(下記)やElectrumXと比較してDoS攻撃に弱く、パフォーマンスが低いです。しかしながら、ローカルネットワークでの使用や、ストレージが限られている環境下へのデプロイには向いており、同期にかかる時間も短いです。
Esplora
BlockstreamのEsploraは公式のBlockstream Explorerの他にもBitcoin Magazineのエクスプローラー、 Mempool、Light Nite Explorerなどいくつかのプロジェクトに使われているオープンソースのブロックエクスプローラーです。
比較的知られていませんが、EsploraにはElectrsのフォークに基づく最適化されたElectrumサーバーが同梱されています。Blockstreamのエンジニアによる過去2年間にわたる継続的なアップデートとパフォーマンス改善を受け、Esploraは現在Bitcoin上で使えるElectrumサーバーの中でもトップクラスのパフォーマンスとスケーラビリティを発揮します。また、EsploraはLiquid Networkに対応している唯一のElectrumサーバーでもあります。
さらに、EsploraはBlockstream Greenサーバーの二段階認証機能のバックエンドに使われているなど、高いスループットが必要なウォレットのAPIを実現することにも最適です。
スピードとスケーラビリティを実現する徹底したインデックス作成
ほとんどのリクエストに関してBitcoinノードに問い合わせる(時間がかかる!)必要があるElectrsとは異なり、Esploraはブロックチェーンを完全にデータベース化するため、クエリに対応するためにBitcoinノードに問い合わせる必要がありません。インデックスが作成された後は、EsploraがBitcoinノードに依存するのは非同期的なメモリプールのキャッシュ更新と、新しいブロックの通知を受け取るときのみです。
徹底したインデックスの作成、キャッシング、そして検索結果の事前補完により、Esploraは高速なアドレス検索を提供し、Denial-of-Service (DoS)攻撃への耐性を高め、複数のウォレットの自動インポートに対応しています。
欠点としては、これらの機能を実現するために必要なハードディスク容量とインデックス作成の所要時間がElectrsや個人用と向けのElectrumサーバー(EPSとBWT)に比べて大幅に大きく、長いことです。
P2Pディスカバリー機能を新規に搭載
これまで、P2Pディスカバリー機能を搭載したElectrumサーバー実装はElectrumXだけで、これがほとんどのElectrumウォレットが従来のElectrumXが稼働するサーバーに依存している という状況につながってきました。今週、弊社がEsploraにP2Pディスカバリー機能をオプション機能として追加したことによって、Esploraが不特定多数のウォレットからの接続を受ける公開Electrumサーバーとして設計された唯一の対抗馬となりました。
ブロックエクスプローラーもお付けしましょうか?
セットアップが複雑になるためパーソナルサーバーのユーザーなどには万人受けしないかもしれませんが、Esploraはパーソナルサーバーと個人用のブロックエクスプローラーの両方が欲しいユーザーにも最適です。Esploraを使えばこの2つの機能を一度にインストールできるため、それぞれを別々にセットアップしようと試行錯誤するよりも大幅に時間を節約できます。
必要とあれば軽量
個人用途のユーザーはBlockstream Esploraのライトモードを有効にすることで、スケーラビリティおよびDoS攻撃耐性の低下と引き換えにディスク容量の必要条件を大幅に引き下げることができます。ライトモードでもブロックエクスプローラーとElectrumサーバーの双方の機能が利用でき、パフォーマンスも一般家庭や小さいオフィスでの利用には十分すぎるほどです。
Blockstream Electrum Serverに接続する
弊社は可能な限り個人ユーザーも自身でElectrumサーバーを立ち上げることを推奨しますが、Blockstream公式のElectrumサーバーにも下記の設定で接続することができます。このサーバーの運用方針はBlockstream Explorerと同じで、ログ取得もトラッキングも行っておらず、Tor経由での接続に対応しています。
TCP connections
Address | blockstream.info |
Tor address v2 | explorernuoc63nb.onion |
Tor address v3 | explorerzydxu5ecjrkwceayqybizmjjznk5izmitf2modhcusuqlid.onion |
Mainnet port | 110 |
Liquid port | 195 |
Testnet port | 143 |
TLS connections
Address | blockstream.info |
Mainnet port | 700 |
Liquid port | 995 |
Testnet port | 993 |
Esploraの利用を開始するには
一番手っ取り早くEsploraを利用開始するにはDockerを使用します。自身でDockerイメージをビルドし、EsploraをBitcoinメインネット向けに設定します。
注意点として、インデックスの保管自体には圧縮後でおよそ600GBのストレージが必要ですが、最初に(非圧縮の)インデックスを作成する際におよそ1TBの空き容量が必要となります。