词汇表概念
智能合约(Smart Contract)是什么?
智能合约(Smart Contract)是存储在区块链上、在预设条件满足时自动执行的程序,其执行结果由整个网络保证,而不依赖任何中介机构。它是 DeFi、NFT 和 DAO 等去中心化应用的基础。
作者: COINOTAG Research Desk最后更新 参考资料
从概念到大规模应用,智能合约大致经历了以下几个节点:
| 时间 | 事件 |
|---|---|
| 1994 年 | Nick Szabo 发表短文《Smart Contracts》,提出“智能合约”概念 |
| 2009 年 | 比特币上线,内置非图灵完备的简单脚本 |
| 2013 年 | Vitalik Buterin 发表以太坊白皮书,提出图灵完备的智能合约平台 |
| 2015-07-30 | 以太坊 Frontier 主网上线 |
| 2015-11-19 | ERC-20 代币标准提案(Fabian Vogelsteller、Vitalik Buterin)创建,此后成为同质化代币的通用接口 |
| 2016 年 | The DAO 合约被利用漏洞转走超过 360 万 ETH;以太坊于 2016-07-20 在区块 1,920,000 实施硬分叉,原链延续为以太坊经典(ETC) |
| 2018-01-24 | ERC-721 非同质化代币标准提案创建(作者包括 William Entriken、Dieter Shirley 等) |
| 2020 年 | Compound、Aave、Uniswap 等协议推动“DeFi 之夏” |
| 2021-09-29 | ERC-4337 账户抽象提案创建,让钱包本身也可以是智能合约 |
The DAO 事件是智能合约安全史上的转折点:合约代码“按规则”执行了攻击者的调用,结果却违背了设计者的本意。它让“代码即法律(Code is Law)”这句口号第一次面临现实考验,也让安全审计成为此后大型合约上线前的常规步骤。
智能合约是如何运作的?
- 编写代码:开发者用 Solidity、Vyper(以太坊)或 Rust(Solana)等语言编写合约,定义数据和可被调用的函数。
- 编译与部署:代码被编译成字节码,通过一笔交易部署到链上,获得一个固定的合约地址。
- 调用:用户用钱包签名一笔交易来调用合约函数,并支付 Gas 费;合约也可以调用其他合约。
- 执行与共识:网络中的节点按照相同的代码执行这笔交易,得到相同结果,并把状态变化写入区块。
智能合约有几个重要特点:确定性——相同输入总是得到相同输出;公开透明——代码和链上状态任何人都能查看;默认不可更改——部署后代码通常无法修改,除非合约事先设计了升级机制;自动执行——不需要任何一方配合或批准。
智能合约无法直接读取链外信息,例如股票价格或天气,需要借助预言机把外部数据安全地传到链上。
智能合约的主要应用
| 应用 | 智能合约的作用 |
|---|---|
| DeFi | 借贷、兑换、稳定币发行和清算规则全部写在合约中 |
| NFT | 记录每个代币编号的归属,规定转让和授权规则 |
| DAO | 按代币持有人的投票结果自动执行决策 |
| 代币发行 | ERC-20 等代币本身就是一个智能合约 |
| 二层网络 | 通过主网上的合约验证和结算二层的交易 |
与智能合约相关的重要概念
- EVM(以太坊虚拟机):以太坊上智能合约的运行环境。许多新公链选择兼容 EVM,这样以太坊上的合约和开发工具可以直接迁移过去。
- Gas:衡量合约执行所消耗计算量的单位,合约逻辑越复杂,需要的 Gas 越多,用户支付的 Gas 费也越高。
- 可升级合约:通过代理(Proxy)模式,把合约地址和实际逻辑分开,逻辑可以替换。这方便修复漏洞,但也削弱了“部署后不可更改”的特性,需要关注谁掌握升级权限。
- 安全审计:由专业安全团队逐行审查合约代码,查找重入、权限、整数计算等问题。审计报告通常公开,可以在项目文档中查到。
- 形式化验证:用数学方法证明合约在所有情况下都满足某些性质,多用于管理大额资金的核心合约。
- 其他合约语言与虚拟机:Solana 的程序用 Rust 编写并编译为 SBF 字节码;Sui、Aptos 使用 Move 语言,强调资产在语言层面不能被复制或凭空销毁。
- 常见漏洞类型:重入攻击(合约在更新余额前把控制权交给外部合约)、闪电贷配合价格预言机操纵、权限检查缺失等。
举例:一个代币合约是怎样工作的?
假设一个团队要发行一种 ERC-20 代币。他们用 Solidity 编写合约,合约里保存一张“地址 → 余额”的表,并实现 `transfer`(转账)、`approve`(授权)等标准函数。合约部署后得到一个固定地址,钱包和去中心化交易所都按 ERC-20 标准与它交互。
当用户 A 向用户 B 转账时,A 的钱包发起一笔调用 `transfer` 的交易;节点执行合约代码,检查 A 的余额是否足够,然后在表中扣减 A 的余额、增加 B 的余额。整个过程没有任何人工审批,结果对所有人公开可查。即使发行团队后来不再维护项目,只要合约没有设计升级或管理员权限,这套规则就会一直按代码运行。反过来,如果代码里写错了一个条件,错误也会被同样“忠实”地执行,这正是审计和谨慎授权重要的原因。
智能合约与传统合同有什么区别?
| 对比项 | 智能合约 | 传统合同 |
|---|---|---|
| 形式 | 程序代码 | 自然语言文本 |
| 执行方式 | 条件满足自动执行 | 依靠当事人履行,纠纷靠法院或仲裁 |
| 可更改性 | 部署后通常无法修改 | 可协商变更 |
| 出错后果 | 代码有漏洞时按漏洞执行,损失难以追回 | 可通过法律途径救济 |
需要注意的是,智能合约不一定具备法律意义上的“合同”效力,它的名字更多指“自动执行的规则”。
智能合约的主要风险
- 代码漏洞:重入攻击、权限检查缺失、价格操纵等漏洞曾导致大量资金被盗。
- 升级与管理员权限:可升级合约或拥有特殊权限的管理员地址,可能被滥用或被盗用,甚至被用来实施跑路(Rug Pull)。
- 审计不等于安全:安全审计能发现部分问题,但无法保证没有漏洞。
- 恶意授权:钓鱼网站诱导用户签名授权后,攻击者可以通过合约转走代币。
- 不可撤销:交易一旦执行就无法回滚,操作前应仔细核对,并自行研究(DYOR)。
风险提示
本文仅用于解释智能合约的概念与机制,不构成任何投资建议。与智能合约交互存在代码漏洞、恶意授权等风险,交易一旦执行通常无法撤销。参与任何相关活动前,请先了解并遵守所在地的法律法规。
常见问题
智能合约是什么意思?
智能合约是存储在区块链上、在预设条件满足时自动执行的程序,执行结果由网络共同保证,不需要中介机构参与。
智能合约是谁提出的?
“智能合约”一词由计算机科学家 Nick Szabo 提出。以太坊于 2015 年 7 月 30 日上线,是第一个通用的智能合约平台。
智能合约部署后能修改吗?
通常不能。合约部署后代码默认不可更改,除非开发者事先设计了代理升级等机制;这种升级能力也带来了管理员权限被滥用的风险。
比特币有智能合约吗?
比特币有一种简单的脚本语言,可以实现多重签名、时间锁等功能,但表达能力有限。以太坊等平台才支持几乎任意逻辑的通用智能合约。
智能合约安全吗?
智能合约按代码执行,代码本身的漏洞会被照样执行。审计能降低但不能消除风险,与合约交互前应了解其审计情况和权限设计。

