这是第一篇文章 系列 深入研究已经达到成熟程度的个人盟约提案,值得深入分解。
清理 (CTV)由杰里米·鲁宾(Jeremy Rubin)提出,用BIP 119提出,是最成熟和充实的盟约提案,不仅是我们将要涵盖的提案,而且在整个盟约提案中。正如我在本系列介绍文章中提到的那样,生态系统中人们对盟约有许多担忧,这些盟约太灵活,使事情能够使对比特币产生非常有害后果。
CTV的设计专门旨在严格限制其功能,以避免任何问题。要首先了解CTV的功能,我们需要了解比特币交易的各个部分。
这是比特币交易的高级视图。它具有输入或无需硬币(€)和输出,即事务在块中确认时将创建的新的未解决硬币。我们将要经历更多的部分,但这是交易结构的最高级别视图。
每个交易还具有整个交易的版本号字段,表明新版本的规则或功能的适用性。还有标记和标志,将其设置为特定值以指示交易使用SEGWIT。在此之后,输入计数是交易中的输入数量。然后是实际输入。
每个输入都包含交易的TXID,这些交易创造了未解决的硬币,这标志着该交易中的输出的花费,脚本图的大小以及脚本图(证明所用脚本的脚本的大小),证明所花费的输入的授权是由其锁定脚本规则的序列编号,以及最终用于遵循的序列编号。即自创建以来,输入已经存在一定数量的块或时间长度。
输出计数是下一个数据,即交易中的输出数。在此之后,实际输出包含分配给该输出的Satoshis数量,ScriptPubkey大小和实际ScriptPubkey,这是该输出的锁定脚本。最后,Nlocktime字段应用了适用于整个事务的时间戳或块高度的时间段值。
每个SEGWIT事务还包含一个见证部分,每个输入都有一个包含堆栈项目的相应证人,将在脚本堆栈上放置多少个东西,每个项目的大小字段以及要在堆栈上进行的实际数据项。
CTV的工作原理
CTV是一种OPODE,它可以实现所有盟约提案进行内省和正向数据的形式。它允许脚本进行预定的32个字节,并将其与支出交易的大多数字段相比。如果从实际支出交易中得出的哈希不匹配预定义的哈希,则交易无效。
它承诺的字段是:
- nversion
- Nlocktime
- 输入计数
- 所有序列字段的哈希
- 输出计数
- 所有输出的哈希
- 输入索引(输入在交易中具有的位置,第一输入,第二等)
这些都是CTV Hash所致力的所有字段,并且没有能力选择和选择。这是内省CTV的程度:“支出交易中这些字段的哈希都与所花费的输入的锁定脚本中的哈希相匹配,”就是这样。除实际输入外,哈希命令本质上是为了整个交易。哈希不包括输入是有原因的。为了将输出锁定到带有CTV的32个字节哈希,您需要知道确保您确保的交易的哈希是唯一花费它的方法。用花费的CTV锁定的输入将必须包括此哈希,以便对CTV进行验证。这需要进行该交易的哈希 前 您创建完整的交易。那是不可能的。
您还可以嵌套CTV脚本,即具有最初的CTV脚本提交的交易,其中还包括CTV脚本。这就是允许CTV“携带”数据的原因。在实践中,它所有的内容都是交易链中包含的任何数据。从理论上讲,您可以将其做到无限的深度,但是您的实践将其限制为有限的深度,因为必须从末端开始向后生成嵌套。这是因为每个级别或“ HOP”必须具有移动到下一个交易的哈希,否则您将无法首先创建锁定脚本。如果您还不知道下一次交易,则无法生成上一笔交易。
什么CTV对
CTV允许您限制输出,因此只能根据共识规则通过确切的预定义事务来花费。你们中有些人可能会问什么大不了,我们已经可以预先交易了。如果内省的水平是如此有限,以至于它只能完成我们只能预先签名的事情,那么增值是什么?
首先,预先签署的交易始终让关键持有人签署新交易并以不同的方式花费这些硬币的可能性。您必须相信,关键持有人不会执行此操作,或者将删除签名所需的密钥(您还必须信任它们)。 CTV完全消除了这一信任。一旦定义了支出事务并将输出锁定到该CTV哈希的创建,就不可能通过共识来执行其他方式。
目前,该信任的唯一方法是使用Multisig自己参与预先签名的交易。那么,您可以完全确定,除非您选择自己签署一个,否则不会以不同的方式花费其他有效的交易。问题在于参与的人更多,所有人更困难和不可靠的协调同时签署交易。过去的小尺寸成为一个完全不切实际的问题,可以可靠地解决。
CTV为人们提供了一种知道一组交易的方式,而无需每个人都必须同时上网即可签署它们。它可以通过允许每个人尽可能地将所需信息获取所需的信息,从而极大地简化了协调过程,并且一旦该人拥有每个人的信息,他们就可以创建CTV交易的链条而无需任何其他人的参与,并且每个人都可以验证并确定正确的结果是唯一可能的结果。
这本身就是非常有价值的,但是CTV也可以与其他Opcodes结合使用更有价值的东西,我们将在下一篇文章中看到。
结束思想
CTV是一项严格限制的盟约,可以使一定程度的内省和正向数据携带如此有限,以至于没有超过预先签署的交易可以完成的任何事情的实际功能。价值主张本身并不是启用新功能,而是大大提高了使用预先签署的交易的效率,可扩展性和安全保证。仅此一项就可以使用预先签署的交易来获得几乎所有当前部署的协议的巨大好处。
以下是一些项目,证明了如何彻底充实并探讨了该特定盟约与其他盟约的比较:
- 基本付款池 例子 经过 口吃。
- CTV库 执行 经过 詹姆斯·奥比恩(James O'Beirne),他继续提出OP_VAULT(仍然使用CTV)。
- 史蒂文·罗斯(Steven Roose)从第二个基于预先交易的方舟实现的概念验证端口,而是使用CTV。
- 这 Sapio语言 经过 杰里米·鲁宾 他本人是与CTV建立合同的更高级别的语言(也支持使用预先签名的交易)。
- 超时树,约翰·劳(John Law)对非常基本的Coinpool设计的提案。
- 许多其他 可能的协议,例如优化的谨慎日志合约(DLC),非交互性闪电通道一方可以在没有另一方的情况下开放,甚至可以使矿工共同汇总的方式。
在这一点上,CTV是一个非常成熟的提议,具有很高的价值,并且没有任何能够引起契约担忧的风险。这不仅应该是非常重视的,而且我个人认为应该在几年前激活。