“支付给合约”(Pay to Contract,P2C)

我们之前在第176页的“支付到合约(P2C)”中学习了有关P2C的知识,它成为比特币共识规则的Taproot升级的基础之一。简而言之,P2C允许支出者(Bob)和接收者(Alice)就某些数据达成一致,例如合约,然后调整Alice的公钥,使其承诺该合约。随时,Bob都可以揭示Alice的基础密钥和用于承诺合约的调整,证明她收到了资金。如果Alice花费了资金,这完全证明了她知道该合约,因为她只能通过知道调整(即合约)来花费收到的资金到P2C调整过的密钥。

P2C调整密钥的一个强大特性是,除了Alice和Bob之外的所有人看起来都像是其他公钥,除非他们选择透露用于调整密钥的合约。关于合约的任何信息都不会公开,甚至不会透露合约的存在。

P2C合约可以是任意长且详细的,条款可以用任何语言编写,可以引用参与者想要的任何内容,因为合约不会被全节点验证,只有包含承诺的公钥被发布到区块链。

在有色硬币的背景下,Bob可以通过花费相关的UTXO来打开含有他的有色硬币的一次性密封。在花费该UTXO的交易中,他可以承诺一个合约,指示下一个所有者(或所有者)必须遵守的条款,以便进一步花费硬币。新所有者不一定是Alice,即使Alice是Bob花费的UTXO的接收者,而Alice也已经根据合约条款调整了她的公钥。

因为全节点不会(也不能)验证合约是否正确执行,我们需要弄清楚谁负责验证。这就引出了客户端验证。

Last updated