Unsplashこんばんは。最近、ライトニングノードをいくつか立ち上げる理由があり、自分がコントロールするノードそれぞれにビットコインノードを併設するのは負担が大きく感じたため、ライトニングノードを遠隔のビットコインノードに接続するNeutrinoという動作モード(いわゆる「ライトクライアント」)を活用することにしました。ところが、Neutrinoを通してライトニングノードにブロックチェーンのデータを送ることができるビットコイン実装はbtcdなのです。Coreの他にもbtcd、bcoin、Bitcoreなどがあり、bcoinなら自分でも使用したことがありますが、btcdは同期が非常に遅いことに気が付きました。同期を開始して5日以上経ちましたが、まだ2019年6月の段階なので、あと2~3日かかりそうです。Coreを最初から同期したときは12時間前後で完了しました。ビットコインノードの同期がどのように進歩してきたか、btcdはなぜ同期が遅いのかなど、感じたことや調べたことをまとめてみました。ビットコインの分散性を維持する上で、ブロックのサイズを小さくする目的は同期コストや検証コストを下げることなので、ブロックのサイズに関係なく同期や検証の速度を上げる技術は非常に重要なものとなります。Lopp氏がビットコインの実装ごとの同期パフォーマンス(所要時間)を計測した記事が出ていました。全ての実装に共通の設定として過去全ての署名を検証する設定を行い、また実装ごとにCPUとRAMの使用量をできる限り大きくしたそうです。+28%)計測した結果、ネットワークやストレージ、RAMではなく、CPUがボトルネックだったそうです。-44%)パフォーマンスの改善になると思って導入したUTXOキャッシュが実は改善にならなかったため排除した結果、そこそこ早い同期が実現しました。Coreには遠く及びません。story有料プランに切り替えて頂くと続きを読むことができます。readビットコインの相続を支援するプロダクトを俯瞰するビットコインの相続は今後需要が大きくなっていく重要な課題です。2024年5月4日(土)豊かな知識とともに。