Signet は Bitcoin ソフトウェアの共同テストに使われ、独自のチェーンとテスト用コインを持ちます。新しいブロックは通常のルールと Proof of Work に加え、ネットワーク固有の条件を満たす必要があります。標準 Signet では署名に基づく条件です。テストを管理しやすい反面、メインネットとは信頼の前提が異なります。
アンナは、新しいウォレットが送金直後とブロックでの承認後に何を表示するか確かめたいと考えています。ウォレットは、ビットコインを受け取ったり送ったりするためのアプリや機器です。ブロックは、共有する履歴に追加する取引のまとまりです。Signet ならテスト用コインを使えます。例えば faucet は、実験用のコインを配布するサービスです。これは本番の主ネットワーク、mainnet の BTC ではなく、プロトコルが本物のビットコインと交換してくれるわけでもありません。アドレスにも注意が必要です。Signet は一部のテスト用形式を Testnet と共有するため、見た目だけでは正しいネットワークを特定できません。 [1] [2] [8]
Karl-Johan Alm と Anthony Towns が BIP 325(Signetを説明する技術文書)を作成し、Bitcoin Core v0.21.0 が Signet に対応しました。ソフトウェアには標準の公開ネットワークがありますが、チームで独自のブロック作成条件や参加者を設定することもできます。そのため「Signet を使っている」だけでは不十分で、双方が同じネットワークを使う必要があります。ネットワークメッセージの識別子は、その条件から導かれ、プロジェクト名で決まるものではありません。 [1] [3] [4]
Full Node は自分でルールを検証するノードです。通常どおり取引と Proof of Work、つまりブロック作成に必要な計算作業の結果を調べ、さらに Signet の追加条件を確認します。標準ネットワークではマイニングだけでは足りず、適切な署名も必要です。ブロックの概要を示すヘッダーだけでは、この追加検証を代替できません。必要なデータはブロック内部にあるからです。 [1] [9]
デジタル署名を使うと、対応する秘密鍵の保有者がメッセージを承認したことを検証できます。秘密鍵は秘密の数値であり、検証のために公開する必要はありません。署名条件を満たせる人はブロックの追加に影響を与えます。署名を遅らせたり、取り込む取引を制限したりできます。しかし、それでアンナの秘密鍵を入手したり、任意の無効な取引を彼女のノードに受け入れさせたりはできません。他のルールは引き続き適用されます。参加を管理できることはテストに便利であると同時に、Signet が mainnet の安全性モデルのコピーではない理由でもあります。 [1] [9]
開発では、一度送金が成功しただけでは足りません。ブロックが止まった場合や、ノードが最近のブロックを別の有効な分岐に置き換える再編成が起きた場合に、アプリがどう反応するかも知る必要があります。調整したテストでその状況を作り、ウォレットが承認状態を正しく更新するか確認できます。Signet は無停止の運用を約束しません。失敗する状況も計画的に試しやすくする仕組みです。 [1] [5] [6]
Testnet では誰でもブロック作成に参加でき、その変動が共同実験を難しくすることがあります。一方、Regtest は必要なときに簡単にブロックを作れるため、自分たちの自動テストに向いています。複数のコンピューターを接続することもでき、単独のプログラムに限られません。Signet は別の目的、独立した参加者が合意したブロック作成条件のもとで長く協力するためのものです。どのモードも、他のあらゆる試験を不要にするわけではありません。 [1] [2]
Challenge は、ブロックが何を示すべきかを定める短いプログラム、スクリプトです。単一の署名や Multisig、複数の鍵のうち合意した数の署名を要求できます。独自の Signet では、署名なしで満たせる条件 OP_TRUE も使えます。この場合は空の解で十分です。したがって「すべての Signet が常に署名者を必要とする」ではなく、「追加のスクリプト条件がある」と説明するのが正確です。 [1] [9]
BIP 325 は空でない解を、ブロック最初の取引である Coinbase Transaction の特別なデータに入れます。この名称は同名の取引所とは無関係です。データは BIP 141 のコミットメント、つまり署名などを含む witness データとブロックを結び付ける記録を拡張し、0xecc7daa2 の印で識別されます。署名者への追加の通常送金ではありません。自明に満たせる条件なら追加の解を省略できますが、他のブロックルールまで自動的に省略できるわけではありません。 [1] [9] [10]
署名するメッセージにその署名自体が含まれると、循環依存になります。そこで検証では解を空にした取引群の変更済み指紋と、二つの仮想取引を使います。これらは計算用であり、追加送金として送られるものではありません。また、Proof of Work の探索中に変える数字であるヘッダーの nonce は署名対象外です。この値を変えても再署名は不要ですが、それはブロックの他の部分を自由に変えてよいという意味ではありません。 [1] [9]
アンナはまず、ウォレット、ノード、ブロックエクスプローラーが同じテストネットワークを使っているか確かめます。ブロックエクスプローラーは、特定のネットワークの取引やブロックを調べるためのアプリです。Bitcoin Core では getblockchaininfo と signet_challenge フィールドで設定条件を確認できます。次に「送信済み」の表示だけでなく、実際の承認を観察し、独立したテスト用ウォレットを使います。成功はその条件下でのアプリの動作を示すものです。本番資金の安全や mainnet の攻撃者への耐性を保証しません。 [7] [8]
理解を深めるには、この項目とあわせて次もお読みください Nakamoto Consensus, Block Propagation, Initial Block Download, Block Weight, Bitcoin, Bitcoin Core. 次の項目からも参照されています Testnet, Miniscript, Dead Man’s Switch.