智能合约
智能合约
“智能合约”这个术语是由尼克·萨博(Nick Szabo)最先提出的,其定义是“执行合同条款的计算机协议”。智能合约也可以看作是一种传统协议,由代码自动定义和执行,不存在任何自由裁量的空间。智能合约类似用于处理交易和决策的脚本,运行在区块链上。结合了区块链的计算模型,配合了一个图灵完备 的虚拟机和一种新的程序设计语言。
概念
一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。区块链中的智能合约是条款以计算机语言而非日常语言或法律语言记录的智能合同,这个程序会被自动执行或触发,从而执行相应的合同条款。区块链中的智能合约一旦编写好就可以被用户信赖,合约条款不能被改变,因此智能合约是不可更改的。
运作方式
- 1 制定:两个或两个以上的注册用户共同商定了一份承诺,承诺中包含了双方的权利和义务;将这些权利和义务以代码方式编成程序也就是智能合约;参与者分别用各自私钥对合约进行签名以确保合约的有效性;签名后的智能合约携带着承诺的内容将会传入到区块链中,所有人都能看到。
- 2 验证:生成的智能合约会在全网中扩散,每个节点都会收到一份;区块链中的验证节点会根据相应的共识机制,在规定的时间内对最新的智能合约集合达成一致;最新达成的智能合约集合会以区块的形式扩散到全网。每个区块包含了以下信息:当前区块的Hash值、前一区块的Hash值、达成共识时的时间戳、以及其他描述信息,当然还有最重要的信息—一组已经达成共识的智能合约集;收到智能合约集的节点,都会对每条合约进行验证。验证通过的合约才会最终写入区块链中,验证的内容主要是合约参与者的私钥签名是否与账户匹配。
- 3 执行:智能合约会定期检查是否存在相关事件和触发条件;满足条件的事件将会被推送到待验证的队列中;区块链上的验证节点先对该事件进行签名验证,以确保其有效性;等大多数验证节点对该事件达成共识后,智能合约将被自动执行,并通知用户;成功执行的智能合约将被移出区块,而未执行的合约则继续等待下一轮处理,直至成功执行。
价值
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,智能合约对于降低社会信任成本、重建商业经营环境具有重要意义。智能合约不仅影响合同法,在更广泛的层面上,还将影响社会和组织内部的社会契约。这是因为智能合约自动、自主执行,不需要人工判断,最大限度地减少了对预先建立信任的要求。此外,借助智能合约,企业的管理层或员工不再需要制定、实施和评估决策。多个智能合约与人工智能和大数据分析结合在一起,就可以实现决策能力的自动化,从而推动“组织活动的全新范式” ,包括战略决策的自动化以及公司和数据治理的自动化,并形成完全 由 计 算 机 代 码 运 行 的 全 新 组 织 设 计 , 即 所 谓 的 “ 去 中 心 化 自 治组织”(DAO)
扩展概念了解
图灵机
是英国数学家阿兰·图灵在1936年提出的为了研究可计算问题而构思的抽象计算模型——将传统的使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人进行无数次的数学运算。这个虚拟的机器就是图灵机,也就是现代计算机的雏形。虚拟机是一种特殊的架构软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于虚拟机这个软件所创建的环境来操作其他软件。虚拟机是计算机系统的仿真器,通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,能提供物理计算机的功能
开源软件
开源软件又称开放源代码软件,是一种源代码可以被任意获取的计算机软件,这种软件的著作权人在软件协议的规定之下保留一部分权利并允许用户学习、修改以及以任何目的向任何人分发该软件。开源软件同时也是一种软件发行模式。一般的软件仅可获取已经过编译的二进制可执行档,通常只有软件的作者或著作权人等拥有程序的源代码。
误区
把“程序逻辑”放在区块链上,就使得这些代码逻辑如同 链上数据一般公开可验证。也许有人问,如果代码开源不是也 可以做到公开吗?是的,开源的代码是公开的,但并不能做到 可验证。虽然你能看到项目的源代码,但不能保证真正执行的 就是源代码对应的程序。以太坊的设计中实现了一个以太坊虚 拟机(Ethereum Virtual Machine,缩写为EVM),这些虚拟机 包含在所有的以太坊节点软件里作为其一部分。智能合约需要 执行的时候,相当于每个以太坊的节点都独立地执行这些代 码
以太坊智能合约的设计、实现和采用链节点内置专用虚拟 机的执行模型只是代表智能合约的一种实现方法,并不是所有 区块链都应该采用相同的实现方法。以太坊成功后,大量追随 者都采用与以太坊完全一致的设计模式,此类设计在业内极为 流行,但还是有不少知名区块链技术采用不同的设计和实现: Hyperledger Fabric支持的链上代码(Chaincode)可以被视为 类似以太坊的智能合约,但其设计与实现跟以太坊的方式大相 径庭;ArcBlock的区块链平台选择了采用链节点和智能合约运 行环境统一在Erlang虚拟机BEAM上的策略;2019年6月,Libra 一亮相旋即引起争议,其智能合约设计 虽与以太坊的设计有 显著不同,却也有几分类似