智能合约
By Jean Chen on 04/20/2020

智能合约

传统合约

又称合同,指两个或多个当事人之间达成的协议,约定在未来某个事件或满足某种条件各方如何履行各自的责任义务、享有各自的权益。

01

格式合同

又称标准合同,指合同当事人一方预先拟好合同条款,按照固定的模板填写或更改具体条件和参数,另一方只能表示接受或不接受。

02

智能合约(Smart Contract)

尼克·萨博 1994 年发明的概念,定义为“执行合同条款的计算机化交易协议。智能合约设计的总体目标是满足常见的合同条件(例如支付条款、留置权、保密性,甚至执行),最大限度地减少恶意和偶然异常的情况发生,并最大限度地减少对可信中介的需求。”

03

很多互联网服务有“智能合约”的影子

04

以太坊的智能合约

  • 智能合约是由以太坊虚拟机(Ethereum Virtual Machine,EVM)执行的代码,以实现复杂的业务逻辑。
  • EVM 是以太坊的基础,负责执行所有的交易,并根据这些交易来维护整个以太坊的账户状态。部署或者调用智能合约是交易的一种。
  • EVM 被设计成一个相对封闭的沙盒环境,不支持对网络 API、文件系统等的直接访问,只能处理区块链内部的状态。
  • 在以太坊的概念里,“智能合约”约等于“程序”本身,与我们常规理解的“智能”(多指有更高级的智能逻辑,甚至 AI)以及“合约”并没有直接的联系。
05

其他区块链如何实现智能合约

  • 不采用虚拟机: Tendermint 不存在虚拟机,应用程序是一个标准的操作系统进程,采用不受任何的限制与约束的方式实现智能合约。
  • WASM 虚拟机: EOS、以太坊 2.0、Polkadot 采用基于 WebAssembly(缩写 WASM)的虚拟机来实现智能合约。
  • 其他虚拟机: 少数项目采用现有硬件指令集为基础的虚拟机,例如使用 x 86 指令集、RISC V 指令集等,有待时间证明其利弊。
  • Docker 容器环境: Hyperledger Fabric 的 Chiancode 设计使用 Docker 容器技术来作为智能合约的运行环境。

ArcBlock 采用和节点相同的虚拟机环境

ArcBlock 的区块链系统则完全搭建在 Erlang 虚拟机上,智能合约代码执行时和系统本身是平级的,因此让区块链框架更为灵活。

06

智能合约实现对照表

区块链系统应用类型智能合约运行环境智能合约语言
Ethereum通用应用EVMSolidity
Hyperledger通用应用DockerGolang, Java
Bitcoin加密货币嵌入式运行-
Zcash隐私加密货币嵌入式运行-
Quorum通用应用EVMSolidity
ArcBlock通用应用BEAMErlang, Elixir
Litecoin加密货币嵌入式运行-
Corda数字资产JVMKotlin, Java

智能合约创新方向

  • 模版化/参数化智能合约
  • 规则描述型智能合约
  • 模块化智能合约和开发工具
  • 可视化的智能合约
  • 智能合约和传统合约的统一
0708

智能合约在应用中的位置

09

THANK YOU