124 / 736SIGNET

Signet

共同测试 Bitcoin 应用的试验场

Signet 是独立的测试网络,可用来试验 Bitcoin 钱包和服务,而无需花费真正的比特币。生成区块还要满足事先约定的额外条件,因此参与者更容易协调正常运行和人为安排的故障。

Signet 用于共同测试 Bitcoin 软件,有自己的链和测试币。除了通常的规则与 Proof of Work,新区块还须满足网络的特殊条件;默认 Signet 的条件以签名为基础。这有利于组织测试,但采用的信任模型不同于主网。

安娜想知道,新钱包在发送付款后,以及付款进入区块得到确认后,会显示什么。钱包是接收和发送比特币的应用程序或设备。区块把交易组成一批,加入共同历史记录。在 Signet 上,她可以使用测试币,例如从 faucet 获取。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 不是主网安全模型的复制品。 [1] [9]

开发工作不能只看见一笔成功付款。团队还要知道,区块停止产生或发生重组时,应用会怎样应对。重组指节点用另一条有效分支替换最近的区块。协调好的测试可以制造这种情况,观察钱包是否正确更新确认状态。因此,Signet 不承诺永不中断;它也让故障测试变得更可预测。 [1] [5] [6]

Testnet 的区块生产是开放的,出块波动可能使共同试验更复杂。Regtest 则允许按需轻松创建区块,适合自己的自动化测试。它也能连接多台电脑,不一定是孤立运行的程序。Signet 满足另一种需求:独立参与者在约定出块条件下开展较长期的合作。任何一种模式都不能取代其他所有测试。 [1] [2]

Challenge 是一段脚本,也就是描述区块需要证明什么的小程序。它可以要求一个签名,也可以要求 Multisig,即多个密钥中的约定数量签名。自建 Signet 还可以使用 OP_TRUE,这个条件无需签名就能满足,此时空解就够了。因此,准确的说法是附加脚本条件,而不是每个 Signet 都始终需要签名者。 [1] [9]

BIP 325 将非空解放在 Coinbase Transaction 的特殊数据中。Coinbase Transaction 是区块的第一笔交易,这里的名称与同名交易所无关。这些数据扩展 BIP 141 密码学承诺(commitment),将区块与包括签名在内的 witness 数据绑定,并使用标记 0xecc7daa2。它们不是另付给签名者的一笔普通款项。对于可直接满足的简单条件,可以省略附加解,但不能因此自动免除区块的其他规则。 [1] [9] [10]

如果被签名的消息包含这个签名本身,就会形成循环依赖。因此,验证会将解清空,计算修改后的交易指纹,并使用两笔虚拟交易。它们服务于计算,不会作为额外付款发送出去。签名也不涵盖区块头的 nonce,也就是寻找 Proof of Work 时不断改变的数字。改变它不需要重新签名,但这不意味着区块的其他内容可以随意修改。 [1] [9]

安娜首先确认钱包、节点和区块浏览器使用同一个测试网络。区块浏览器是用于查询特定网络上的交易和区块的应用。在 Bitcoin Core 中,getblockchaininfo 及其 signet_challenge 字段可以显示设定的条件。接着,她观察实际确认,而不只是“已发送”提示,并使用独立的测试钱包。成功试验说明应用在这些条件下的表现,却不保证资金安全,也不证明它能抵御主网攻击者。 [7] [8]

要获得更完整的理解,请将本词条与以下词条结合阅读: Nakamoto Consensus, Block Propagation, Initial Block Download, Block Weight, Bitcoin, Bitcoin Core. 反向关联还来自: Testnet, Miniscript, Dead Man’s Switch.

DOC · 001BIP 325 — Signet规范 DOC · 002Bitcoin Core — Signet文档 DOC · 003Bitcoin Core 0.21 release notes文档 DOC · 004Bitcoin Wiki — Signet文档 DOC · 005Bitcoin Optech — Signet文档 DOC · 006Bitcoin Core — signet miner文档 DOC · 007Bitcoin Core — getblockchaininfo RPC文档 DOC · 008Bitcoin Core v29.0 — Signet tools文档 DOC · 009Bitcoin Core v29.0 — Signet verification文档 DOC · 010BIP 141 — Segregated Witness规范
修订日期: 来源优先 · 非投资建议