LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 智能合约

智能合约

2020-01-02 小锤子 来源:区块链网络

搜集了一些智能合约的资料,值得学习

智能合约,并非是一个全新概念,但是随着区块链的出现,人们再次将目光转移到这一领域。同时,智能合约也是区块链研究中的一个活跃领域。鉴于智能合约针对金融服务行业产生成本节约效益,即降低交易成本并简化复杂合约,因而金融和学术机构均对此予以关注寄予厚望。

早在20世纪90年代末,Nick Szabo即提出了智能合约这一概念。待其潜力和优势充分发挥时,20年已经匆匆而过。Szabo对智能合约提出了如下描述:“智能合约是一种计算机化的交易协议,可以执行合同的条款。一般的目标是满足常见的契约条件(例如支付条款、扣押权、机密性,甚至是强制执行),将恶意攻击和意外情况降低至最小,并最小化对受信中介的需求。相关的经济目标包括降低欺诈损失、仲裁和执行成本,以及其他交易成本。”

2009年,智能合约这一概念仅在比特币中以一种有限的方式实现。其中,比特币交易可以用来在用户之间转移价值。在P2P网络中,用户之间无须相互信任,也不需要受信的中介。

智能合约是一种安全的、处于运行状态的计算机程序,体现了一种自动执行以及强执行的协议。

通过进一步分析可知,智能合约实际上是采用某种语言编写的、计算机或目标机可理解的计算机程序。此外,智能合约还包含了以业务逻辑形式出现的各方之间的协议。另一个核心理念是,当某些条件满足时,智能契约将自动执行。另外,强制性意味着所有的合约条款都是按照规定和预期执行的,对于攻击者而言同样如此。这里,强制执行是一个相对广泛的术语,包括法律形式的传统强制执行,以及执行某些措施和控制行为,在无须中介的情况下使执行合同条款成为可能。需要注意的是,真正的智能合约不应依赖于传统的执法手段。相反,应该按照“代码即是法律”这一原则运作。这意味着,没有必要让仲裁人或第三方来控制或影响智能合约的执行。智能合约具有“自我执行”这一类特点,而不是法律意义上的强制执行。该方式可能被视为自由意志主义者的梦想,但这一结论完全可行,并且符合智能合约的真正精神。

除此之外,智能合约还应具备安全性以及“不可阻挡”性,也就是说,计算机程序必须以这样一种方式设计:在合理的时间范围内具有容错能力并保持执行状态。即使外部因素处于不利状态下,相关程序也应能够执行和维护一个健康的内部状态。例如,假设某个正常的计算机程序采用某种逻辑编码,并根据内部编码指令执行,如果运行环境或依赖的外部因素偏离正常或预期状态,该程序将处于不确定状态或简单地终止。更为重要的是,智能合约不会受到这一类问题任何影响。

安全性和不可阻挡性可视为一种需求条件或期望特性,但在开始阶段即将安全性和不可阻挡性这一类属性纳入智能合约定义中,那么从长远角度来看,这将带来更大的收益。因此,研究人员从前即可关注这方面内容,并为后续研究打下坚定的基础。同时,一些研究人员也提出,智能合约不必自动执行;想法,智能合约应具备所谓的自控性,因为在某些场合下仍需要人工输入。虽然在某些情况下,手工输入和控制是可取的,但这并非是绝对必要条件;而且,对于真正的智能合约,在本人看来,必须完全自动化的。某些需要通过手动方式提供的输入,也应该通过Oracle等实现自动化。Oracle将在后续内容中详细讨论。

智能合约一般通过状态机模型管理其内部状态,对于智能合约程序设计而言,该模型可实现高效的框架;相应地,合约状态根据一些预定义的标准和条件进一步推进。

在法律界,代码是否可作为合同尚存在争论,这与传统的法律条文是完全不同的。尽管智能合约确实代表并执行所有的合同条款,但是法院并不理解代码。因此,问题也随之而来:智能合约如何具有法律约束力?如何使智能合约在法庭上容易被接受和理解?如何在代码中实现争端的解决方案,且是否具有可行性?此外,在智能合同可以像传统的法律文件使用之前,监管和法规则是另一个需要解决的问题。上述问题包含了各种可能性,例如,让智能合同代码不仅可以被机器阅读,还可以被人类阅读。如果人类和机器都能理解所编写的代码,那么在法律环境中,智能合约可能更容易被接受,而不是仅供程序员阅读。此类特性在研究领域也日趋成熟,研究人员也耗费了大量的精力以处理有关合约语义、含义以及解释性问题。

从本质上讲,智能合约应具备确定性。据此,网络上的任何节点运行同一个智能合约,并获得相同的结果。如果最终结果在节点之间略有不同,那么将无法达成共识。因此,区块链是分布式共识的整个范例可能会失效。此外,合约语言本身也是确定的,从而确保智能合约的完整性和稳定性。根据个人经验,确定性的的含义是指语言中不存在非确定性函数,进而导致在不同的节点产生不同的结果。例如,当采用不同编程语言中的函数进行计算时,各种浮点操作可以在不同的运行环境中产生不同的结果。另一个例子是JavaScript中的一些数学函数,这一类函数可以在不同的浏览器上产生不同的结果,进而产生各种各样的bug。这一类问题在智能合约中是非常致命的——如果节点之间的结果不一致,那么就无法达成共识。这里,确定性确保智能合约总是为特定的输入产生相同的输出。换而言之,编译后的程序将生成一个可靠、准确的业务逻辑,同时完全符合在高级代码中编写的各项需求。

综上所述,智能合约包含以下4项属性:

自动执行。

强制执行。

明确的语义。

安全性和不可阻止性。

其中,前两个属性仅为最低需求,而后两个属性在某些场合下并非必需,因而可适当放宽条件。例如,衍生合约可能不需要语义限制以及不可阻止特征,但至少应在基本层面上实现自动执行和强制执行。另一方面。合约需要具备语义上的明确性和完整性。因此,智能合约在其实现过程中,其应语言须被计算机和人类所理解。Ian Grigg在其“李嘉图合约”中针对这个问题提供了相关解释。

—-

编译者/作者:小锤子

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

LOADING...
LOADING...