智能合约开发入门:从零到部署第一个合约 2026

📅 2026-07-21 · ☕ 阅读时间约10分钟 · 📂 开发

智能合约是区块链世界的"程序"——一段运行在链上的代码,一旦部署就无法篡改,自动执行约定的规则。从DeFi到NFT,从DAO到链游,几乎所有区块链应用都离不开智能合约。

本文面向零基础的开发者,教你从0到1写出并部署你的第一个智能合约。

一、什么是智能合约?

简单来说,智能合约就是一段存储在区块链上的代码,当满足预设条件时自动执行。

二、开发环境搭建

方式一:Remix IDE(最推荐新手)

Remix是一个在线的Solidity IDE,不需要安装任何东西,打开浏览器就能用。

  1. 打开 remix.ethereum.org
  2. 左侧创建新文件,命名为 MyToken.sol
  3. 编写合约代码
  4. 点击"Compile"编译
  5. 点击"Deploy"部署到测试网

方式二:本地开发环境(Hardhat)

对于正式开发,建议使用Hardhat框架:

npm init -y
npm install --save-dev hardhat
npx hardhat init
# 选择 `Create an empty hardhat.config.js`
npm install @openzeppelin/contracts
npx hardhat compile

三、编写第一个ERC-20代币合约

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

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

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MTK") {
        _mint(msg.sender, 1000000 * 10 ** decimals());
    }
}

四、编写第一个NFT合约

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

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyNFT is ERC721, Ownable {
    uint256 private _nextTokenId;
    uint256 public constant MAX_SUPPLY = 10000;
    uint256 public mintPrice = 0.001 ether;

    constructor() ERC721("MyNFT", "MNFT") Ownable(msg.sender) {}

    function mint(address to) public payable {
        require(msg.value >= mintPrice, "Not enough ETH");
        require(_nextTokenId < MAX_SUPPLY, "Max supply reached");
        _safeMint(to, _nextTokenId);
        _nextTokenId++;
    }

    function withdraw() public onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }
}

五、部署合约

部署合约需要支付Gas费。建议先在测试网部署测试,确认无误后再部署到主网。

六、合约验证和发布

部署后需要在区块链浏览器上验证合约源码,让其他人可以看到并交互。

七、常见问题

Q: 学习智能合约需要什么基础?
A: 至少需要了解基本的编程概念(变量、函数、条件语句)。有JavaScript/Python基础学得更快。

Q: 部署一个合约要多少钱?
A: 测试网免费。主网根据复杂度不同,一个简单的ERC-20合约约$50-200的Gas费。

Q: 智能合约安全吗?
A: 合约本身不可篡改是安全特性,但存在代码漏洞的风险。建议参考合约审计指南进行安全检查。

🔧 推荐工具:
AI智能对话 — 用AI辅助写智能合约代码
汇率换算工具 — 实时ETH价格查询
区块链浏览器 — 查询已部署合约