Appearance
26 · 智能合约简述
LESSON 26 / 公开整理
智能合约是部署在区块链上的程序:代码定义规则,节点执行规则,状态结果通过共识写入链上。它减少了对某些中间人的依赖,却不能保证人写的代码没有漏洞。“不可篡改”既可能带来可预期性,也可能让错误被持续执行。
学习目标
读完本节,你应能:
- 描述从源代码到合约状态变化的基本流程。
- 解释 Gas 为什么是计算资源成本,以及失败交易为何仍可能收费。
- 区分代码执行可信与代码内容正确。
- 解释 ERC-20、ERC-721 和 ERC-1155 的主要资产表达方式。
- 在阅读合约时关注审计、源码、权限、升级和运行历史,而不是只看宣传。
课程正文
什么是智能合约
赌约和自动售货机都可以帮助理解条件式执行:预先写好的规则接收输入,条件满足后执行约定动作。智能合约把这种规则部署到区块链执行环境中,由网络节点按相同代码处理状态变化。
它可以减少对第三方人工执行的依赖,但不改变一个事实:规则由人编写,输入可能来自不可靠的预言机,权限和升级逻辑也可能被配置错误。代码自动执行不等于结果符合用户期待。
从代码到链上状态
以 EVM 合约为例,常见流程是:
Solidity 或其他语言 → 编译为字节码 → 部署交易 → 获得合约地址 → 用户调用函数 → EVM 执行 → 共识写入状态
Gas 是执行计算与存储所需的资源计量。复杂操作需要更多 Gas,网络拥堵会影响费用;交易即使最终失败,也可能已经消耗了执行过程中的资源。具体费用取决于网络和实现,不能把教材中的示例当作当前报价。
Code is Law 的边界
“Code is Law”强调网络会忠实执行已部署的规则,但它不能证明规则设计正确。The DAO 等历史事件说明漏洞、治理和社会共识可能同时影响结果。阅读一个合约系统时,应至少检查:源代码是否公开、审计范围和结论、Owner 或管理员权限、代理升级逻辑、预言机依赖、暂停机制以及历史运行记录。
合约的可组合性像积木一样提高开发效率,也会把一个组件的错误传播给依赖它的其他组件。透明的字节码和交易记录有助于验证,但不会替代代码审查和风险判断。
应用与多链生态
智能合约可用于 DeFi、NFT、DAO、GameFi,也可用于供应链、保险、版权和预测市场等场景。不同生态采用不同语言和执行环境,例如 EVM/Solidity、Solana/Rust、Aptos 与 Sui/Move、CosmWasm 和 NEAR。迁移代码并不等于迁移安全模型、工具链和运行假设。
ERC 标准如何促进互操作
- ERC-20 表达同质化代币。
balanceOf查询余额,transfer转账,approve与transferFrom支持经授权的代扣。ETH 是原生资产,WETH 是通过合约适配 ERC-20 接口的包装资产。 - ERC-721 用 Token ID 表达唯一资产,常见接口包括
ownerOf、转移、授权和tokenURI。链上所有权不自动等于图片版权,许可条款仍需单独确认。 - ERC-1155 可在一个合约中表达多种同质或非同质资产,并支持批量操作,适合游戏和票务等场景。
标准的价值在于让钱包、应用和市场有共同接口,不在于让资产天然安全。标准实现仍可能存在权限、逻辑、预言机和升级风险。
概念结构
阅读合约时按四层记录:
- 规则:代码允许什么状态变化?
- 执行:谁调用,节点如何执行,Gas 如何计量?
- 资产接口:代币标准如何表达余额、所有权和授权?
- 信任边界:管理员、预言机、升级代理、外部服务和治理谁能改变结果?
可验证问题
- 为什么代码执行可信不等于代码内容正确?
- 合约部署后,用户调用函数时发生了哪些步骤?
approve与transferFrom组合解决什么问题,又带来什么授权边界?- ERC-721 的链上所有权为什么不自动等于版权?
- 可升级代理在便利性之外增加了哪些管理权限?
练习与复盘
选择一个公开合约的文档和源码页面,只做结构阅读。记录其状态、主要入口、资产接口、管理员权限、升级方式、预言机和外部依赖。最后列出三项仍需独立核验的事实,不执行交易、不授予授权。
来源与时效提醒
本页公开整理自课程 26 的 preview、mindmap 与 notes。Gas、链性能、标准采用、审计质量、项目状态和监管环境会变化;历史攻击事件只用于理解风险类型,不代表当前安全结论。
本页是智能合约基础学习材料,不构成代码审计、法律意见、投资建议或真实合约交互指令。