比特币社区最近讨论重新启用 OP_CAT 等操作码,同时推出Quantum Cats的NFT来支持限制条款的实现。启用OP_CAT和限制条款可以为比特币带来智能合约和可编程性。限制条款可以通过操作码、签名提交、APO等技术实现,如Staking的惩罚、保管库等。OP_CHECKTEMPLATEVERIFY(CTV)和其它操作码如APO可用于支持多种应用场景,如拥堵控制、状态通道等。但限制条款的实现需要遵循软分叉升级的规则,如taproot升级。因此,限制条款的升级需谨慎且需要时间。
近期比特币社区里掀起一波关于重新启用 OP_CAT 等操作码的讨论。Taproot Wizard 也通过推出 Quantum Cats 的 NFT、声称已经获得 BIP-420 的编号等,并赞成立法不少人的发言。国会宣称,启用了 OP_CAT 可以实现「限制条款」(covenants)、实现比特币的智能合约或可编程性。
如果你注意到“限制条款”一词并稍加搜索,就会发现这是另一个很大的兔子洞。你会发现你已经花了多年时间,除了 OP_CAT、还有 OP_CTV、APO、OP_VAULT 等等实现限制条款的技术。
那么,究竟究竟什么是“比特币”的“法律条款”?为什么它能影响到更多发展中国家的日常关注和讨论,从而实现比特币的持续发展?本文将介绍一个总体的介绍和讨论。
什么是「限制条款」
契约,中文译文“限制条款”,有时也译为“契约”,它能够给未来的比特币设置条件的行动。
当前的比特币脚本也涉及到限制的条件,例如花费的时间要输入合法的签名、入站符合的脚本等。但是只要用户能解锁,就可以将该UTXO花到任意他希望的地方。
而限制条款是,在此限制如何为整个过程提供支持,即为UTXO实现更多收入,也就是实现“专款专用”的努力;或一笔交易中送入其他输入条件等。
更为严谨的一点是,目前的比特币系统也具备目标限制条款,例如基于操作码的时间锁,就是通过内省的nLock或者nSequence字段来实现时间限制,而不是基本时间方面的限制。
因此,开发和参与者需要制定这些设计检查? 为了确保万无一失,我们建议用户遵循以下规则:首先,确保用户能够按照预先制定的计划进行操作,然后,完成预定业务流程。
所以相对而言直觉的是,这可以解锁更多的应用场景。
契约应用场景
确保质押的惩罚
限制条款中的一个最典型的例子是巴比伦在比特币质押流程中的斜线交易。
Babylon 的比特币质押过程是用户将自己的 BTC 资产在主链上一个特殊的脚本中,支出条件包括两种:
·Happy ending:经过确定时间后,用户用自己的签名即可解锁,即完成unstake的过程
·Bad ending:如果用户在某个时候被 Babylon 租用借阅安全性的 PoS 链上有双签等作恶行为,那么通过 EOTS(可提取的一次性签名,一次性可提取签名),可以解锁出这部分资产,并由重置的执行角色将一部分资产强制客户端销毁地址(斜线)
(来源:比特币质押:解锁2100万比特币,确保权益证明经济安全)注意这里的“强制发送”,这意味着即便可以解锁这笔UTXO,但该资产不能任意地在其他平台上流通,只能销毁掉。这样才能保证作恶的用户无法抢先用自己签名把资产转回给自己,以逃脱惩罚。
这个功能如果在OP_CTV等限制条款实现后,可以在staking 脚本的「bad ending」分支中增加OP_CTV等opcode的限制。
在OP_CTV启用前,Babylon就需要通过变通的方法,由用户 + 委员会共同执行以避免模拟实现限制条款强制执行的效果。
拥堵控制
一般情况下,网络交易平台会收取一定的手续费,交易矿池中还会收取一定的手续费,所以如果用户想要交易的话就需要支付手续费。
此时如果一个用户必须发送多份给多个收款方,就需要支付较高的费用。同时也会进一步提高整个网络的收入。
如果你想成为一个成功的企业家,你需要做的就是努力工作,不断创新,不断提高自己的企业文化,不断提升自己的企业形象,这样才能不断的提高自己的企业形象,不断的提高自己的企业形象,这样才能 …。
如下图所示,当对区块空间的需求减少时,进行交易变得非常昂贵。一组OP_CHECKTEMPLATEVERIFY,大批量支付处理商可以将其所有款项聚合到单个复杂为O(1)的事务中以进行确认。然后,一段时间后,当该区块空间的需求减少时,付款装置该UTXO中扩展出来。
(来源:https://utxos.org/uses/scaling/)
这个场景是 OP_CTV 这个限制条款我比较典型的一个应用案例。还有更多的应用案例可以从 https://utxos.org/uses/ 找到,除了上述拥堵控制,该网页列举了 Soft Fork Bets、Decentralized options、Drivechains、Batch Channels、Non Interactive Channels、Trustless Coordination-Free挖矿 Pools、Vaults、Safer Hashed Time Locked Contracts (HTLCS) Limits 等。
保管库
保管库(vault)是比特币应用中一类比较广泛讨论的应用程序场景,特别是在法律条款领域。因为日常操作需要在资金保管与资金使用需求之间进行结算,所以人们希望有一类保管金库的应用程序:可以保证资金安全,甚至即使账户被泄露(私钥),也能保证资金的使用。
基于实现限制条款的技术,保管库应用程序可以比较容易地构建。
以OP_VAULT 设计方案举例:在支出保管库中的资金时,需要先发送一笔交易上链。这笔交易表明了希望支出保管库的愿望,即「触发」,并在其中设置了条件:
如果一切正常,那么第二次交易就是最终的转账比特币。等待N个区块后,可以将资金进一步花费到任意地方。
如果发现这笔交易被窃取(或者是受到“西班牙攻击”时候的胁迫),在N个区块的取款交易发送前,可以立即登陆另一个安全地址(用户更安全的保护管)
(OP_VAULT 的流程,来源:BIP-345)需要注意的是,即使有限制条款的情况下,也可以构建一个保管库应用,一个辛苦的办法用私钥来准备以后花费的签名,然后销毁这个私钥。但限制仍然比较多,例如需要确保这个私钥已经销毁(类似于知识证明中的可信设置过程)因而缺乏灵活的等。
(OP_VAULT 和预签名式的保管库流程对比,来源:BIP-345)
更健壮和狡猾状态通道
一般可以认为,包括闪电网络在内的状态通道都揭示了其拥有和主链近乎等的安全性(在保证初始可观察最新状态、能够正常发布最新状态上链的情况下)。然而在有了限制条款之后,一些新的状态通道的设计想法可以在闪电网络之上更加健全或活跃。这其中比较知名的包括Eltoo、 Ark等。
Eltoo (称为LN-Symmetry)就是其中一个典型例子。这个技术方案取「L2」的谐音,为闪电网络提出了一种层,允许任何后来的通道状态取代之前的状态,而不需要惩罚机制,因此也可以同时避免类似的闪电网络节点那种必须保存多个之前状态以防止对手作恶。为了实现上述的效果,Eltoo 提出了SIGHASH_NOINPUT 的签名方式,即APO(BIP-118)。
而Ark旨在解决闪电网络的入站流动性和通道管理等问题。它是a joinpool 形式的协议,多个用户都可以在一定时间内接受一个计划作为交易对手,在链外进行虚拟UTXO(vUTXO)交易,但在链上共享一个UTXO从而降低成本。和保管库类似,Ark 也可以在当前的比特币网上实现;但引入了条款之后,Ark 可以基于交易降低必须要进行的交互量,实现更去信任化的单边。
契约技术概述
从上述应用我们可以,Covenants 协议更像一个效果而非单一的技术,因此有许多实现的技术方式。如果进行分类,其中包括:
类型:通用型、专用型
实现方式:基于Opcode、基于签名
提交归还:提交归还、非提交归还
其中,递归是指:通过条款的实现,可以产生再订单,也可以实现增强订单的能力,从而达到更高的层次。
一些基本的规则包括:
契约限制条款设计
从前面的介绍可以看出,目前比特币脚本的主要限制了解锁条件,没有限制该UTXO 如何进一步被花费。要实现限制条款,我们就要反向思考:为什么目前比特币脚本无法实现限制条款?
原因主要在于目前的比特币脚本无法读取交易本身的内容,即交易的“内省”(自省)。
如果可以实现交易的内省——检查交易的任何内容(包括输出),就可以实现限制条款。
该方案的设计思路也围绕在实现内部控制方面。
基于操作码 vs 基于符号
最复杂的一点是,增加一个或多个操作码(即一个操作码+多种参数,或多个不同功能的操作码),直接读取交易的内容。这个也就是基于操作码的思路。
而另外一种方法是,可以不在脚本中读取和检查交易自身的内容,而是可以利用交易内容的哈希——如果已经对这个哈希进行了签名,那么只要在脚本里改造示例OP_CHECKSIG等来实现对这个签名的检查,就可以间接的实现交易限制了。这个方法就是基于签名的设计方式。主要包括APO及OP_CSFS等。
载脂蛋白
SIGHASH_ANYPREVOUT(APO)是提议中的一种比特币签名方式。签名的一种方式是对交易的输入输出都承诺,但还有更为激进的方式,即SIGHASH,选择性地对一笔交易中的输入或输出进行承诺。
目前SIGHASH及其组合对交易输入输出的签名范围(来源《Mastering Bitcoin, 2nd》
如上图所示,除了适用到全部的数据 ALL 之外,NONE 的签名方式只适用到所有输入,而不用于输出;SINGLE 是在此基础上,只对适用到相同输入序号的输出。另外,SIGHASH 还可以组合,叠加了 ANYONECANPAY 修改符后,只适用于金额输入。
而 APO 的 SIGHASH 保留只对输出签名,而不对输入部分签名。这也意味着,用 APO 方式签名之后的援助项目中,可以在之后附加到每一个满足条件的 UTXO 上。
这种灵活的APO实现限制条款的理论基础:
可以预先创建或多笔交易
通过这些交易的信息构建出一个我们都可以请求出一个公签名的
本网站使用cookies来改善用户体验。
请勿,因为这个公钥没有对应的密钥,所以可以确保这些资产只能通过预先创建货币。例如,我们可以通过预先创建这些货币中的规定资产的去向,从而实现法律效力。
我们可以进一步通过对比以太坊的智能合约来理解:通过智能合约可以实现的也是通过指定条件,才能从合约地址中取款,而非靠一个EOA签名就任意的支出。从这一点运用,比特币通过签名机制的改进就可以实现这种效果。
但上述过程的问题在于计算时存在循环依赖,因为需要知道输入的内容来预签并创建交易。
APO 以及 SIGHASH_NOINPUT 实现这种签名方式的意义在于可以解决这种循环依赖问题,在计算时只需要知道(指定)交易的全部输出即可。
OP_CTV
OP_CHECKTEMPLATEVERIFY (CTV) ,即BIP-119,采用改进Opcode的方式。它负责承诺哈希作为参数,并要求任何执行的操作码工具都包含一组与该承诺匹配的输出。通过CTV,将允许比特币用户限制他们使用比特币的方式。
该提案最初以OP_CHECKOUTPUTSHASHVERIFY(COSHV)的名义推出,并且早期重点于创建拥塞控制交易的能力,因此该提案的批评也不够通用、过于具体地针对拥塞控制任务。
在上文提到的拥堵控制研究中,发送者Alice可以创建10个输出符号,这10个输出进行哈希,并生成一个包含 COSHV 的 tapleaf 脚本。Alice 还可以使用其他人的公钥来形成 Taproot 内部密钥,以允许他们在不泄露 Taproot 脚本路径的情况下的合作支出。
然后,Alice会给每个接收者一份所有10个输出的副本,以便他们都验证Alice的设置交易。当她们以后想要花费这笔钱付款时,她们其中的一个都可以创建一个包含承诺输出的货币。
在整个过程中,在Alice创建并发送设置交易时,Alice可以通过现有的异步通信方法(如电子邮件或云驱动器)发送这10个输出。这意味着接收者不需要在线,也不需要相互交互。
(来源:https://bitcoinops.org/en/newsletters/2019/05/29/#proposed-transaction-output-commitments)
和 APO 类似,地址也根据出资条件来构建,可以用不同的方式制作「锁」,包括:增加其他的钥匙、时间锁、可组合逻辑。
(来源:https://twitter.com/OwenKemeys/status/1741575353716326835)
CTV在此基础上提出了可以检查经过hash后的支出交易是否与定义的匹配,即将交易数据作为开“锁”的密钥。
我们将上面10个接收者的例子继续延伸,接收方可进一步将其地址密钥设置为已签名但未广播的tx发送给一些接收方地址,以此类推,形成一个如下图所示的树状结构。Alice 在链上只用1 utxo 的区块空间就可以构造一个涉及多个用户账户余额变更。
来源:https://twitter.com/OwenKemeys/status/1741575353716326835
如果其中的叶子是闪电通道、是冷藏库、是其他支付路径呢?那么这棵树提供单维多层的支出树扩展至多维多层次的支出树,能支持的场景将更为丰富和活跃。
来源:https://twitter.com/OwenKemeys/status/1741575353716326835
CTV 自提出以来,经历了 2019 年从 COSHV 更名、在 2020 年被分配了 BIP-119,并出现用于创建支持 CTV 合约的 Sapio,在 22、23 年得到了社区很多的讨论、更新,以及它的激活方案,目前仍是社区讨论中比较多的一个软分叉升级提案之一。
操作猫
OP_CAT 如开篇所介绍,这也是目前受关注的升级提案,实现对堆栈中的两个元素进行拼接(concatenante)。 虽然看上去很简单,但OP_CAT可以很灵活在脚本中实现很多功能。
目前比特币脚本里有OP_SHA256等哈希函数,所以如果能用OP_CAT实现两个元素拼接,就可以在脚本中实现merkle树的验证功能,这样就具备了轻客户端验证的能力。
另外的实现基础一到五年对于Schnorr签名的增强:可以对签名的支出签名条件设置为用户公钥和公开nonce的拼接;之后如果签名者如果想要另行交易,将这笔资金花费到境外,就不得不使用同样的nonce而导致的公开nonce。也就是通过OP_CAT实现了对nonce的承诺,确保已签名交易的透明度。
OP_CAT的其他应用场景还包括:Bistream、树形签名、抗量子的Lamport签名、保管库等等。
OP_CAT 本身并不是一个新的功能,它曾在比特币最早期版本中存在过,不过由于可能被攻击所利用在 2010 年开始被禁用。例如,重复使用 OP_DUP 和 OP_CAT 就可以很容易的让全节点在处理此类脚本时堆栈爆炸,参考这个演示。
因为当前的OP_CAT提案只在tapscript中启用,而tapscript限定了每个堆栈数据不超过520字节,所以不会产生以前的堆栈爆炸问题。还有一些开发者认为中本聪直接禁用OP_CAT可能过于苛刻。如果你的OP_CAT非常灵活,可能确实有一些会导致缓存应用场景在当前无法穷尽。
所以综合了应用场景和潜在风险等,OP_CAT最近受到很多关注,也有过PR review,是当前最热门的升级提议之一。
结语
相比之下,BitVM 是一种开源的分布式操作系统,它能够将应用程序和服务从基础设施中解放出来,从而为企业提供更强大的计算能力。
: 法律与法规的实施细则 1997 年 11 月 23 日,欧盟委员会,欧盟理事会,第 64 位议员,以及第 85 位参议员,都同意为该法案提供进一步的审议。
但限制条款也适用于一些计划外的恐惧或漏洞,因此对此也比较谨慎。另外,限制条款的升级也需要遵循公认的规则的软分叉升级。鉴于 taproot 升级时的情形,限制条款相关的升级也需要假以时日完成。
资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载