一、ERC20代币概述1.什么是ERC20代币?ERC20(EthereumRequestforComments20)是以太坊区块链上的一种代币标准协议,它定义了一套规则和接口,使得开发者能够在以太坊网络上创建可互操作的代币。ERC20标准规定了代币必须实现的6个基本功能和2个可选功
<!--StartFragment-->
ERC20(Ethereum Request for Comments 20)是以太坊区块链上的一种代币标准协议,它定义了一套规则和接口,使得开发者能够在以太坊网络上创建可互操作的代币。ERC20标准规定了代币必须实现的6个基本功能和2个可选功能,确保了不同代币之间的兼容性。
1.设置开发环境
mkdir my-erc20-token
cd my-erc20-token
npm init -y
npm install --save-dev hardhat
npx hardhat
2.安装OpenZeppelin合约库
npm install @openzeppelin/contracts
3.编写ERC20合约创建contracts/MyToken.sol文件:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply);
}
}
4.编写部署脚本创建scripts/deploy.js
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy(1000000); // 初始供应量100万
console.log("MyToken deployed to:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
5.部署到测试网
npx hardhat run scripts/deploy.js --network goerli
MyToken.sol
1.初始化项目
mkdir my-erc20-project
cd my-erc20-project
npm init -y
npm install --save-dev hardhat
npx hardhat
2.配置项目编辑
require("@nomicfoundation/hardhat-toolbox");
module.exports = {
solidity: "0.8.18",
networks: {
goerli: {
url: "YOUR_ALCHEMY_URL",
accounts: ["YOUR_PRIVATE_KEY"]
}
}
};
3.编写进阶ERC20合约
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract MyAdvancedToken is ERC20, Ownable {
uint256 public constant MAX_SUPPLY = 10000000 * 10**18;
constructor() ERC20("AdvancedToken", "ADV") {}
function mint(address to, uint256 amount) public onlyOwner {
require(totalSupply() + amount <= MAX_SUPPLY, "Exceeds max supply");
_mint(to, amount);
}
function burn(uint256 amount) public {
_burn(msg.sender, amount);
}
}
4.编写测试脚本
const { expect } = require("chai");
describe("MyAdvancedToken", function() {
it("Should mint tokens correctly", async function() {
const [owner] = await ethers.getSigners();
const Token = await ethers.getContractFactory("MyAdvancedToken");
const token = await Token.deploy();
await token.mint(owner.address, 1000);
expect(await token.balanceOf(owner.address)).to.equal(1000);
});
});
5.部署和验证
npx hardhat test
npx hardhat run scripts/deploy.js --network goerli
npx hardhat verify --network goerli DEPLOYED_CONTRACT_ADDRESS
view
和pure
函数标记减少Gas消耗Q1:创建ERC20代币需要多少成本? A:测试网免费;主网部署Gas费根据网络拥堵程度不同,通常在50−500不等。
Q2:ERC20代币创建后如何上交易所? A:中心化交易所需要申请上市;去中心化交易所(如Uniswap)可自行创建流动性池。
Q3:ERC20和ERC721、ERC1155有什么区别? A:ERC20是同质化代币标准,ERC721是非同质化代币(NFT),ERC1155是混合标准。
Q4:代币部署后还能修改吗? A:完全去中心化的合约不可修改,但可使用代理模式实现可升级性。
Q5:如何增加代币的信任度? A:通过Etherscan验证合约、进行安全审计、公开团队信息等方式。
代币创建只是第一步,后续的社区建设、生态发展和价值创造才是长期成功的关键。
如有不明白或者不清楚的地方,请加入官方电报群:<https://t.me/gtokentool>
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!