智能合约
能在链上自动执行的一段程序,条件满足就按代码办事。

一句话:智能合约是什么
很多人第一次碰到智能合约,是在钱包里看到一个请求授权的弹窗,下面跟着一串陌生地址——那地址背后就是一份合约。以太坊开发者文档给智能合约(smart contract)下的定义很朴素:运行在区块链上的一个程序,位于某个特定地址上的一组代码(函数)和数据(状态)。官方拿自动售货机打比方:投币、选货、出货,不需要店员点头。这个词可追溯到计算机学者 Nick Szabo,维基百科词条的表述是,他在 1990 年代提出构想,最晚 1996 年已在使用。
它是怎么跑起来的
任何人都能写一份合约并部署到链上,之后它就照写好的代码跑,不需要中介,具体由以太坊虚拟机(EVM)负责执行。
成本这层容易搞混。部署合约本身要付 Gas,远高于一笔普通转账;之后每次调用,只要函数会改动合约状态,就必须由一笔外部交易触发,也得付 Gas。反过来,标成 view 或 pure 的只读函数不改状态,读取不花钱。还有两点要记牢:合约默认不能被删除,与合约的交互不可逆。
部署之后还能改吗
官方文档说得很直白:合约一经部署,业务逻辑就无法更新。但这句常被误读成项目方从此动不了它——准确说是,已部署的那段代码不可变,开发者却能通过架构安排,改变实际被执行的是哪段代码。以太坊升级智能合约那页列了五种做法:合约迁移、数据分离、代理模式、策略模式、钻石模式。代理模式最常见:代理合约用 delegatecall 把逻辑委托出去,升级时让代理指向新的逻辑合约,用户地址不用换。
我们给新人讲这段只要求记住:听到协议宣布合约升级不必惊讶,这是成熟做法;但也别以为出了问题总有人兜底——可升级性意味着有个角色握着切换开关。
它和法律上的合同不是一回事
中文里都叫合约,容易让人以为链上跑的东西天然具备法律效力。公开资料的表述是:智能合约通常不构成法律上有效的、有约束力的协议——它更接近一笔由程序自动完成的交易,传统合同的执行则靠司法体系。
不可逆让麻烦更大:资产一旦按代码转走,事后追回成本极高,学界至今还在讨论司法干预、回滚交易的代价。各地监管与司法立场差别很大,涉及具体纠纷请以当地官方说法为准,链典不提供法律意见。
都拿来做什么
以太坊官方指出,智能合约支撑起了代币、DeFi、DAO、NFT 这些应用。最贴近日常的是代币:ERC-20 是以太坊上的同质化代币标准,由 Fabian Vogelsteller 在 2015 年提出,规定了 transfer、balanceOf、totalSupply、approve、allowance、transferFrom 等方法。你在钱包里看到的代币余额,本质上就是某份合约里记着的一行数字。
新手第一次遇到它:先授权,再交换
在去中心化交易所换一次币通常要签两次。第一次是 approve:告诉代币合约,允许某个应用动用你多少额度,这是一笔要付 Gas 的链上交易;第二次才是真正的 swap。很多人以为自己只是点了个确认,其实第一步就交出去了一部分支配权。
额度按这次需要给就好,别顺手给无限。想收回可以按官方的撤销授权指南操作,撤销同样是一笔链上交易。
三个必须知道的风险
- 代码漏洞。最著名的是 2016 年 6 月的 The DAO:据公开报道,攻击者利用漏洞,涉及的以太币约合 5,000 万美元量级,以太坊随后通过硬分叉找回了资金。链上数据公开也让漏洞对所有人可见,而有 bug 的代码同样改不掉——历史上不止一次出过大额事故。
- 无限授权。以太坊官网安全页的原话是:无限额度的支出授权可能让智能合约把你的钱包掏空。只授权本次交易所需的额度就好,很多钱包已提供额度保护。
- 钓鱼和假合约。钓鱼邮件、仿冒站点想方设法骗你交出助记词,点链接后先确认域名对不对。空投诈骗换个路数:钱包里突然多出不明代币,诱导你去假的领取页,一签名资产就没了。
不止以太坊
智能合约不是以太坊独有的能力。Cardano、Solana、Tron、Tezos、Avalanche 等链也支持智能合约,比特币则只有较为有限的脚本能力。
常见问题
智能合约有法律效力吗?
合约上线后还能被删掉或关停吗?
合约的漏洞只会出在项目方写的代码里吗?
给合约的授权额度怎么收回?
出处:ethereum.org 智能合约剖析(Anatomy of smart contracts),函数与状态一节。