LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 智能合约的特点

智能合约的特点

2020-08-30 NB区块链 来源:区块链网络

智能合约的概念最早由尼克·萨博(Nick Szabo)在20世纪90年代提出,被设想为一种可自动执行合同条款的计算机化交易协议,在不需要中介的情况下安全、可信地实现通用的合同条款。

他同时指出,当时由David Chaum推出的eCash可被视为智能合约的一种典型案例。但eCash后来并没有成功持续运行下去。由于没有一个可以实际运行的智能合约场景,这一理论始终停留在概念阶段,缺少实际的技术支撑。

要印证这一观点,需要等到后来比特币与区块链的发展:相对于以比特币为代表的区块链早期探索应用,人们广泛认可的区块链2.0阶段的一个重要标志就是智能合约概念的实现,即可以在区块链的分布式账本基础上,实现去中心的多方参与、规则透明不可篡改、符合条件即可执行的合约。

这意味着区块链从最早期只能转账的“点对点”电子现金系统,发展成为在分布式网络上形成可编程、不受干预的合约系统,可以在无须信任环境下实现更复杂、更完备的业务逻辑,为区块链在实际业务场景中的应用打下技术基础。

从定义上看,智能合约是一种由机器实现的协议或程序,但由于运行在需要进行拜占庭容错来达成共识的分布式系统环境中,智能合约与一般的计算机程序还存着很大区别。

智能合约的要求确定性

确定性在传统计算机理论中已有明确定义:如果给定一个输入,计算机(状态机)经过同样的状态变化顺序后总会产生相同的结果,那么这个算法即可被称为是确定性的。

这一特性在分布式系统特别是区块链系统中尤其重要,因为所有节点必须按照智能合约约定的规则产生相同的计算结果,否则合约执行的结果无法被各个节点所共识。

导致非确定性结果的具体原因有很多,而目前在区块链方面的解决思路也不少。下面按照“程序=算法+数据结构”的方法从算法和数据两个角度分别对这些原因和解决思路进行讨论。

确定性算法

对于确定性算法,我们又可以从“时间”和“空间”的角度分别进行讨论。

在程序执行的时间上,如果一个算法本身不是确定性的,那么将实现这个算法的程序重复执行多次,每次执行的结果也无法确定,例如产生随机数的函数无法保证每次执行的结果都是一样的。

在空间上,即便每个节点都执行同样的、确定性的指令操作,但由于节点间的底层机器指令或操作系统实现差异也可能导致出现不同的结果。

为实现确定性的算法,目前区块链较多采用的是限制操作,常见的是,只提供确定性指令或系统函数。

比特币中的脚本系统只提供了为数不多的操作,避免可能导致节点间差异的功能;以太坊采用了虚拟机(EVM)来屏蔽不同节点的实现差异,同时只提供确定性的系统函数。

确定性数据

除操作本身差异之外,如果对同一个算法给予不同的数据输入,也会导致结果存在差异。

目前的解决思路从链上、链下可分为两种。

链上的思路为,限制智能合约只能从链上读取已共识后的账本信息,以此来达到数据来源相同的目的。

但这种方法也存在不少限制,因为一些合约的执行有赖于对现实世界的条件判断,例如天气、股市行情等,而链上数据在来源、种类、实时性等各方面很多时候无法满足。

链下的思路进一步扩展了数据来源,一般采用预言机(Oracle)的方式,将外部数据提供给智能合约进行读取,并保证了数据的一致性。

可终止性

可终止性的问题是区块链实现智能合约的另一个挑战。因为区块链上的智能合约必须是可终止的,无论是由于主观故意还是客观存在的死循环等而出现无法终止的合约时,会持续占用区块链的计算或存储资源。

为实现可终止性的目标,在实现智能合约时主要有以下几种方式。

有限命令方式

比特币采用的方式是实现一个图灵不完备的脚本系统。图灵完备系统包括一系列操作数据的动作,其中包括循环、递归等逻辑操作,用于实现任何图灵机。而比特币的脚本系统限制了操作指令的种类,不包含循环等操作,因此可同时实现其确定性和可终止性。但这种方式也很大程度上降低了在比特币上实现合约的可扩展性。

燃料方式

为了提高可扩展性,比特币之后的很多区块链系统(例如以太坊等)开始采用支持图灵完备的智能合约系统,以实现更复杂和更完备的业务逻辑。为了解决支持图灵完备下的可终止性问题并避免网络滥用,以太坊引入了“燃料”(gas)的概念。以太坊智能合约中的每一步操作和每个账本存储都会对应于一定的gas消耗;当gas消耗完后合约就会被终止。gas方式相当于即时付费的手续费模式,目前被大多数公有区块链平台所采用。

资源控制方式

与gas的即时付费模式不同,另外一些公有区块链平台采用了预付费的模式,通过控制可使用的资源来实现可终止性的效果。其中最典型的代表是EOS。尽管交易不需要支付手续费,但用户需要提前抵押或购买足够多的CPU、RAM以及带宽等使用资源来进行交易和运行合约。EOS通过这种方式来避免用户在无手续费的情况下滥用资源。

—-

编译者/作者:NB区块链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...