智能合约
计算机协议
智能合约(Smart contracts)是一种数字化的合同形式,以代码的方式存储在区块链上。它们设计用来自动执行、控制或记录在特定条件发生时法律上具有约束力的活动。与传统合约相比,智能合约最大的特点在于其自动执行能力,无需依赖中介机构进行验证或执行,大大降低了交易成本和时间延迟。
智能合约遵循编程逻辑“如果/何时...那么...”,并在满足预设条件时触发执行。一旦部署至区块链上,智能合约作为自治程序操作,执行诸如资金转移、物权登记等操作。它们的执行结果被不可篡改地记录在区块链上,所有相关方均可实时查验但不能更改。智能合约的运行逻辑需要事先进行充分定义,包括所有可能的条件和相应的执行行为,确保合约能够按照设计者的意图正确执行。
除去自动化和减少信任成本外,智能合约还提供了无需准入权限的优势。任何人都可以创建并部署智能合约,只要他们具备编写合约的技能且能够支付区块链网络所需的手续费(即“燃料费”)。然而,智能合约也有其局限性,例如无法直接访问链下数据,通常需要通过预言机(Oracle数据库)来获取外部信息。此外,智能合约因为其代码公开透明,使得它们可以互相调用,实现功能的组合与扩展。
术语简介
“智能合约”(Smart contract)这个术语至少可以追溯到1995年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他在发表于自己的网站的几篇文章中提到了智能合约的理念,定义如下:
“一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。”
数字形式
数字形式意味着合约不得不写入计算机可读的代码中。这是必须的,因为只要参与方达成协定,智能合约建立的权利和义务,是由一台计算机或者计算机网络执行的。
更进一步地说明:
(1)达成协定
智能合约的参与方什么时候达成协定呢?答案取决于特定的智能合约实施。一般而言,当参与方通过在合约宿主平台上安装合约,致力于合约的执行时,合约就被发现了。
(2)合约执行
“执行”的真正意思也依赖于实施。一般而言,执行意味着通过技术手段积极实施。
(3)计算机可读的代码
另外,合约需要的特定“数字形式”非常依赖于参与方同意使用的协议。
协议
协议是技术实现(technical implementation),在这个基础上,合约承诺被实现,或者合约承诺实现被记录下来。选择哪个协议取决于许多因素,最重要的因素是在合约履行期间,被交易资产的本质。
再次以销售合约为例。假设,参与方同意货款以比特币支付。选择的协议很明显将会是比特币协议,在此协议上,智能合约被实施。因此,合约必须要用到的“数字形式”就是比特币脚本语言。比特币脚本语言是一种非图灵完备的、命令式的、基于栈的编程语言,类似于Forth
安全问题
智能合约是“执行合约条款的计算机交易协议”。区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见,并且可能无法迅速修复。
这样的攻击难以迅速解决,例如,2016年6月The DAOEther的漏洞造成损失5000万美元,而开发者试图达成共识的解决方案。DAO的程序在黑客删除资金之前有一段时间的延迟。以太坊软件的一个硬分叉在时限到期之前完成了攻击者的资金回收工作。
以太坊智能合约中的问题包括合约编程Solidity、编译器错误、以太坊虚拟机错误、对区块链网络的攻击、程序错误的不变性以及其他尚无文档记录的攻击。
案例
部署智能合约的案例有:
流行文化
Karl Schroeder的2002年小说“Permanence”提出了一种“权利经济”,其中所有的物理对象都有合同要求的纳米标记,这样就可以对专有信息的所有用途实施付款,例如,深空军事任务必须不断证明每艘船舶的效益比率否则将停止工作。
参见
参考资料
智能合约简介.ethereum-org-fork.2024-01-18
目录
概述
术语简介
数字形式
协议
安全问题
案例
流行文化
参见
参考资料