术语表 /节点与软件
Signet
- Signet 是什么?
- Signet 是一种测试网络,其区块只有经指定签名者签名后才有效,因此能让十分钟的出块节奏保持稳定,而不是忽快忽慢。
规定于 BIP-325。
Signet 以可预测性换取无需许可的挖矿。Bitcoin Core 在2021年1月发布的0.21.0版本中加入了它,此后公共默认 signet 一直以大约十分钟一个区块的节奏出块。如果您想在与主网相近的条件下试用钱包、闪电网络通道或商户结账流程,应当选择这个网络。
运作方式
Signet 在比特币常规的有效性检查之外,只增加了一项要求:区块必须带有有效签名。
BIP325 由 Karl-Johan Alm 和 Anthony Towns 撰写,定义了 signet 挑战,它就是一段比特币脚本,区块的解答必须满足这段脚本。解答附在币基交易内的区块 segwit 承诺中,因此区块格式没有任何变化,现有软件无需修改即可解析 signet 区块。工作量证明仍然会执行,但难度很低,因为决定区块何时有效的是签名,而不是算力。
由于挑战只是普通脚本,它可以是任何形式,从单个公钥到门限多重签名都可以。公共默认 signet(即只需传入 signet 选项、无需其他配置即可加入的网络)由这两位作者以1/2多重签名运营,监听端口为38333。地址沿用测试网的前缀,因此已经支持 tb1 字符串的钱包通常无需任何改动即可处理 signet。
任何人都可以启动私有 signet。传入自定义挑战脚本会创建一个独立的网络,其消息魔数由该脚本派生,这意味着两个自定义 signet 不会意外地互相通信。这正是 signet 区别于其他所有选项的特点:无需征得任何人许可,也无需购买挖矿硬件,就能得到一个真正的多参与者网络,其中有多台机器和真实的传播延迟。
在哪里会遇到它
新的共识功能在登陆主网之前,会先在 signet 上公开接受检验。
Taproot 在主网于2021年11月的区块709,632处激活之前很久,就已在默认 signet 上运行,这在很大程度上解释了钱包为何能在激活时就推出 taproot 支持,而不是几个月之后。每个进入实现阶段的提案都遵循同样的模式:代码先在人们可以低成本破坏它的地方运行。
自定义 signet 也有各自的用途。Mutinynet 是一个公共 signet,每30秒产生一个区块,目的是让闪电网络开发者不必整天等待确认。其他 signet 则用于演练特定场景,因为掌握签名密钥的人也可以随时有意制造一次区块链重组,并观察钱包如何应对。
对购买比特币的人来说,signet 看不见,却仍然相关。水龙头会免费发放测试币,所以这个网络上的任何东西都没有价值,但您所安装的 Sparrow、Core 或闪电网络节点的版本,几乎可以肯定事先都经过了它的检验。
Signet vs regtest
Signet 是有陌生人参与的共享网络;regtest 是只存在于您自己电脑内部的区块链。在 regtest 上,您用一条命令就能自己挖出区块,一秒钟内就能得到一百次确认。在 signet 上,您和其他人一样要等待签名者,交易通过您无法控制的节点传播,手续费估算的表现也与主网一致。Regtest 回答的是您的代码能否运行;signet 回答的是它能否经受住真实网络的考验。