随着区块链技术的飞速发展,各类公链生态百花齐放,为开发者提供了丰富的发币选择,EDEN链作为一条新兴的高性能、低成本公链,其友好的开发环境和强大的生态潜力,吸引了众多项目方考虑在其上发行代币,本文将为您详细解析在EDEN链上发行代币的完整步骤,助您轻松上手。
前期准备与规划
在正式启动发币流程之前,充分的准备工作至关重要,这将直接影响到后续步骤的顺利程度和代币的最终表现。
-
明确代币定位与用途:
- 问自己:代币的核心价值是什么?是作为平台治理币、应用内支付工具、激励代币,还是其他用途?
- 经济模型设计:确定代币的总供应量、分配方案(如团队、私募、公募、生态奖励、社区空投等)、释放机制、是否需要锁仓、是否具备通缩/通胀机制等,一个合理的经济模型是代币长期健康发展的基石。
-
选择代币标准:
- EDEN链通常支持以太坊兼容的代币标准,如 ERC-20(最常用,适用于 fungible token,即同质化代币)。
- 如果您的项目需要非同质化代币(NFT),则可以选择 ERC-721 或 ERC-1155 标准。
- 本文将以最常用的 ERC-20 代币为例进行阐述。
-
准备开发环境:
- 安装Node.js:确保您的系统已安装最新稳定版的 Node.js(建议 LTS 版本)。
- 安装npm/yarn:Node.js 包管理器,用于安装和管理依赖。
- 代码编辑器:如 VS Code。
- MetaMask:或支持EDEN链的其他Web3钱包,用于与EDEN链交互、测试和部署。
-
获取EDEN链测试网/主网RPC URL和测试币:
- 测试网:在正式部署前,务必在测试网上进行测试,您可以从EDEN链官方文档、官方Discord或Twitter公告中获取测试网的RPC URL和测试水龙头(faucet)地址,以获取测试用的EDEN币(如tEDEN)。
- 主网:部署到主网时,需要使用主网RPC URL,并确保钱包中有足够的EDEN原生币(如EDEN)用于支付Gas费。
编写智能合约
代币的核心逻辑是通过智能合约来实现的。
-
选择开发框架:
- Hardhat:功能强大,插件丰富,适合中大型项目。
- Truffle:老牌开发框架,社区成熟。
- Remix IDE:在线集成开发环境,无需本地配置,适合快速原型开发和初学者。
- 本文以Hardhat为例。
-
创建Hardhat项目:
mkdir eden-token-project cd eden-token-project npm init -y npm install --save-dev hardhat npx hardhat
按照提示选择 "Create a JavaScript project"(或TypeScript),并回答相关问题。
-
安装OpenZeppelin合约: OpenZeppelin提供了一套经过审计的、安全的智能合约标准模板,包括ERC-20,推荐使用。
npm install @openzeppelin/contracts
-
编写ERC-20代币合约: 在
contracts/目录下创建一个新的Solidity文件,MyEDENToken.sol。// SPDX-License-Identifier: MIT pragma solid
ity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract MyEDENToken is ERC20 { constructor(string memory name, string memory symbol) ERC20(name, symbol) { _mint(msg.sender, 1000000 * 10**decimals()); // 发行100万代币,18位小数 } }
name:代币全称,如 "My EDEN Token"。symbol:代币简称,如 "MET"。_mint(msg.sender, 1000000 * 10**decimals()):在部署时将100万枚代币铸造给部署者地址。decimals()通常为18,与以太坊兼容。
编译智能合约
在部署前,需要编译智能合约以确保代码没有语法错误。
npx hardhat compile
编译成功后,合约的ABI(应用二进制接口)和字节码会生成在 artifacts/contracts/ 目录下。
部署智能合约
部署是将智能合约上链到EDEN链的关键步骤。
-
配置Hardhat网络: 在
hardhat.config.js文件中添加EDEN链(测试网或主网)的配置:require("@nomicfoundation/hardhat-toolbox"); require("@nomicfoundation/hardhat-ethers"); const PRIVATE_KEY = "YOUR_PRIVATE_KEY"; // 部署钱包的私钥(测试网或主网) const RPC_URL = "YOUR_EDEN_CHAIN_RPC_URL"; // EDEN链测试网/主网RPC URL module.exports = { solidity: "0.8.20", networks: { edenTestnet: { url: RPC_URL, accounts: [PRIVATE_KEY], chainId: 1666800000 // 替换为EDEN测试网的实际chainId,主网chainId请查阅官方文档 }, edenMainnet: { url: RPC_URL, // 主网RPC accounts: [PRIVATE_KEY], chainId: 1666800001 // 替换为EDEN主网的实际chainId,请查阅官方文档 } }, };- 获取PRIVATE_KEY:从您的MetaMask钱包中导出私钥(注意:私钥极度敏感,切勿泄露给他人!)。
- 获取RPC_URL和chainId:从EDEN链官方渠道获取。
-
编写部署脚本: 在
scripts/目录下创建部署脚本,deploy.js:async function main() { const [deployer] = await ethers.getSigners(); console.log("Deploying contracts with the account:", deployer.address); const MyEDENToken = await ethers.getContractFactory("MyEDENToken"); const tokenName = "My EDEN Token"; const tokenSymbol = "MET"; const myEDENToken = await MyEDENToken.deploy(tokenName, tokenSymbol); await myEDENToken.waitForDeployment(); console.log("MyEDENToken deployed to:", myEDENToken.target); } main() .then(() => process.exit(0)) .catch((error) => { console.error(error); process.exit(1); }); -
执行部署:
- 部署到测试网:
npx hardhat run scripts/deploy.js --network edenTestnet
- 部署到主网:
npx hardhat run scripts/deploy.js --network edenMainnet
部署成功后,脚本会输出合约的地址,请务必妥善保存此地址,这是您代币在EDEN链上的唯一标识。
- 部署到测试网:
验证智能合约
合约验证后,其他人可以在EDEN链的浏览器上查看合约源代码,增加透明度和可信度。
-
获取验证器API Key: 通常需要在EDEN链的区块浏览器(如类似Etherscan的浏览器)上注册并获取API Key,具体请查阅EDEN链官方文档。
-
使用Hardhat插件验证: 安装
hardhat-verify插件:npm install --save-dev hardhat-verify
在
hardhat.config.js中配置:require("@nomicfoundation/hardhat-verify"); require("@nomicfoundation/hardhat-toolbox"); require("@nomicfoundation/hardhat-ethers"); // ... 其他配置 ... module.exports = { // ... 其他配置 ... etherscan: { apiKey: "YOUR_ETHERSCAN_API_KEY", // EDEN链浏览器API Key }, }; -
执行验证命令:
npx hardhat verify --network edenTestnet "CONTRACT_ADDRESS" "ARG1" "ARG2"
CONTRACT_ADDRESS:您部署的代币合约地址。ARG1,ARG2:构造函数