http://www.7klian.com

比特币SV上的有状态智能合约

剧本的很多假定限制是由于无法实现其潜力。当我们对剧本可以实现的内容举办表明和演示时,人们会发明它很是可扩展,通用且面向将来。我们将证明,比特币没有工钱限制,可以运行其他可以运行的任何智能合约,同时可以无限扩展。通过经济鼓励,可以操作它来使整个行业的很多应用措施越发高效和安详。

上的智能合约

有些智能合约本质上是有状态的,,因为它们要求缔约方在多个阶段举办交互并依赖于时变状态,譬喻链上投票和博彩。我们展示了一种维护比特币智能合约状态的通用机制。我们还利用sCrypt(一种可编译为本机剧本的高级语言)实现有状态合约。
在先容如何维护比特币智能合约的状态之前,我们先容了一种称为OP_PUSH_TX的强大技能。可以将其视为伪操纵码,它将当前事务推送到仓库中,然后可以在运行时对其举办查抄。更精确地说,它可以查抄在BIP143中界说的签名验证中利用的原图像。原像的名目如下:

与风行的观点相反,比特币自降生以来就具有智能签约成果,具有一种称为剧本的基于仓库的当地编程语言。每个比特币生意业务都由输入和输出构成。每个输出都利用指示合约义务的剧本锁定某些比特币。假如输入中包括执行输出智能合约的剧本,则它将解锁该输出中的比特币,并将其移至新的输出中。这就是比特币所有权转让的事情方法。

在合约中实近况态的一种要领是将锁定剧本中的合约分为两部门:数据和代码。数据部门是状态,代码部门包括对状态转换法则举办编码的合约的业务逻辑。数据作为OP_RETURN 或OP_PUSHDATA OP_DROP被动地附加到代码中。纵然未评估它,它仍然会影响合约的有效性,因为前面的代码部门对其举办了验证。

剧本凡是被认为是极其有限的,因此无法举办巨大的智能合约。人们常常提到的比特币智能合约的缺陷是缺乏状态。应该降服的主要限制之一就是证明它的存在。

结    论

示例合约:Counter

第3行和第4行确保原映像来自当前事务。我们在第9行中得到了先前的锁定剧本,在原映像的第5部门中也称为scriptCode。从第12行的scriptCode中提取先前的计数器状态,然后将其递增并放入第14行的新锁定剧本中。请留意,计数器是锁定剧本中独一变动的部门。其余部门确保输出包括新的锁定剧本。
先决条件:OP_PUSH_TX
这是陈设智能合约并反复挪用其函数increment()的代码。可以找到计数器从0到9递增的合约实例:0-> 1-> 2-> 3-> 4-> 5-> 6-> 7-> 8->9。请留意,计数器状态 在第一个事务输出的剧本的末端。

一旦我们可以查抄智能合约的生意业务情况,就可以对智能合约的输入和输出施加任意约束。

这雷同于面向工具编程中的工具观念,个中代码是要领,而数据是工具的成员变量 要领是一成稳定的。成员变量被封装而且只能通过要领举办突变。从解锁剧本中挪用要领,对要挪用的要领及其参数举办编码。

状态合约实施

利用OP_PUSH_TX,我们可以从第5部门中获取正在利用的输出的锁定剧本,并从第8部门中获取新输出的锁定剧本。为了保持状态,我们要求锁定剧本的代码部门不得变动而且数据/状态变动必需切合,在代码部门中包括状态转换法则。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读