Skip to content

26 · 智能合约简述

LESSON 26 / 公开整理

阶段 03 · 链上世界怎么运行三件套:整理中约 10 分钟课程正文程序、标准与边界

智能合约是部署在区块链上的程序:代码定义规则,节点执行规则,状态结果通过共识写入链上。它减少了对某些中间人的依赖,却不能保证人写的代码没有漏洞。“不可篡改”既可能带来可预期性,也可能让错误被持续执行。

学习目标

读完本节,你应能:

  • 描述从源代码到合约状态变化的基本流程。
  • 解释 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 转账,approvetransferFrom 支持经授权的代扣。ETH 是原生资产,WETH 是通过合约适配 ERC-20 接口的包装资产。
  • ERC-721 用 Token ID 表达唯一资产,常见接口包括 ownerOf、转移、授权和 tokenURI。链上所有权不自动等于图片版权,许可条款仍需单独确认。
  • ERC-1155 可在一个合约中表达多种同质或非同质资产,并支持批量操作,适合游戏和票务等场景。

标准的价值在于让钱包、应用和市场有共同接口,不在于让资产天然安全。标准实现仍可能存在权限、逻辑、预言机和升级风险。

概念结构

阅读合约时按四层记录:

  1. 规则:代码允许什么状态变化?
  2. 执行:谁调用,节点如何执行,Gas 如何计量?
  3. 资产接口:代币标准如何表达余额、所有权和授权?
  4. 信任边界:管理员、预言机、升级代理、外部服务和治理谁能改变结果?

可验证问题

  • 为什么代码执行可信不等于代码内容正确?
  • 合约部署后,用户调用函数时发生了哪些步骤?
  • approvetransferFrom 组合解决什么问题,又带来什么授权边界?
  • ERC-721 的链上所有权为什么不自动等于版权?
  • 可升级代理在便利性之外增加了哪些管理权限?

练习与复盘

选择一个公开合约的文档和源码页面,只做结构阅读。记录其状态、主要入口、资产接口、管理员权限、升级方式、预言机和外部依赖。最后列出三项仍需独立核验的事实,不执行交易、不授予授权。

来源与时效提醒

本页公开整理自课程 26 的 preview、mindmap 与 notes。Gas、链性能、标准采用、审计质量、项目状态和监管环境会变化;历史攻击事件只用于理解风险类型,不代表当前安全结论。

本页是智能合约基础学习材料,不构成代码审计、法律意见、投资建议或真实合约交互指令。