智能合约是区块链世界的"程序"——一段运行在链上的代码,一旦部署就无法篡改,自动执行约定的规则。从DeFi到NFT,从DAO到链游,几乎所有区块链应用都离不开智能合约。
本文面向零基础的开发者,教你从0到1写出并部署你的第一个智能合约。
简单来说,智能合约就是一段存储在区块链上的代码,当满足预设条件时自动执行。
Remix是一个在线的Solidity IDE,不需要安装任何东西,打开浏览器就能用。
对于正式开发,建议使用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
// 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());
}
}
// 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: 合约本身不可篡改是安全特性,但存在代码漏洞的风险。建议参考合约审计指南进行安全检查。