Signal
📡 Signal|Bitcoin Core 30.4、版番号の 24 ビットを採掘の余白に
Bitcoin Core の保守版 30.4 と 29.5 が公開された。30.4 は BIP 323 で版番号の 24 ビットを採掘の余白に回す。古いノードへの影響と、DNS シードの削除などの変更をまとめた。

Bitcoin Core の開発者は10月26日 (UTC)、保守版の 30.4 と 29.5 を GitHub で公開した。30.4 には BIP 323 が入り、ブロックヘッダーの版番号 (nVersion) のうち 5〜28 番目の 24 ビットを、ソフトフォークの合図ではなく採掘の「ナンス」の余白として扱うようになる。
ビットコインのプロトコルを変える更新ではなく、ノードが版番号をどう読むかの更新だ。採掘機が版番号を計算の余白に使うことを正式に認め、そのビットを見ても「未知のソフトフォークが始まった」と警告しないようにする。
24 ビットを、合図から採掘の余白へ
ビットコインのブロックヘッダーには、ソフトフォークの賛否を採掘者が示すための版番号の欄がある。BIP 9 はこの欄のビットを使った合図の手順を定め、2018 年の BIP 320 は、そのうち 16 ビットを採掘機の計算の余白として切り出していた。
BIP 323 は Matt Corallo 氏が書いた提案で、余白を 24 ビットに広げ、BIP 320 を置き換える。理由として本文は、16 ビットでは足りず、一部の採掘機がヘッダーの時刻の欄 (nTime) の 7 ビットまで余白に使い始めていることを挙げる。時刻の欄を余白に回すより、合図にほとんど使われていない版番号の欄を回すほうが望ましいとしている。
採掘機 (ASIC) は、ヘッダーの数字を少しずつ変えながらハッシュを計算し続ける。ヘッダーの中に変えてよい数字が多いほど、制御側から新しい作業を受け取る回数を減らせ、機器の設計を簡単にできる。BIP 323 の本文は、取引やマークルツリーの処理を採掘機から切り離す「ヘッダーだけの採掘」がすでに広く使われていることを前提にしている。
古いノードは警告を出しうる
30.4 は、版番号の 5〜28 番目のビットが立ったブロックを受け取っても、未知の展開についての警告を出さない。29.5 にはこの変更は入っていない。
BIP 323 の本文は互換性の項で、更新していないノードはこれらのビットをソフトフォークの合図と解釈し、未知のソフトフォークの警告を出す可能性があると書いている。合意の規則は変わらないので、古いノードがブロックを拒むことはない。一方で、今後のソフトフォークはこの 24 ビットを合図に使うべきでないとしており、合図に使える欄は 0〜4 番目の 5 ビットに絞られる。BIP 323 の状態は、まだ草案の段階にある。
そのほかの変更
30.4 と 29.5 に共通する変更も 2 つある。
1 つは DNS シードの削除だ。ノードが最初に接続先を探すための DNS シードのうち、Pieter Wuille (sipa) 氏が約 15 年運用してきたものが一覧から外れた。本人は PR で、32.0 の公開後をめどにサーバーを止める予定だと説明している。
もう 1 つは接続の扱いだ。シードから得た接続先には、最初から暗号化通信の v2 transport (BIP 324) で接続を試みるようにした。PR の説明によると、到達できるノードの約 8 割がすでに BIP 324 に対応しており、相手が非対応なら従来の方式でつなぎ直す。送信が止まったまま 20 分以上データを受け取らない相手との接続を切る変更も入った。
次に見るもの
確認先は bitcoincore.org のダウンロード置き場 (bin/bitcoin-core-30.4/) だ。28日朝 (日本時間) の時点で 30.4 と 29.5 の配布ファイルはまだ置かれていない。配布ファイルと公式サイトのリリースの告知がいつ出るかを見る。採掘の側では、版番号の 5〜28 番目のビットを使うブロックがどれだけ出てくるかが、BIP 323 が実際に使われているかの目安になる。
ことば
- ナンス — ブロックのハッシュが条件を満たすまで、採掘者が少しずつ変えていく数字。ヘッダーの中に変えてよい欄が多いほど、採掘機は 1 つの作業から多くの計算を引き出せる。
- BIP 9 — ソフトフォークを有効にするかどうかを、採掘者がブロックヘッダーの版番号のビットで示す手順。2017 年の SegWit の有効化などで使われた。
- DNS シード — 新しく起動したノードが、最初の接続先となるほかのノードのアドレスを探すために問い合わせるサーバー。Bitcoin Core には複数の運用者のシードが登録されている。
🔗 一次ソース
Bitcoin Core 30.4 のリリースページ (GitHub・10月26日・BIP 323 の反映と変更一覧)GitHub
Bitcoin Core 29.5 のリリースページ (GitHub・10月26日・変更一覧)GitHub
BIP 323「24 nVersion bits for general purpose use」(GitHub・本文の動機と互換性)GitHub
PR #35691「chainparams: delete my DNS seed」(GitHub・sipa 氏の説明)GitHub
PR #35766「p2p: Assume v2transport for addresses from seeds」(GitHub)GitHub