智能合约(Smart Contract)

智能合约是一种计算机程序或交易协议,旨在根据合同或协议的条款自动执行、控制或记录事件和行动。智能合约的目标是减少对可信中介、仲裁成本和欺诈损失的需求,以及减少恶意和意外的例外情况[1]。智能合约通常与加密货币相关,以太坊引入的智能合约被认为是去中心化金融(DeFi)和非同质化代币(NFT)应用程序的基本构建块。

Vitalik Buterin 在2014年的以太坊白皮书中将比特币协议描述为 Nick Szabo 最初定义的智能合约概念的弱化版本,并提出了一种基于图灵完备的 Solidity 语言的更强大版本。自比特币以来,各种加密货币支持编程语言,允许在不受信任的各方之间进行更高级的智能合约。

智能合约不应与智能法律合约混淆,后者是指传统上以自然语言表达并以机器可读代码实现的具有法律约束力的协议。

词源 编辑

1996年,Nick Szabo 就已经开始使用“智能合约”这个术语来指代由物理属性(如硬件或软件)而非法律强制执行的合约。他以自动售货机为例来说明这个概念[2]

1998年,该术语被用来描述斯坦福数字图书馆项目中的斯坦福信息总线(Stanford Infobus)的权利管理服务层中的对象。

法律层面 编辑

智能合约并不是通常意义上的具有法律约束力的合同。它是一种计算机程序或交易协议,旨在根据合同或协议的条款自动执行、控制或记录事件和行动。智能合约的目标是减少对可信中介、仲裁成本和欺诈损失的需求,以及减少恶意和意外的例外情况。

智能合约通常与加密货币相关,以太坊引入的智能合约被认为是去中心化金融(DeFi)和非同质化代币(NFT)应用程序的基本构建块。

Vitalik Buterin 在2014年的以太坊白皮书中将比特币协议描述为 Nick Szabo 最初定义的智能合约概念的弱化版本,并提出了一种基于图灵完备的 Solidity 语言的更强大版本。自比特币以来,各种加密货币支持编程语言,允许在不受信任的各方之间进行更高级的智能合约。

智能合约不应与智能法律合约混淆,后者是指传统上以自然语言表达并以机器可读代码实现的具有法律约束力的协议。智能合约通常不构成有效的法律约束协议。尽管存在监管智能合约的提议,但目前还没有明确的法律框架。

智能合约不是法律协议,而是由计算机程序或交易协议自动执行的交易,例如通过转移加密货币或其他代币来实现支付义务的自动化技术手段。一些学者认为,编程语言的命令式或声明式性质会影响智能合约的法律效力。

自2015年以太坊区块链推出以来,“智能合约”一词已被应用于在区块链上进行的通用计算。美国国家标准与技术研究院将“智能合约”描述为“使用加密签名交易部署在区块链网络上的代码和数据(有时称为函数和状态)的集合”。在这种解释中,智能合约是使用区块链的任何类型的计算机程序。智能合约也可以被视为安全的存储过程,因为其执行和编码效果(如在各方之间转移代币)无法在不修改区块链本身的情况下进行操纵。在这种解释中,合同的执行由平台控制和审计,而不是由连接到平台的任意服务器端程序控制。

2018年,美国参议院的一份报告指出:“虽然智能合约听起来很新,但其概念植根于基本的合同法。通常,司法系统裁决合同纠纷并执行条款,但也可以使用其他仲裁方法,尤其是对于国际交易。对于智能合约,程序执行内置于代码中的合约。”美国亚利桑那州、爱荷华州、内华达州、田纳西州和怀俄明州等州已经通过了关于使用智能合约的立法。

2021年4月,英国司法任务组(UKJT)发布了《数字争议解决规则》(Digital DR Rules),旨在促进英国区块链和加密法律纠纷的快速解决。

工作原理 编辑

类似于区块链上的价值转移,智能合约的部署也是通过从钱包发送到区块链的交易来实现的。该交易包括智能合约的编译代码和一个特殊的接收地址。然后,该交易必须被包含在一个添加到区块链的区块中,此时智能合约的代码将被执行以建立智能合约的初始状态。拜占庭容错算法以去中心化的方式保护智能合约,防止对其进行篡改。一旦部署了智能合约,就无法对其进行更新。

区块链上的智能合约可以存储任意状态并执行任意计算。终端客户端通过交易与智能合约交互。这些与智能合约的交易可能会导致状态改变,并将代币从一个智能合约发送到另一个智能合约或从一个账户发送到另一个账户。

以太坊是最流行的运行智能合约的区块链。在以太坊上,智能合约通常是用图灵完备的编程语言 Solidity 编写的,并编译成低级字节码以由以太坊虚拟机执行。由于停机问题和其他安全问题,图灵完备性被认为是一种风险,因此在像 Vyper 这样的语言中被有意避免。一些其他缺少图灵完备性的智能合约编程语言包括 Simplicity、Scilla、Ivy 和 Bitcoin Script。然而,2020年使用正则表达式进行的测量表明,当时 53,757 个以太坊智能合约中只有 35.3% 包含递归和循环——与停机问题相关的构造。

几种语言旨在实现形式化验证:Bamboo、IELE、Simplicity、Michelson(可以用 Coq 验证)、Liquidity(编译为 Michelson)、Scilla、DAML 和 Pact。

支持智能合约的区块链平台的著名示例包括:
名称 描述
Ethereum 在其区块链上实施图灵完备语言,这是一个著名的智能合约框架
Bitcoin 提供一种图灵不完备的脚本语言,允许在比特币之上创建自定义智能合约,如多重签名账户、支付通道、托管、时间锁定、原子跨链交易、预言机或多方彩票,无需运营商37。
Cardano 智能合约的区块链平台
Solana 智能合约的区块链平台
Tron 智能合约的区块链平台
Tezos 智能合约的区块链平台

为了确保拜占庭容错,区块链上的过程通常是确定性的。然而,智能合约的现实世界应用,如彩票和赌场,需要安全随机性。事实上,区块链技术降低了彩票的成本,因此对参与者有利。区块链上的随机性可以通过使用区块哈希或时间戳、预言机、承诺方案、RANDAO 和 Quanta 等特殊智能合约以及混合策略纳什均衡的序列来实现。

应用 编辑

1998年,尼克·萨博提出,可以通过复制资产注册表和使用密码散列链以及拜占庭容错复制来实现智能合约基础设施。Askemos 在2002年使用 Scheme(后来添加了 SQLite)作为合约脚本语言实现了这一方法。

一种将比特币用于复制资产注册和合约执行的提议称为“彩色币”。 不同的项目实现了针对各种形式财产的复制权属以及复制合约执行。

截至2015年,瑞银正在试验使用比特币区块链的“智能债券”,该债券可以设想完全自动支付流,从而创建一种自我支付工具。

理论上,可以通过智能合约在死亡证明注册后自动执行继承意愿。出生证明也可以与智能合约配合使用。

Inc.com 的 Chris Snook 认为智能合约还可以用于处理房地产交易,并可以用于产权记录和公共登记领域。

Seth Oranburg 和 Liya Palagashvili 认为智能合约还可以用于雇佣合同,尤其是临时雇佣合同,他们认为这将使雇主受益。

主要应用场景 编辑

  1. 去中心化金融(DeFi):智能合约驱动的借贷协议(如 Aave)、去中心化交易所(如 Uniswap)、保险平台等。
  2. 数字身份和验证:去中心化身份管理(如 SelfKey)和数据验证(如链上认证记录)。
  3. NFT和数字资产:管理 NFT 的创建、交易和所有权转移。
  4. 供应链管理:自动化记录和追踪商品的流转和来源信息(如 IBM 的 Food Trust)。
  5. 保险:基于智能合约的自动理赔协议,条件触发即可赔付。
  6. 游戏和元宇宙:支持虚拟物品的所有权和跨平台交易。
  7. 去中心化自治组织(DAO):通过智能合约管理资金、治理规则和投票机制。

安全 编辑

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

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

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

2018年4月22日, BeautyChain智能合约出现重大漏洞,黑客通过此漏洞无限生成代币,导致 BitEclipse(BEC)的价值接近归零。 同月25日,SmartMesh出现疑似重大安全漏洞,宣布暂停所有SMT交易和转账直至另行通知,导致损失约1.4亿美金。28日,EOS被指可能存在BEC代币合约类似的整数溢出漏洞,但没消息详细说明。5月24日, BAI交易存在大量异常问题, 损失金额未知。  8月22日, GODGAME 合约被黑客入侵,GOD智能合约上的以太坊总数归零。

核心特性 编辑

  • 自动化执行:智能合约是预先编写的代码,当满足设定的条件时,会自动执行,无需人为干预。
  • 去中心化:智能合约运行在区块链的去中心化网络中,避免了单点故障和依赖中介。
  • 透明性:智能合约的代码和规则通常是公开的,任何人都可以查看和审计,提高了信任度。
  • 不可篡改性:部署到区块链上的智能合约代码一旦执行,将无法被修改,确保了合约的执行结果可信。
  • 自执行性和自治性:合约一旦部署,能够按照预设的逻辑独立运行,且无需用户反复介入。

技术栈和开发工具 编辑

  1. 编程语言:
    • Solidity(以太坊、EVM兼容链)、Vyper(以太坊)。
    • Rust(Solana、Polkadot)。
  2. 开发框架:
    • Truffle:以太坊智能合约开发框架。
    • Hardhat:以太坊的现代开发环境。
    • Remix:在线IDE,用于快速开发和测试。
  3. 测试和部署工具:
    • Ganache:本地以太坊区块链测试环境。
    • Infura:连接到区块链的API服务。
  4. 调试工具:
    • MythX:智能合约漏洞扫描工具。
    • OpenZeppelin:智能合约标准库和安全框架。

发展方向 编辑

  • 模块化智能合约:增强智能合约的灵活性,支持代码的动态更新和模块化。
  • 隐私保护:引入零知识证明(ZKP)等技术,增强合约执行的隐私性。
  • 跨链智能合约:实现智能合约在不同区块链之间的互操作性。
  • 自动化监管:结合链上和链下规则,实现合规的自动化管理。
  • AI与智能合约结合:利用人工智能增强合约的自主性和决策能力。

参考链接 编辑