链典. L I À N D I Ǎ N加密新手百科 · 词条手册
VOL.01 · 加密入门简体中文版 · EST. 2026收录词条 51
底层概念

智能合约

一句话定义

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

智能合约封面
链典词条 · 底层概念
一分钟看懂
  • 以太坊官方文档的说法,智能合约就是运行在区块链上的一个程序,是位于某个特定地址上的一组代码和数据。
  • 它部署上链后按写好的代码运行,中间没有人替你把关;会改动状态的调用要付 Gas 费,只是读取数据则不花钱。
  • 自动执行不等于法律上有效,代码有 bug 也照样跑,授权和签名前多看一眼最划算。

一句话:智能合约是什么

很多人第一次碰到智能合约,是在钱包里看到一个请求授权的弹窗,下面跟着一串陌生地址——那地址背后就是一份合约。以太坊开发者文档给智能合约(smart contract)下的定义很朴素:运行在区块链上的一个程序,位于某个特定地址上的一组代码(函数)和数据(状态)。官方拿自动售货机打比方:投币、选货、出货,不需要店员点头。这个词可追溯到计算机学者 Nick Szabo,维基百科词条的表述是,他在 1990 年代提出构想,最晚 1996 年已在使用。

它是怎么跑起来的

任何人都能写一份合约并部署到链上,之后它就照写好的代码跑,不需要中介,具体由以太坊虚拟机(EVM)负责执行。

成本这层容易搞混。部署合约本身要付 Gas,远高于一笔普通转账;之后每次调用,只要函数会改动合约状态,就必须由一笔外部交易触发,也得付 Gas。反过来,标成 view 或 pure 的只读函数不改状态,读取不花钱。还有两点要记牢:合约默认不能被删除,与合约的交互不可逆。

部署之后还能改吗

官方文档说得很直白:合约一经部署,业务逻辑就无法更新。但这句常被误读成项目方从此动不了它——准确说是,已部署的那段代码不可变,开发者却能通过架构安排,改变实际被执行的是哪段代码。以太坊升级智能合约那页列了五种做法:合约迁移、数据分离、代理模式、策略模式、钻石模式。代理模式最常见:代理合约用 delegatecall 把逻辑委托出去,升级时让代理指向新的逻辑合约,用户地址不用换。

我们给新人讲这段只要求记住:听到协议宣布合约升级不必惊讶,这是成熟做法;但也别以为出了问题总有人兜底——可升级性意味着有个角色握着切换开关。

它和法律上的合同不是一回事

中文里都叫合约,容易让人以为链上跑的东西天然具备法律效力。公开资料的表述是:智能合约通常不构成法律上有效的、有约束力的协议——它更接近一笔由程序自动完成的交易,传统合同的执行则靠司法体系。

不可逆让麻烦更大:资产一旦按代码转走,事后追回成本极高,学界至今还在讨论司法干预、回滚交易的代价。各地监管与司法立场差别很大,涉及具体纠纷请以当地官方说法为准,链典不提供法律意见。

都拿来做什么

以太坊官方指出,智能合约支撑起了代币、DeFiDAONFT 这些应用。最贴近日常的是代币:ERC-20 是以太坊上的同质化代币标准,由 Fabian Vogelsteller 在 2015 年提出,规定了 transfer、balanceOf、totalSupply、approve、allowance、transferFrom 等方法。你在钱包里看到的代币余额,本质上就是某份合约里记着的一行数字。

新手第一次遇到它:先授权,再交换

去中心化交易所换一次币通常要签两次。第一次是 approve:告诉代币合约,允许某个应用动用你多少额度,这是一笔要付 Gas 的链上交易;第二次才是真正的 swap。很多人以为自己只是点了个确认,其实第一步就交出去了一部分支配权。

额度按这次需要给就好,别顺手给无限。想收回可以按官方的撤销授权指南操作,撤销同样是一笔链上交易。

三个必须知道的风险

提示:看到限时领取、过期作废这类催你签名的话术,先停下来。合约执行不可逆,签名前多花的一分钟,往往比事后所有补救都值钱。链典不承诺任何收益,也不代管资金。

不止以太坊

智能合约不是以太坊独有的能力。Cardano、Solana、Tron、Tezos、Avalanche 等链也支持智能合约,比特币则只有较为有限的脚本能力。

常见问题

智能合约有法律效力吗?
不能这么理解。公开资料的表述是,智能合约通常不构成法律上有效、有约束力的协议;它是程序自动执行的交易,传统合同靠司法体系执行。具体问题以当地官方说法为准。
合约上线后还能被删掉或关停吗?
通常不能。合约默认不能被删除,与它的交互也不可逆。开发者能做的是通过代理等架构,让调用指向新的逻辑合约,而不是把旧合约抹掉——旧地址上的那段代码一直都在。
合约的漏洞只会出在项目方写的代码里吗?
不一定。公开资料列的通病分好几层:链上交易数据公开,让漏洞对所有人可见;编译器本身可能有缺陷;以太坊虚拟机也出现过漏洞;而有 bug 的代码照样改不掉。风险不只来自项目方那几行业务逻辑。
给合约的授权额度怎么收回?
按以太坊官网的撤销授权指南操作,撤销本身也是一笔链上交易。更省事的是一开始只授权这次需要的额度;不少钱包也内置了额度保护。

出处:ethereum.org 智能合约剖析(Anatomy of smart contracts),函数与状态一节。