原作者:WeiZhang
很多人认为,比特币不像其他区块链那样对智能合约友好。这其实是一个误解。
比特币脚本语言被设计成很原始的样子。通过使用一组OP代码,让该语言拥有了最大的安全性,同时通过有意的限制将受到的攻击降至最低。也正是这样,导致一些人低估比特币的真实潜力。如果只关注比特币脚本语言,协议的其他许多有趣功能可能会被忽视。要了解比特币如何对智能合约友好,需要深入了解比特币交易以及比特币交易在整个阶段其作用的。
通过这样做,有许多方法可以在比特币上的构建智能合约。我们可以粗略地把它们概括为
1锁定脚本,
2使用sighashflags,以及
3支付通道。
本文主要说明支付渠道如何能使比特币智能合约友好。
什么是支付通道?
支付通道是参与者通过比特币交易进行沟通的渠道。所有传递的信息都以比特币交易表示。
基本知识
对于每个比特币交易,可以有不止一个输入。对于每个输入,都有一个称为序列号的参数。此数字表示包含此输入的交易记录是否是最终的。如果参数没有采用最大值,则验证过程将查看locktime字段,该字段指定事务生效的时间,即事务在locktime之前无效。当指定的时间到来时,它就开始起作用。在给定事务的locktime到来之前,具有较大序列号的该交易的新版本可能会令使用相同输入但序列号较小的旧版本的无效。
此功能出现在原始比特币协议,这个被通常称为中本支付通道的支付通道类型至关重要。
比特币智能合约的通用范例
范式的核心要素是所谓的融资交易。一个交易,一旦确认在链上,就会打开支付通道。
典型的融资交易如下所示:
与融资交易对应的是退款交易,在给定锁定期限结束后,该交易将初始资金返还给参与者:
一旦交易提交到区块链,资金交易中指定的合约支付通道就会打开。Alice和Bob之间的所有后续通信都是通过比特币交易进行的。这些交易不仅与比特币兼容,而且遵循支付通道规定的规则,即融资交易中确立的合同。验证可以由任一参与者完成。简单来说:
爱丽丝用她的签名把一笔交易寄给了鲍勃。
Bob检查交易记录。
A、如果他满意,他也签名,然后寄回给爱丽丝。这将为付款通道创建一个检查点。
B、如果他不满意,会更新交易,并将其发送给爱丽丝。
交易的每个更新都会将序列号递增1或更多。
Alice和Bob重复此过程,直到他们需要在链上结清合约。
这怎么是智能合约?
如果合约能够自动化、执行且不需要信任,它就会变得智能。如果我们这样做,那么我们可以逐一验证要求。
自动化
爱丽丝和鲍勃的行动都可以完全自动化。创建融资交易时,可以将实现的源代码添加到OP_RETURN负载中。由于交易由双方签署,这意味着自动化的实施由Alice和Bob进行验证和批准。
强制执行
如果任何一方试图作弊,另一方只需发布最后一个商定的交易来声明输出。鉴于比特币交易的性质,方不可能获得比上次达成一致的交易更多。换句话说,强制执行是从交易对中继承的:融资交易和退款交易。
信任
支付通道不需要Alice或Bob彼此信任。一旦融资交易在链上,他们将尝试在支付通道沟通,以达成共识。如果不这样做,它们始终可以还原到最后一个商定的交易。这是从强制属性继承的。
这样好吗?
我们认为这比其他智能合约平台更好,因为它提供了扩展性、灵活性、隐私性和成本效益。
扩展性
一般来说,支付通道只需要在链上记录两个交易,即融资交易和结算交易。支付渠道中的所有通信都是对等的。矿工不需要验证支付渠道中交换的中间交易,不像其他区块链,其中每个智能合约都由网络中的所有矿工执行。这种本地化的点对点模式提供了扩展功能。
灵活性
不需要使用什么编程语言来实现协定、运行什么平台或参与者需要遵循哪些其他规则。唯一的要求是支付渠道的所有参与者同意指定所有参数和规则的融资交易。
隐私
没有必要将合约明确放在融资交易中。为了添加更多隐私,始终可以选择将哈希值放在OP_RETURN有效负载中的原始信息。
成本效益
无需向矿工支付费用,因为他们不需要为执行智能合同提供任何服务。
除了列出的优势外,还可以在类似用例的市场中共享融资交易模板。例如,允许两个参与者下棋的的支付通道的融资交易可以重新用于任何其他两个玩家。我们还可以为采矿池进行融资交易,其中模板可以适应任何其他采矿池。设计此类模板的最重要的是确保特定于支付通道的规则不会偏向任何参与者。
结论
我们提出的是比特币智能合约的通用范例,许多人认为比特币缺乏这一特性。我们已经看到,支付通道可以提供此功能,并且方式是可扩展、灵活、私密且经济高效的。可能的用例包括公用事业和内容流的小额付款、实时游戏和电子竞技、涉及频繁付款的商业协议以及其他许多方面。现在,轮到你来用它创造了。
在本文中,比特币指由BSV代表的原始比特币协议。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。