客户端验证

Bob拥有与一个UTXO相关联的彩色币。他以一种方式花费了该UTXO,这种方式承诺了一项合约,该合约指示了彩色币的下一个接收者(或接收者们)将如何证明他们对这些硬币的所有权以便进一步花费它们。

实际上,Bob的P2C合约可能简单地承诺了一个或多个唯一的标识符,用于决定何时再次花费这些彩色币的UTXO,作为单次使用密封。例如,Bob的合约可能表明,Alice接收到的UTXO现在控制他一半的彩色币,而他另一半的彩色币现在分配给了与Alice和Bob的交易无关的另一个UTXO。这在阻碍区块链监视方面提供了显著的隐私保护。

当Alice想要将她的彩色币花费给Dan时,她首先需要向Dan证明自己控制着这些彩色币。Alice可以通过向Dan揭示她的P2C基本公钥和Bob选择的P2C合约条款来实现这一点。Alice还向Dan揭示了Bob用作单次使用密封的UTXO以及Bob给她关于彩色币的前任所有者的任何信息。简而言之,Alice向Dan提供了有关每笔彩色币先前转移的完整历史记录,每个步骤都与比特币区块链(但不存储任何特殊数据在链上——只是常规公钥)相关联。这个历史记录很像我们称之为区块链的常规比特币交易的历史记录,但彩色历史对于区块链的其他用户完全不可见。

Dan使用他的软件进行此历史记录的验证,称为客户端验证。值得注意的是,Dan只需要接收和验证与他想要接收的彩色币相关的历史记录部分。他不需要了解其他人的彩色币发生了什么情况——例如,他永远不需要知道Bob的另一半硬币发生了什么,那些Bob没有转给Alice的硬币。这有助于增强彩色币协议的隐私性。

现在我们已经了解了单次使用密封、支付到合约和客户端验证,我们可以看一下截至目前正在使用它们的两个主要协议,即RGB和Taproot资产。

Last updated