CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
区块链入门/课时/智能合约与 Solidity
RawBlame
课时目录12 节

区块链入门

  1. 01区块链是什么
  2. 02结构与共识
  3. 03链类型与扩容
  4. 04EVM 生态
  5. 05智能合约与 Solidity
  6. 06开发工具链
  7. 07DApp 与 Web3 前端
  8. 08DeFi 与应用场景
  9. 09预言机
  10. 10安全与测试
  11. 11部署与节点运维
  12. 12综合练习

智能合约与 Solidity

smart-contracts、Solidity、ERC-20/721、Remix。

40 分钟

智能合约与 Solidity

智能合约是部署在区块链上的程序:条件满足则自动执行,无人可单方篡改已部署逻辑。Solidity 是 EVM 上最常用的语言。本课覆盖语法要点、ERC-20/721 标准与 Remix 在线 IDE。见 /roadmaps/blockchain。

学习目标

  • 编写并部署一个简单的 Solidity 合约
  • 理解 ERC-20(同质化代币)与 ERC-721(NFT)接口
  • 掌握 msg.sender、事件、modifier 等常见模式

最小合约

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract Counter {
    uint256 public count;
    event Incremented(address indexed by, uint256 newValue);

    function increment() external {
        count += 1;
        emit Incremented(msg.sender, count);
    }
}

在 Remix 中编译 → 部署到 Sepolia → 在区块浏览器查看 Incremented 事件。

ERC-20 代币骨架

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract LessonToken is ERC20 {
    constructor() ERC20("LessonToken", "LST") {
        _mint(msg.sender, 1_000_000 * 10 ** decimals());
    }
}

核心方法:transfer、approve、transferFrom;钱包与 DApp 都依赖这套接口。

ERC-721 NFT 要点

  • 每个 tokenId 唯一,对应一个 ownerOf
  • 常用于数字藏品、游戏道具、身份凭证
  • 元数据通常存 IPFS,链上只存 tokenURI

常见陷阱

问题说明
整数溢出Solidity 0.8+ 默认检查
重入攻击先改状态再转账;或用 ReentrancyGuard
权限缺失敏感函数加 onlyOwner 或角色控制
浮点链上无浮点,用整数 + 精度缩放

练习

  • 在 Remix 部署 Counter,调用 increment 三次并查看事件
  • 继承 OpenZeppelin 部署 ERC-20,向两个地址各转 100 代币
  • 阅读 ERC-721 接口文档,列出与 ERC-20 的三个主要区别

小结

合约即链上 API,部署即发布、难以撤回。 下一课用 Hardhat / Foundry 搭建本地专业开发流程。

加载本节练习…
← 上一课EVM 生态下一课 →开发工具链