W3
07智能合约入门9 个步骤3 个小节预计 25-35 分钟v1 · 更新于 2026-09-19

智能合约原理:EVM、状态与不可篡改

从零理解智能合约:它为什么被称为「部署在链上的程序」,以太坊如何从一本账本升级为「世界计算机」,合约地址、字节码、存储与 ABI 分别是什么,EVM(以太坊虚拟机)如何用栈式模型逐条执行操作码并计量 Gas,为什么执行失败要整体回滚,以及不可篡改性、可组合性、可升级代理各自带来的风险,最后用 The DAO、Parity 等真实事故建立风险直觉。

智能合约原理:EVM、状态与不可篡改
⚠️
本章要点提示

本章为原理科普,不涉及资金操作,但请牢记三条结论:合约一旦部署,字节码通常无法修改,写错的逻辑只能靠新合约或代理模式补救;「不可篡改」不等于安全,链上已有大量被攻击和废弃的合约;任何自称「稳赚」「自动套利」的合约都可能是资金盘,看不懂代码就不要往里转钱。

小节 01

什么是智能合约

步骤 13
01

理解智能合约:部署在链上的确定性程序

登录记录进度

智能合约(Smart Contract)是部署在区块链上、由全网节点共同执行的确定性程序。它的代码与数据一起存放在链上,任何人都可以调用,但没有人可以私自修改或删除。所谓「智能」并不指它具备人工智能,而是指执行条件由代码自动判定、无需人工干预、结果对所有节点一致:同一个输入在同一份链上状态下,全世界节点算出来的结果必然相同。合约账户没有私钥,不能主动发起交易,只能被动地响应外部交易或调用。

理解智能合约:部署在链上的确定性程序
理解智能合约:部署在链上的确定性程序|界面示意 · ethereum.org · 采集于 2026-09-18
💡
小技巧:

把智能合约理解成「一台谁都能按按钮、但谁也打不开外壳的自动售货机」最贴切:规则写在机器里,投币即出货,没有人能在中途改规则。

02

看清以太坊的核心创新:从账本到世界计算机

登录记录进度

比特币把区块链做成了「一本只能记账的账本」,交易里只能写「谁转给谁多少钱」。以太坊(Ethereum)的关键创新是在交易中加入两个字段:data(附带的数据)和 to(目标地址)。

to 指向一个合约地址时,这笔交易不再只是转账,而是触发一段代码在全世界节点上运行,并允许这段代码读写链上状态。于是区块链从「分布式账本」升级为「世界计算机(World Computer)」:一个永不关机的公共状态机,任何人付费即可提交一段计算请求。

看清以太坊的核心创新:从账本到世界计算机
看清以太坊的核心创新:从账本到世界计算机|界面示意 · ethereum.org · 采集于 2026-09-18
03

拆解一个合约的五个组成部分

登录记录进度

任何一个已部署的合约都由五部分构成:合约地址(Contract Address),由部署者地址与 nonce 推导得到,是以太坊上唯一定位合约的编号;字节码(Bytecode),Solidity 编译后生成的机器码,真正被 EVM 执行的内容;存储(Storage),合约自己的持久化数据区,读写最贵;余额(Balance),合约地址持有的 ETH,可以被别人转入,也可以被合约代码转出;ABI(Application Binary Interface,应用二进制接口),一份描述函数名、参数与返回值的说明书,让钱包和网站知道该怎么拼装调用数据。

拆解一个合约的五个组成部分
拆解一个合约的五个组成部分|界面示意 · ethereum.org · 采集于 2026-09-18
🚫
避坑提醒:

ABI 只是一份调用说明书,任何人都能照着自己伪造的 ABI 去调用你的合约;判断一个合约是否可信,要看链上真实字节码与已验证源码,而不是网站页面上写着什么。

小节 02

执行、状态与可组合性

步骤 46
04

理解 EVM 执行模型:栈式虚拟机与 Gas 计量

登录记录进度

EVM(Ethereum Virtual Machine,以太坊虚拟机)是一个栈式虚拟机:它没有寄存器,所有运算都通过一个后进先出的数据栈完成,操作码(Opcode)如 PUSH1ADDSSTORECALL 被逐条取出执行。

为防止死循环与资源滥用,每条操作码都被赋予一个价格,累加得到 Gas 消耗;调用者必须为该笔交易支付 Gas 费。执行过程中任何一步触发了 require 失败、revert、Gas 耗尽或越界访问,整笔交易的状态变更会被整体回滚(原子性),如同从未发生过。

理解 EVM 执行模型:栈式虚拟机与 Gas 计量
理解 EVM 执行模型:栈式虚拟机与 Gas 计量|界面示意 · ethereum.org · 采集于 2026-09-18
💡
小技巧:

记住一句话:链上计算是「先执行、后结算,出错全撤销」。这意味着你不用担心合约执行到一半失败导致半成品状态,但也别指望失败时能退回 Gas。

05

理解状态变更与不可篡改:优势的另一面

登录记录进度

合约的状态变更不是直接改写某个节点的数据库,而是打包进区块、由全网节点重新执行同一笔交易后各自得到相同结果,从而达成共识。也正因为如此,合约一旦部署,其字节码无法被任何人修改或删除,这就是不可篡改(Immutability)

好处是规则公开、无人能偷偷改条款,适合托管、借贷、稳定币等场景;代价是写错的逻辑无法打补丁:权限设错、遗漏校验、资金被锁死,都只能眼睁睁看着。因此业界形成惯例是「先测试网、再审计、最后小额度上主网」。

理解状态变更与不可篡改:优势的另一面
理解状态变更与不可篡改:优势的另一面|界面示意 · ethereum.org · 采集于 2026-09-18
🚫
避坑提醒:

不要相信任何声称「随时可以帮你升级或回滚合约」的说法,除非该合约明确采用了可升级代理结构;普通合约部署后连作者自己都无法修改,所谓「客服帮你解冻」几乎都是骗局。

06

理解合约间调用与可组合性(DeFi 乐高)

登录记录进度

合约可以调用其他合约:通过 interface 声明目标函数与地址,内部使用 CALLdelegatecall 发起。由于所有合约共享同一条链的状态,任意合约都能像搭积木一样把别人的能力拼进自己的流程,这就是可组合性(Composability),常被称为「DeFi 乐高」:一个借贷协议可以调用稳定币合约、预言机合约、DEX 合约,几十行代码就组合出一个新理财产品。

它极大加速了创新,也让风险沿着调用链级联传播——被依赖的合约一旦出问题,所有上层协议会同时受损。

理解合约间调用与可组合性(DeFi 乐高)
理解合约间调用与可组合性(DeFi 乐高)|界面示意 · ethereum.org · 采集于 2026-09-18
🚫
避坑提醒:

可组合性意味着「你用的协议安全」并不等于「你的资产安全」:只要它依赖的预言机、稳定币或流动性池被攻击,你的资金同样可能被波及,评估风险要看整条依赖链。

小节 03

升级、日志与风险直觉

步骤 79
07

理解可升级合约:代理模式与 delegatecall

登录记录进度

为了在不牺牲链上地址的前提下修复逻辑,业界设计了代理模式(Proxy Pattern):用户始终调用代理合约(Proxy)的固定地址,代理把调用通过 delegatecall 转发给实现合约(Implementation / Logic Contract)

delegatecall 的特殊之处是:代码来自实现合约,但读写的是代理合约的存储,所以升级只需改代理里记录的实现地址即可。代价随之出现:存储布局必须严格对齐,否则新旧实现会读写错位的槽位;管理员权限一旦被盗,攻击者可以直接把实现合约换成恶意代码,瞬间掏空资金。

理解可升级合约:代理模式与 delegatecall
理解可升级合约:代理模式与 delegatecall|界面示意 · ethereum.org · 采集于 2026-09-18
🚫
避坑提醒:

使用可升级协议意味着你必须信任其管理员多签:管理员可以随时替换实现合约。请务必查清升级权限由谁掌握、是否需要多签与时间锁,不要把「可升级」当成纯优点。

08

读懂事件与日志(Event / Log)

登录记录进度

链上状态存在存储里,查询历史状态既昂贵又不方便。于是合约可以通过 eventemit 把关键动作写入日志(Log):日志不进合约存储、不参与状态计算,但会被永久记在交易的收据(Receipt)里,成本远低于存储写入。

日志中的 indexed 字段会被建成主题(Topic)索引,方便按地址或 ID 精确过滤。钱包余额变化、区块浏览器上的「Events」标签、行情与风控后台的数据,几乎都靠链下服务监听事件来获取,而不是逐个遍历区块重算状态。

读懂事件与日志(Event / Log)
读懂事件与日志(Event / Log)|界面示意 · ethereum.org · 采集于 2026-09-18
💡
小技巧:

在区块浏览器上查一笔 DeFi 交易时,先看 Logs 标签往往比看结果更清楚:授权、转账、兑换每一步都会留下事件,能还原出完整的资金路径。

09

认识真实事故与常见误区,建立风险直觉

登录记录进度

2016 年 The DAO 因重入攻击(Reentrancy,即在余额扣减前被反复回调提款)被盗约 360 万枚 ETH,最终导致以太坊硬分叉出 ETC;2017 年 Parity 多签钱包因初始化函数可被任意调用,多个钱包被永久冻结,约 51 万枚 ETH 再也无法取出;此外整数溢出(Overflow)、权限缺失、随机数可预测、预言机被操纵都是高频漏洞。同时要破除两个误区:合约不是「自动执行的法律合同」,它只是代码,链上违约没有任何法律强制力兜底;不可篡改也不等于不会出事,代码漏洞、私钥泄露、管理员作恶都不受不可篡改保护。

认识真实事故与常见误区,建立风险直觉
认识真实事故与常见误区,建立风险直觉|界面示意 · ethereum.org · 采集于 2026-09-18
🚫
避坑提醒:

凡是宣传「代码自动帮你赚钱」「合约保本高收益」的项目,本质都是把资金交给一段你无法验证的代码,跑路与被盗只是时间问题,请勿投入无法承受损失的资金。

💡
小技巧:

养成一个习惯:任何要投入资金的合约,先去区块浏览器看它的源码是否已验证、创建了多久、持币地址有多少、审计报告是否公开。

Etherscan 区块浏览器(可查看任何合约源码与交易)

来源与时效

本章记录平台 ethereum.org · 客户端 Web / App · 版本 v1 · 最后更新 2026-09-19 Web3 产品的界面与规则更新频繁,动手前请以官方当前界面与公告为准。

这一章可以动手试

区块链域有 2 个练习, 在浏览器里真跑(不连钱包、不发交易),可以拿它们验证刚读到的结论。

相关百科文章

看完本章后可以延伸阅读这些条目