Bitcoin Core の txindex を動かしたことのある皆さんなら、ハードディスクを数十 GB も食われるのが、決して小さな問題ではないことはご存じでしょう。
昨夜 22:20(北京時間)、Bitcoin Core の PR
#35531 が master にマージされました。作者のメインネットテストでは、txindex の容量が約 66GB から 26GB に圧縮され、約 40GB 節約されています。再構築も 1 時間 50 分から 1 時間 19 分に短縮され、getrawtransaction のクエリも約 0.2ms のままでした。
どうやって節約したのでしょうか。従来はデータベースのキーに完全な 32 バイトの txid をそのまま格納していましたが、新方式では 5 バイトのソルト付き SipHash プレフィックスを使い、さらに取引位置を詰めて格納します。ハッシュプレフィックスが重複した場合は、もう一度読み込んで完全な取引を照合します。取引を取り違えるわけではありません。
40GB がまるでただで手に入るように見えますが、まずは本番ノードを急いで変更しないでください(笑)。
この変更は master に入っただけで、milestone は 32.0 です。まだ安定版には入っていません。既存のインデックスデータベースは引き続き使用でき、新しいレコードにはより小