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