智能合约(英语:Smart contract )是一种旨在以
信息化方式传播、验证或执行
合同的
计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。
术语简介
“智能合约”(Smart contract)这个术语至少可以追溯到1994年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他在发表于自己的网站的几篇文章中提到了智能合约的理念,定义如下:
“一个
智能合约是一套以数字形式定义的承诺(commitment),包括合约参与方可以在上面执行这些承诺的协议。”
数字形式
数字形式意味着合约不得不写入计算机可读的代码中。这是必须的,因为只要参与方达成协定,智能合约建立的权利和义务,是由一台计算机或者计算机网络执行的。
更进一步地说明:
(1)达成协定
智能合约的参与方什么时候达成协定呢?答案取决于特定的智能合约实施。一般而言,当参与方通过在合约宿主平台上安装合约,致力于合约的执行时,合约就被发现了。
(2)合约执行
“执行”的真正意思也依赖于实施。一般而言,执行意味着通过技术手段积极实施。
(3)计算机可读的代码
另外,合约需要的特定“数字形式”非常依赖于参与方同意使用的协议。
协议
协议是技术实现(technical implementation),在这个基础上,合约承诺被实现,或者合约承诺实现被记录下来。选择哪个协议取决于许多因素,最重要的因素是在合约履行期间,被交易资产的本质。
再次以销售合约为例。假设,参与方同意货款以比特币支付。选择的协议很明显将会是比特币协议,在此协议上,智能合约被实施。因此,合约必须要用到的“数字形式”就是比特币脚本语言。比特币脚本语言是一种非图灵完备的、命令式的、基于栈的编程语言,类似于Forth。
安全问题
智能合约是“执行合约条款的计算机交易协议”。区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见,并且可能无法迅速修复。
这样的攻击难以迅速解决,例如,2016年6月The DAOEther的漏洞造成损失5000万美元,而开发者试图达成共识的解决方案。DAO的程序在黑客删除资金之前有一段时间的延迟。以太坊软件的一个硬分叉在时限到期之前完成了攻击者的资金回收工作。
以太坊智能合约中的问题包括合约编程Solidity、编译器错误、以太坊虚拟机错误、对区块链网络的攻击、程序错误的不变性以及其他尚无文档记录的攻击。
案例
部署智能合约的案例有:
流行文化
Karl Schroeder的2002年小说“
Permanence”提出了一种“权利经济”,其中所有的物理对象都有合同要求的纳米标记,这样就可以对专有信息的所有用途实施付款,例如,深空军事任务必须不断证明每艘船舶的效益比率否则将停止工作。
合约特点
规范性。智能合约以计算机代码为基础,能够最大限度减少语言的模糊性,通过严密的逻辑结构来呈现。内容及其执行过程对所有节点均是透明可见的,后者能够通过用户界面去观察、记录、验证合约状态。
不可逆性。一旦满足条件,合约便自动执行预期计划,在给定的事实输入下,智能合约必然输出正确的结果,并在显示视界中被具象化。
不可违约性。区块链上的交易信息公开透明,每个节点都可以追溯记录在区块链上的交易过程,违约行为发生的几率极低。
匿名性。根据非对称加密的密码学原理,零知识证明、环签名、盲签名等技术,在区块链上,虽然交易过程是公开的,但交易双方却是匿名的。
参见