用語集 / ノードとソフトウェア
Regtest
別名はRegression test mode、レグテストです。
- Regtestとは?
- Regtestは、自分のマシン上で動作するプライベートなビットコインネットワークで、誰か他の人がブロックを生成するのを待つのではなく、コマンドでブロックをマイニングするネットワークです。
ここでは何も誰とも共有されません。チェーンは独自のジェネシスブロックから始まり、マイニング難易度はソフトウェアが許容する最も低い値に設定されており、1つのコマンドで1秒未満で100ブロックを生成できます。ここは、ウォレットソフトウェア、決済プロセッサー、ライトニングネットワークの実装が、いずれも実際の資金に触れる前にテストされる場所です。
仕組み
bitcoindをregtestオプション付きで起動すると、ピアも履歴もないチェーンが作成されます。
このネットワークにはDNSシードもデフォルトで接続するノードもないため、2つ目のインスタンスを起動して手動で接続しない限り、自分のブロックチェーン上に1人でいることになります。デーモンはピア用にポート18444、RPC呼び出し用に18443をリッスンし、データを別のregtestディレクトリに保存し、bcrt1という接頭辞のアドレスを発行するため、価値のあるものと混同する余地はありません。
ブロックは要求したときに生成されます。generatetoaddressコマンドは指定したアドレスへマイニングし、通常の最初の操作は1ブロックではなく101ブロックをマイニングすることです。coinbase出力は、その上にさらに100ブロックが積み重なるまで使用できないからです。101番目のブロックが存在して初めて、テストの残りを構築するための使用可能なコインが手に入ります。
他の2つのパラメーターも意図的にメインネットとは異なります。regtestは同じ50BTCのブロック補助金で始まりますが、210,000ブロックごとではなく150ブロックごとに半減するため、数千ブロックをマイニングするセッションでは報酬がゼロになり、新たに資金を用意できなくなります。また、難易度の下限が非常に低いため、再編成を自由に仕組むことができます。invalidateblockは選択した任意のブロックからチェーンを巻き戻し、reconsiderblockはそれを元に戻します。これは、6ブロックの再編成がウォレットの残高に何をもたらすかを観察する唯一の実用的な方法です。
どこで使われているか
regtestは、ビットコイン自身のテストスイートが稼働するネットワークです。
Bitcoin Coreの機能テストはregtestノードを起動し、シナリオを通して操作し、再び破棄します。これにより、ソフトウェアへの変更がリリース前に確認されます。Core LightningとLNDもチャネルのロジックについて同じことを行い、Polarはそのワークフローにグラフィカルなフロントエンドを提供するため、数回のクリックでノートPC上に小さなライトニングネットワークを作成できます。BTCPay Serverがregtest開発スタックを同梱しているのも同じ理由です。顧客の支払いでチェックアウトの不具合を発見するようなことがあってはなりません。
ウェブサイトにビットコイン決済を組み込む場合、最初の100件の支払いはここで行うべきです。確認のタイミングを正確に制御でき、滞留したトランザクションや手数料の引き上げをどちらも費用をかけずにシミュレートでき、そうでなければ年に一度の不意打ちとなる再編成を事前に演習できます。
ビットコインを購入したり保有したりする人として、regtestに意図的に接続することは決してありませんが、その名前を知っておくことには価値があります。bcrt1で始まるアドレスはビットコインのアドレスではなく、そのようなアドレスを表示するウォレットは、目の前のマシン以外のどこにも存在しないプライベートチェーンに接続されています。