智能合同

智能合约是一种存储在区块链上的自动执行计算机程序,当预设条件满足时,它会自动执行、验证和执行协议条款,无需律师、银行或公证人等中介机构。该术语由计算机科学家尼克·萨博 (Nick Szabo) 于 1994 年提出,他将其描述为“一组以数字形式规定的承诺,包括各方履行这些承诺的协议”。

在以太坊区块链和其他智能合约平台上,智能合约使用 Solidity(以太坊)、Rust(Solana)或 Move(Sui、Aptos)等编程语言编写。一旦部署到区块链,合约代码通常是不可更改的;除了专门设计为可升级代理模式的合约外,其他合约的代码都无法更改或篡改。合约拥有自己的区块链地址,可以持有资金、发送交易并与其他合约交互。当用户或其他合约向智能合约发送满足其条件的交易时,代码会自动执行,并将结果永久记录在区块链上。

智能合约是整个去中心化应用(DApp)生态系统的基石。它们驱动着去中心化交易所(Uniswap)、借贷协议(Aave、Compound)、去中心化稳定币(DAI及其新版本USDS,由Sky Protocol发行,Sky Protocol是MakerDAO在2024年的更名版本)、NFT市场(OpenSea)、去中心化自治组织(DAO)以及数千种其他应用。智能合约在DeFi领域管理的资产总额在任何特定时间都高达数百亿美元,但这一数字波动较大,在2021年末曾接近180亿美元的峰值,在2022年末跌至约38亿美元,并在2025年和2026年的不同时期在70亿美元至140亿美元之间波动。即使考虑到这种波动性,智能合约仍然展现出对金融、治理、供应链、保险以及几乎所有涉及条件逻辑和价值转移的流程的变革潜力。

起源与历史

1994年: 计算机科学家兼法学学者尼克·萨博创造了“智能合约”一词,并描述了将合同条款嵌入硬件和软件中的概念,以使违约方付出高昂的代价。

1998年: Szabo 设计了“Bit Gold”,这是一种去中心化的数字货币概念,融合了智能合约的理念,比比特币早了十年。

2013年: Vitalik Buterin 发布了以太坊白皮书,提出了一种具有图灵完备编程语言的区块链,该语言能够运行任意智能合约。

2015年(7月): 以太坊上线,首次实现了智能合约的实际部署。Solidity 编程语言成为编写以太坊智能合约的标准语言。

2016年: “The DAO”是一个基于智能合约的去中心化风险投资基金,筹集了约150亿美元,但由于重入漏洞遭到攻击,当时价值约60万美元的以太坊被盗。该事件导致了以太坊硬分叉,并成为智能合约安全领域的一个里程碑式案例。

2017年: ERC-20代币标准使任何人都能通过智能合约创建同质化代币,从而推动了ICO热潮。数以千计的新代币应运而生。

2018年: 智能合约安全成为关注焦点。OpenZeppelin 发布了经过实战检验的智能合约库。形式化验证工具也应运而生。

2020年: DeFi Summer 展示了可组合智能合约的强大功能。Uniswap、Compound 和 Yearn Finance 等协议完全通过智能合约交互创建复杂的金融产品。

2021年: NFT(ERC-721智能合约)正迅速走红。智能合约驱动着从价值69万美元的数字艺术品交易到边玩边赚的游戏经济体系等各种应用。

2022到2023: 账户抽象(ERC-4337)使智能合约钱包能够提供改进的用户体验功能,例如社交恢复和无 gas 交易。

2024年(8月): 作为历史最悠久、最重要的DeFi智能合约系统之一,MakerDAO更名为Sky Protocol,这是其“终局计划”的一部分。新的稳定币USDS将与现有的DAI同步推出,升级比例为1:1。治理代币MKR将以1:24,000的固定比例转换为新的代币SKY。DAI和MKR将继续作为传统代币与其新版本并存。

2024到2026: 随着形式化验证、基于意图的架构和人工智能辅助智能合约审计的持续发展,智能合约平台日趋成熟。消息传递协议的进步也提升了跨链智能合约的互操作性。到2026年,USDS的原始供应量将超过DAI,而DAI本身仍是同一底层Sky Protocol系统中一种广泛使用的、规模较小的传统稳定币。

“智能合约是一种计算机化的交易协议,用于执行合约条款。其总体目标是满足常见的合约条件,最大限度地减少恶意和意外的例外情况,并最大限度地减少对可信中介机构的需求。” Nick Szabo,1994 年。

简单来说

智能合约就像一台自动售货机。你投入资金并选择商品,机器会自动检查付款、核对选择并出货。无需收银员。“规则”(价格表、库存)预先编程,机器无需人工干预即可执行。

托管机器人:想象一下,你正在买房。但这次不是律师保管资金,而是由机器人来做。机器人的程序设定是:“当房契过户给买方时,将款项支付给卖方。”它每次都严格按照这些规则执行,没有任何偏见、延迟或错误。这个机器人就是一个智能合约。

不可阻挡的协议:智能合约就像用永久墨水在透明的上锁玻璃盒内书写一份协议。所有人都能看到条款,但任何人也无法轻易更改,一旦条件满足,协议就会自动执行。

智能合约本质上就是一系列“如果……那么……”的规则,只不过是用真金白银来执行:如果 Alice 发送 1 个 ETH,就给她发送 100 个代币。如果价格跌破 50 美元,就卖出仓位。如果 5 位签署人中有 3 位同意,就释放资金。逻辑简单,但处理的是真金白银,而且很难作弊。

重要提示: 智能合约的安全性完全取决于其代码质量。智能合约中的一个漏洞可能导致资金的不可挽回损失。严格来说,按照“代码即法律”的原则,大多数合约没有客服支持,也没有“撤销”按钮。因此,务必使用经过审计和实战检验的智能合约,并充分了解其中的风险。

关键技术特征

不变性和决定论

  • 一旦部署到区块链上,智能合约代码通常无法更改,除非它是专门使用可升级代理模式构建的。
  • 在输入相同的情况下,智能合约在每个节点上始终产生相同的输出。
  • 这种确定性确保所有网络参与者对执行结果达成一致。
  • 不可篡改性提供了一种信任:用户知道,除了明确设计为可升级的合约外,规则在他们投入资金后通常不会改变。

Solidity 编程语言

  • 以太坊和EVM兼容链的主流智能合约语言
  • 受 JavaScript、Python 和 C++ 的影响
  • 关键概念包括函数、修饰符、事件、状态变量、映射和结构体。
  • 安全考虑因素包括防重入保护、整数溢出保护和访问控制模式
  • 其他替代语言包括 Vyper(以太坊的 Python 替代方案)、Rust(Solana)、Move(Sui 和 Aptos)以及 Cairo(StarkNet)。

可组合性(“金钱乐高积木”)

  • 智能合约可以与其他智能合约流畅地调用和交互。
  • 借贷合约可以与去中心化交易所(DEX)合约交互,而DEX合约又可以与预言机合约交互。
  • 这将创建一个可组合的生态系统,新的应用程序可以基于现有的应用程序进行构建。
  • 闪电贷展现了极强的组合性:借款、交易和还款都可以在一次交易内完成。

天然气和执行成本

  • 每个智能合约操作都需要消耗 gas,gas 是以原生加密货币计价的计算单位。
  • 更复杂的操作需要消耗更多天然气;储气操作通常是最昂贵的操作之一。
  • Gas 优化是智能合约开发人员的一项关键技能。
  • EIP-1559 在以太坊上引入了基础费用机制,以实现更可预测的 gas 定价。

事件和日志记录

  • 智能合约会发出链下应用程序可以监听的事件。
  • 事件存储在交易日志中,而不是合约存储中,因此编写成本更低。
  • 前端应用程序(DApp 接口)使用它来近乎实时地跟踪合约活动。
  • 对于构建 DeFi 协议、NFT 平台及类似应用程序的响应式用户界面至关重要

优点缺点

优势缺点
无需信任的执行: 无需信任中间人;代码会强制执行规则。不可更改的漏洞: 如果代码存在缺陷,部署后通常很难修复。
透明度: 任何人都可以读取和验证区块链上的合约代码。复杂: 编写安全的智能合约需要专业知识。
自动化: 当满足条件时,全天候自动执行Oracle 依赖项: 智能合约无法在没有预言机的情况下访问链下数据。
降低成本: 减少对律师、经纪人和托管代理人等中介机构的依赖汽油成本: 网络拥堵时,执行费用可能很高。
可组合性: 合同之间可以相互作用,构建复杂的系统。不可逆性: 交易或合同互动中的错误通常无法挽回。
全球访问: 任何拥有互联网连接的人都可以与智能合约进行交互。可扩展性: 在底层区块链上,复杂的合约交互可能速度慢且成本高。
抗审查性: 通常情况下,没有任何单一实体能够阻止有效的智能合约执行。法律上的歧义: 在大多数司法管辖区,智能合约尚未完全确立法律地位。

风险管理

智能合约漏洞:

  • 重入攻击: 当一个合约在更新自身状态之前调用外部合约时,就允许外部合约“重新进入”并窃取资金。DAO 黑客攻击导致价值约 60 万美元的 ETH 被盗,正是由这种情况造成的。
  • 整数溢出/下溢: 旧版 Solidity 中常见的算术错误。现代 Solidity(0.8 及更高版本)内置了溢出保护机制。
  • 前排: 矿工或验证者可以看到待处理的交易,并将自己的交易插入到这些交易之前,从而提取价值(MEV)。
  • 访问控制错误: 忘记限制关键功能的调用权限,导致任何人都可以盗取资金或更改参数。

安全最佳实践:

  • 务必使用来自信誉良好的项目的经审计合同;并查看多家独立公司的审计报告。
  • 审阅审计报告;审计并不能保证绝对安全,但可以显著降低风险。
  • 在接触新合约时,请从小额交易开始。
  • 使用 Revoke.cash 或区块浏览器的代币批准检查器等工具撤销不必要的代币批准。
  • 使用成熟的库(例如 OpenZeppelin),而不是从头编写安全关键代码。

治理风险:

  • 可升级的智能合约可以通过管理员密钥进行更改;请检查谁持有这些密钥。
  • 管理功能的定时锁定功能允许用户在更改生效前有时间退出。
  • 管理员操作需要多重签名,这降低了单个密钥泄露的风险。
  • DAO 可以投票更改合约参数;在存入资金之前,请了解治理结构。

文化相关性

智能合约代表着人类创建和执行协议方式的重大转变。加密社区的口号“代码即法律”体现了这样一种理念:数字交互应由软件规则而非人类判断来规范。这创造了一个更可预测、更公平、更易于使用的系统,但也引发了一些棘手的问题:当代码产生意想不到的结果时该如何处理?

2016 年的 DAO 黑客事件至今仍是智能合约发展史上的一个重要文化事件。当时,由于代码漏洞导致约 60 万美元被盗,以太坊社区面临着一个道德困境:代码完全按照预期执行(“漏洞利用”在技术上是与合约的有效交互),但结果显然并非预期。为了挽回损失,以太坊社区做出了一个极具争议的决定——硬分叉以太坊。这一决定开创了一个先例,至今仍在影响着关于不可篡改性、治理以及“代码即法律”的局限性等问题的讨论。

“智能合约听起来很棒,但它们的智能程度取决于编写它们的人的水平。”这是开发者社区的一句名言。

一年一度的以太坊黑客马拉松巡回赛(ETHGlobal、ETHDenver)和智能合约审计竞赛(Code4rena、Sherlock)创造了一种充满活力的智能合约构建、破解和安全保护文化。

实际例子

1. Uniswap,自动做市商

Uniswap 是一种智能合约协议,它使用户无需订单簿或中心化交易所即可交易代币。其核心智能合约使用数学公式(x 乘以 y 等于 k)根据流动性池中的供求关系自动确定交易价格。Uniswap 的智能合约累计交易量已超过 2 万亿美元,而且所有交易均无需任何员工处理。

2. Sky Protocol(前身为 MakerDAO),去中心化稳定币

Sky Protocol(在2024年8月更名为Sky Protocol之前名为MakerDAO)利用智能合约创建和管理去中心化稳定币。用户将抵押品(例如ETH、BTC或其他已批准的资产)锁定在智能合约的“金库”中,并以此铸造DAI或其更新的版本USDS。如果抵押品价值跌至设定的阈值以下,智能合约会自动触发清算,以保护系统。截至2026年,USDS的供应量已超过DAI,这两种稳定币的总流通价值超过100亿美元,并由同一底层金库系统支持。与此同时,治理代币MKR正以1:24,000的固定比例继续向其SKY的继任者USDS迁移。

3. Chainlink,去中心化预言机

Chainlink 的智能合约将区块链与现实世界的数据(例如价格、天气和体育赛事比分)连接起来。当 DeFi 协议需要 ETH 的当前价格时,Chainlink 的预言机网络会聚合来自多个数据源的数据,并将其传递给请求的智能合约。Chainlink 在 DeFi 及其跨链基础设施中保障的价值,因计算方法以及是否包含跨链消息量而存在显著差异。一些统计方法显示,其价值远超 100 亿美元,而另一些专门针对 DeFi 价格数据的统计方法则显示,其价值在数百亿美元左右。

对比表

特性智能合同传统合约API/Web 服务
政策执行自动(代码)手册(法院/律师)自动(服务器)
信任模型无需信任(区块链共识)基于信任的(法律体系)对提供者的信任
透明度完全公开且可验证双方私下进行专有/封闭式
修改不可更改,或者如果设计为可升级,则由治理机构控制。可通过协议修改服务提供商可能随时变更
正常运行时间连续的(去中心化的)办公时间(法院)通常约为 99.9%(集中式)
Cost每笔交易的燃气费律师费、诉讼费API订阅费
速度秒到分钟数天至数年毫秒
管辖权全球(无国界)特定司法管辖区受服务提供商的服务条款约束

相关条款

常见问题解答

问:智能合约是用什么编程语言编写的? 最流行的编程语言是 Solidity,它用于以太坊和 EVM 兼容的区块链。其他语言包括 Vyper(一种类似 Python 的以太坊替代方案)、Rust(用于 Solana 程序)、Move(用于 Sui 和 Aptos)、Cairo(用于 StarkNet)以及 Clarity(用于 Stacks 和比特币)。Solidity 仍然是使用最广泛的编程语言,拥有最大的开发者社区和工具生态系统。

问:智能合约部署后可以更改吗? 标准智能合约是不可变的;一旦部署,代码通常无法更改。然而,“可升级”智能合约使用代理模式,允许在保持地址和状态不变的情况下替换逻辑合约。这引入了一个信任假设:谁控制了升级密钥,谁就可以更改合约的行为。许多 DeFi 协议使用时间锁和多重签名钱包来降低这种风险。

问:智能合约具有法律约束力吗? 智能合约的法律地位因司法管辖区而异,且仍在不断发展。美国的一些州,包括亚利桑那州和田纳西州,已经通过法律承认智能合约。英国法律委员会也指出,智能合约可以构成具有法律约束力的合同。然而,在大多数司法管辖区,无论采用何种媒介,其法律效力仍然取决于是否满足传统合同法的要求(要约、承诺、对价、意图)。

问:如果智能合约存在漏洞会发生什么? 如果智能合约存在漏洞,除非它采用可升级模式,否则部署后通常无法“修复”。漏洞可能导致资金永久损失。因此,智能合约审计至关重要;专业审计人员会在部署前审查代码是否存在漏洞。漏洞赏金计划激励白帽黑客发现漏洞,而像 Nexus Mutual 这样的保险协议则提供针对某些智能合约故障的保障。

问:部署智能合约需要多少成本? 部署成本会因区块链和当前网络状况而异。在以太坊主网上,部署一个简单的智能合约可能需要花费几十到几百美元甚至更多,具体取决于 gas 价格和合约复杂度。在 Layer 2 网络(例如 Arbitrum、Optimism 和 Base)上,成本通常只有主网的一小部分。在 Solana 上,部署成本通常远低于一美元。更复杂的合约,例如完整的 DeFi 协议,通常成本更高,因为它们包含更多代码,需要更多 gas 才能存储在链上。

来源

  • Szabo, N.,“公共网络上关系的规范化和保障”,《第一星期一》,1997 年
  • 以太坊基金会,“智能合约入门”,ethereum.org
  • OpenZeppelin,“智能合约安全最佳实践”,docs.openzeppelin.com
  • Trail of Bits,“构建安全的智能合约”,github.com/crytic
  • Atzei, N. 等人,“以太坊智能合约攻击调查”,eprint.iacr.org,2017 年
  • 天空协议(前身为 MakerDAO) 文件和品牌重塑公告,2024 年

最新资源和博客