智能合约

计算机协议

智能合约(Smart contracts)是一种数字化的合同形式,以代码的方式存储在 区块链 上。它们设计用来自动执行、控制或记录在特定条件发生时法律上具有约束力的活动。与传统合约相比,智能合约最大的特点在于其自动执行能力,无需依赖中介机构进行验证或执行,大大降低了交易成本和时间延迟。

智能合约遵循编程逻辑“如果/何时...那么...”,并在满足预设条件时触发执行。一旦部署至区块链上,智能合约作为自治程序操作,执行诸如资金转移、 物权 登记等操作。它们的执行结果被不可篡改地记录在区块链上,所有相关方均可实时查验但不能更改。智能合约的运行逻辑需要事先进行充分定义,包括所有可能的条件和相应的执行行为,确保合约能够按照设计者的意图正确执行。

除去自动化和减少信任成本外,智能合约还提供了无需准入权限的优势。任何人都可以创建并部署智能合约,只要他们具备编写合约的技能且能够支付 区块链 网络所需的手续费(即“燃料费”)。然而,智能合约也有其局限性,例如无法直接访问链下数据,通常需要通过 预言 机( Oracle数据库 )来获取外部信息。此外,智能合约因为其代码公开透明,使得它们可以互相调用,实现功能的组合与扩展。

术语简介

“智能合约”(Smart contract)这个术语至少可以追溯到1994年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他在发表于自己的网站的几篇文章中提到了智能合约的理念,定义如下:

“一个智能合约是一套以数字形式定义的承诺(commitment),包括合约参与方可以在上面执行这些承诺的协议。”

数字形式

数字形式意味着合约不得不写入 计算机 可读的代码中。这是必须的,因为只要参与方达成协定,智能合约建立的权利和义务,是由一台计算机或者 计算机网络 执行的。

更进一步地说明:

(1) 达成协定

智能合约的参与方什么时候达成协定呢?答案取决于特定的智能合约实施。一般而言,当参与方通过在合约 宿主 平台上安装合约,致力于合约的执行时,合约就被发现了。

(2) 合约执行

“执行”的真正意思也依赖于实施。一般而言,执行意味着通过技术手段积极实施。

(3) 计算机 可读的代码

另外,合约需要的特定“数字形式”非常依赖于参与方同意使用的协议。

协议

协议是技术实现(technical implementation),在这个基础上,合约承诺被实现,或者合约承诺实现被记录下来。选择哪个协议取决于许多因素,最重要的因素是在合约履行期间,被交易资产的本质。

再次以销售合约为例。假设,参与方同意货款以比特币支付。选择的协议很明显将会是比特币协议,在此协议上,智能合约被实施。因此,合约必须要用到的“数字形式”就是比特币脚本语言。比特币脚本语言是一种非图灵完备的、命令式的、基于栈的 编程语言 ,类似于 Forth 。

安全问题

智能合约是“执行合约条款的 计算机 交易协议”。 区块链 上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见,并且可能无法迅速修复。

这样的攻击难以迅速解决,例如,2016年6月The DAOEther的漏洞造成损失5000万美元,而开发者试图达成共识的解决方案。DAO的程序在黑客删除资金之前有一段时间的延迟。 以太坊 软件的一个硬分叉在时限到期之前完成了攻击者的资金回收工作。

以太坊智能合约中的问题包括合约编程Solidity、编译器错误、以太坊 虚拟机 错误、对 区块链 网络的攻击、程序错误的不变性以及其他尚无文档记录的攻击。

案例

部署智能合约的案例有:

流行文化

Karl Schroeder的2002年小说“Permanence”提出了一种“权利经济”,其中所有的物理对象都有合同要求的纳米标记,这样就可以对专有信息的所有用途实施付款,例如,深空军事任务必须不断证明每艘船舶的效益比率否则将停止工作。

参见

参考资料

  1. 智能合约简介 ethereum-org-fork 2024-01-18
  2. What are smart contracts on blockchain? IBM 2024-01-18