ビットコインを使用したことがある方でも、Testnetを触ったことのある方は珍しいかと思います。Testnetとはその名の通りテスト用のネットワークで、ビットコインノードの設定を変えることでテストネット用のブロックチェーンとビットコインが使用でき、何かを試してみたり開発する際に使われてきました。

しかし、Testnetはブロックの生成間隔が不安定だったり、コインが入手しにくいなど決して使い勝手が良いものとは言えなくなってしまいました。そこで開発用途・テスト用途として使われるRegestという「お一人様モード」と、SignetというTestnetに代わる新たなテスト用ネットワークについて紹介します。

MAINNETと同じ仕様が災いするTESTNET

ビットコインのTestnetは別のブロックチェーンでビットコインとほぼ同じことをしています。というのも、TestnetのブロックもPoWでマイニングされるため、ブロックを進めるにもコインを手に入れるにも、マイニングが必要なのです。

テスト用のコインを手に入れるにはフォーセットなどからマイニングしたものや寄付されたものを分けてもらうしかありません。しかしTestnet用のフォーセットは枯渇気味で、大きな量を入手するのは困難という現実があります。(量がそれほど関係するユースケースも限られますが。) また、無価値でなければテスト用と言えないのに、あまりの希少性に取引されてしまう懸念があります。

ブロックが生成される間隔もMainnetのビットコインと比較してとても不安定で、突如ASICがマイニングに参加したり消えたりすることでハッシュレートが乱高下したりします。さらにMainnetのビットコインでは6承認待てばリオーグされないと考えて支障ありませんが、Testnetだと深いリオーグが発生することもあるようです。

チェーンの立ち往生対策として、20分間ブロックが発見されない場合は特別に1ブロックだけ難易度が下がるなどの仕組みが用意されていますが、それでも約10分に1ブロックという常識が通用しないので使い勝手がよくありません。

結果としてTestnetはテスト用途としては使い勝手が悪いという皮肉な現実になっています。

ちなみに現在のTestnetのハッシュレートは約620TH/sと最先端のASIC6台分ほどです。

お一人様で自由自在なREGTEST

ビットコインを利用したアプリの開発などで自分だけでテストできれば十分という場合には他者も利用するTestnetを使う必要はありません。

実は2014年のBitcoin Core 0.9.0からRegtestというモードが実装されており、これはローカル環境に自分だけのオレオレブロックチェーンが生成されるものとなっています。

ブロックを生成するタイミングなどすべて自由自在に操ることができるため、様々なエッジケースのテストもでき、コインも簡単に入手可能、必要なときに必要なだけブロックチェーンを進められて時短にもなるというとても便利なモードです。

1人でできる検証はRegtestで事足りるので、他者の協力がいらない用途におすすめです。ぼっち開発はだいたいこれです。

ブロック発行者が限定されたSIGNET

Testnetが目指していた不特定多数が参加するテスト用ネットワークを実現するにあたり、マイニング周辺の仕様を更に変更したものにSignetというネットワークがあります。主に先述したブロック生成間隔の不安定さやリオーグの可能性を修正するため、マイニングへの参加を事実上のホワイトリスト(中央集権的に選ばれたマイナーのみ採掘可能)にしました。

ブロックを検証する際、通常のPoWの検証に加えてネットワーク生成時に指定された鍵を持っていることを証明する署名(Sig)の検証が追加されたのでSignetという名前が付きました。実は不特定多数が利用する既定のSignetを使わずに自分のチーム専用のsignetを立ち上げるなどといった運用が可能です。

これらの工夫によって、Signetは本来のTestnetの目的である不特定多数のユーザーのいる環境で金銭的価値のないコインで実験や学習、動作確認をすることに最適化されています。

Testnet同様、マイニングの権限がないユーザーはフォーセットなどからコインを入手する必要がありますが、既定のSignetに関してはコマンドラインから使えるツールがBitcoin Coreに同梱されています。2021年春のBitcoin Core 0.21.0でリリースされたばかりの機能にしては至れり尽くせりだと感じるのは私だけでしょうか。

まとめ

・TestnetはMainnetと同じ仕様だが規模が小さいことにより、ブロック生成ペースが不安定であったり、6ブロックを超えるリオーグの恐れがあったり、コインの流通が少なく入手しにくいという問題点がある

・かなり昔から自分専用ブロックチェーンを立ち上げる機能がビットコインノードのRegtestモードで使用でき、ほとんどの開発はこれで事足りる

・(不特定)多数のユーザーにテストしてもらいたいがMainnetで現実の資金を扱いたくないというTestnetの本来の目的は、Signetというマイニングできる主体を限定したネットワークを利用するか独自に立ち上げることで達成できる