来源:Bitcoin Magazine;编译:邓通,金色财经
契约:通常是一种正式的、庄严的、具有约束力的协议。
这个词已经成为比特币领域最受关注的词之一。它们是自切片面包以来最棒的东西。它们是自原子弹以来最危险的东西。它们实际上不会对比特币的扩展产生任何影响,但它们很棒。
每个人对它们的态度都完全不同。我们有支持派、反对派和矛盾派。更糟糕的是,坦率地说,“契约”是一个非常模糊的术语,它描述了将被归类为契约的协议的成熟和具体提案。
提出的不同提案的功能之间的差异程度是巨大的。其中一些为在比特币之上构建的可能性创造了全新的设计空间,而其他一些严格来说根本没有添加任何新功能,它们只是优化了目前已经可能实现的事情,但具有很大的复杂性和开销。
让我们创建一个特定于比特币的新定义。
契约:任何保证使用契约脚本花费输入的交易所产生的部分或全部输出的脚本都必须符合某些特定标准,以使支出交易达到共识有效。
因此,从不太严格的意义上讲,如果比特币脚本目前通过要求授权证明(即加密签名)来限制谁可以使用一枚硬币,或者何时可以使用,即在时间锁到期后或使用者可以向哈希显示原像,那么契约脚本会限制如何使用它,即给谁、给哪个人多少等等。契约脚本甚至可以限制一枚硬币,使其必须花在另一个契约脚本上。
最后一部分是契约一词如此有争议的核心。许多人对添加一种新的“锁定”比特币的方式有很大保留,这种方式可以自我传播并确保未来的硬币以类似的方式受到限制。许多人担心这被用来破坏可互换性或建立审查制度。
我觉得有必要指出,这两件事现在都可以完成,不需要契约脚本功能,只需使用多重签名即可。任何机构都可以拒绝允许从交易所提款,除非他们使用 2-of-2 多重签名,该机构持有一个密钥。从那里,他们可以简单地拒绝签署发送到他们没有所需密钥的地址的交易,并以不透明的方式完全在链下建立他们想要的任何黑名单或白名单方案。
尽管如此,比特币用户仍然需要掌握和理解目前存在的所有不同契约提案之间的权力和灵活性差异。
为了限制比特币的使用方式,契约寻求实现两个核心功能,即自省和前向数据传输。
自省是指在尝试使用特定比特币时检查正在评估的交易的不同部分的能力。因此,例如,如果您想限制比特币,使其必须花到特定地址,则必须能够将输入的契约脚本中指定的地址与花费该硬币的交易输出中指定的地址进行比较。启用自省的操作码使我们能够将支出交易的不同部分与正在评估的脚本中包含的限制进行比较。自省对可以检查交易的哪些特定部分了解得越详细,它就越强大。
前向数据传递与自省有关,并且在许多方面是自省的结果,它允许您确保某些信息被传递并包含在每个新的契约脚本中,以便在下一次评估契约脚本时使用。这是通过使用自省来严格限制交易的某些部分来实现的,以至于它们必须包含所需的确切数据,否则它们将无效。您拥有的自省能力越强大,您传递数据的灵活性就越高,使用这些数据的灵活性就越高。
这只是接下来几周将要发布的一系列文章的第一篇介绍,这些文章将介绍所有处于成熟状态、最近受到关注或在概念上至关重要以至于开发人员同意其有用性但尚未具体设计的契约提案。这不会 100% 完成,但它会相对全面。其中一些也不是严格意义上的契约,但与它们紧密相关。
这些将包括:
检查模板验证
来自堆栈的检查信号
TXHASH
OP_VAULT
检查合同验证
猫
调整验证