Signet:权威测试网络

没有已知的方法可以在没有引入经济激励的情况下提供一个高度可用的基于无许可 PoW 的系统,因此比特币协议开发者开始考虑替代方案。主要目标是尽可能保留比特币的结构,以便软件可以在测试网络上运行,而不需要进行太多的更改,但同时也要提供一个有用的环境。次要目标是制定一个可重复使用的设计,以便新软件的开发人员可以轻松创建自己的测试网络。

比特币核心和其他软件中实现的解决方案被称为“signet”,由 BIP325 定义。signet 是一个测试网络,每个区块都必须包含证据(例如签名),证明该区块的创建是由可信任的权威机构批准的。

在比特币上进行挖矿是无许可的——任何人都可以做——而在 signet 上进行挖矿是完全许可的。只有获得许可的人才能这样做。这对于比特币的主网来说是完全不能接受的改变——没有人会使用那种软件——但对于一个测试网络来说是合理的,其中的币没有价值,唯一的目的是测试软件和系统。

BIP325 的 signet 设计旨在非常容易创建自己的 signet。如果你不同意别人如何运行他们的 signet,你可以启动自己的 signet 并连接你的软件到它上面。

默认的signet 和自定义 signet

比特币核心支持一个默认的 signet,我们相信这是目前撰写时最广泛使用的 signet。它目前由该项目的两名贡献者运营。如果你启动比特币核心并使用 signet 参数而没有其他与 signet 相关的参数,那么你将使用这个 signet。

截至撰写本文时,默认的 signet 有大约 150,000 个区块,大小约为一千兆字节。它支持与比特币主网相同的所有功能,并且还用于通过比特币审判项目测试提议的升级,该项目是比特币核心的软件分支,仅设计用于在 signet 上运行。

如果你想使用不同的 signet,称为自定义 signet,你需要了解确定区块何时被授权的脚本,称为挑战脚本。这是一个标准的比特币脚本,因此它可以使用多重签名等功能,允许多人授权区块。你可能还需要连接到一个种子节点,该节点将为你提供自定义 signet 上对等节点的地址。例如:

bitcoind -signet -signetchallenge=0123...cdef -signetseednode=example.com:1234

截至撰写本文时,我们通常建议将挖矿软件的公开测试放在 testnet3 上进行,将所有其他比特币软件的公开测试放在默认 signet 上进行。

要与你选择的 signet 进行交互,你可以使用 bitcoin-cli 的 -signet 参数,类似于你使用 testnet 的方式。例如:

$ bitcoin-cli -signet getblockchaininfo
{
 "chain": "signet",
 "blocks": 143619,
 "headers": 143619,
 "bestblockhash": "000000c46cb3505ddd296537[...]ad1c5768e2908439382447572a93",
 "difficulty": 0.003020638517858618,
 "time": 1684530244,
 "mediantime": 1684526116,
 "verificationprogress": 0.999997961940662,
 "initialblockdownload": false,
 "chainwork": "[...]000000000000000000000000000000000000000000019ab37d2194",
 "size_on_disk": 769525915,
 "pruned": false,
 "warnings": ""
}// Some code

Last updated