:2026-02-25 11:45 点击:2
在区块链的世界里,发行自己的代币(Token)一直是许多开发者和项目方探索的方向,无论是用于社区治理、DeFi协议,还是作为项目生态的原生资产,代币都扮演着至关重要的角色,近年来,以高性能和低交易费用著称的Enso链,正成为越来越多开发者的新选择。
本文将为你提供一份详尽的、手把手的Enso链发币教程,即使你是零基础,也能跟随我们的步骤,成功在Enso链上发行属于自己的第一个代币。
在开始编码之前,我们需要准备好以下几样东西:
为了简化开发流程,我们采用业界流行的Hardhat框架,它提供了强大的编译、测试和部署功能。
初始化项目:打开你的终端,创建一个新的文件夹并进入,然后运行以下命令初始化一个Hardhat项目。
mkdir enso-token-project cd enso-token-project npx hardhat
选择配置:在交互式界面中,依次选择:
Create a JavaScript project (创建一个JavaScript项目)This basic sample project (这个基础示例项目)Yes (添加.gitignore文件)安装依赖:Hardhat会自动创建一个contracts文件夹,里面有一个Lock.sol示例合约,我们还需要安装一些额外的依赖,特别是与Solana/Enso链交互的库。
# 安装Hardhat的Solana插件 npm install --save-dev @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-ethers ethers # 安装与Solana/Enso链交互的库 npm install @solana/web3.js
在Enso链上,最简单、最标准的代币合约是遵循SPL(Solana Program Library)标准的Token,我们可以直接使用官方提供的程序,无需从头编写复杂的逻辑。
为了让你更好地理解,我们将创建一个简单的合约,它实际上会调用Enso链上已经部署好的SPL Token程序。
创建合约文件:在contracts目录下,创建一个名为EnsoToken.sol的新文件。
编写合约代码:打开EnsoToken.sol,粘贴以下代码,这是一个非常基础的合约,它将使用SPL Token程序的标准接口来创建和管理你的代币。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@nomicfoundation/hardhat-network-helpers/src/helpers.ts";
/**
* @title EnsoToken
* @dev 这是一个示例合约,展示了如何在Enso链上部署一个ERC20代币。
* 注意:实际部署时,Enso链作为兼容Solana的链,其底层是SPL Token标准。
* 此合约为了简化演示,使用OpenZeppelin的ERC20标准,并通过Hardhat进行模拟部署。
* 在真实的Enso链上部署,你可能需要使用Solana的Web3.js库来与SPL Token程序交互。
*/
contract EnsoToken is ERC20 {
/**
* @dev 构造函数,创建一个名为"My Enso Token"和符号为"MEN"的代币。
* @param _initialSupply 初始供应量,这里设置为1000万个,小数位为18。
*/
constructor(uint256 _initialSupply) ERC20("My Enso Token", "MEN") {
_mint(msg.sender, _initialSupply);
}
}
代码解释:
import:导入了OpenZeppelin提供的标准ERC20合约,这为我们省去了大量底层实现工作。contract EnsoToken is ERC20:我们的合约继承自ERC20,自动获得了所有代币标准的功能,如transfer, approve, balanceOf等。constructor:这是合约的构造函数,只在合约部署时运行一次。ERC20("My Enso Token", "MEN"):设置了代币的全称(My Enso Token)和符号(MEN)。_mint(msg.sender, _initialSupply):将初始供应量的代币铸造(创建)并发送给合约的部署者(也就是你)。我们需要修改scripts/deploy.js文件,让Hardhat知道如何部署我们的EnsoToken合约。
打开scripts/deploy.js替换为:
// scripts/deploy.js
async function main() {
// 获取我们部署的合约工厂
const EnsoToken = await ethers.getContractFactory("EnsoToken");
// 部署合约,并设置初始供应量为 10,000,000 * (10^18)
// 因为ERC20默认小数位是
18位
const initialSupply = ethers.parseUnits("10000000", 18);
const ensoToken = await EnsoToken.deploy(initialSupply);
// 等待部署交易被确认
await ensoToken.waitForDeployment();
// 输出部署信息
console.log(`EnsoToken 合约已成功部署!`);
console.log(`合约地址: ${ensoToken.target}`);
}
// 执行主函数并捕获错误
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
万事俱备,让我们来编译并部署合约。
编译合约:在终端中运行以下命令,如果一切顺利,Hardhat会在artifacts目录下生成编译好的合约字节码。
npx hardhat compile
部署合约:这是最后一步!运行部署脚本。
npx hardhat run scripts/deploy.js --network <你的网络名称>
请将<你的网络名称>替换为你在hardhat.config.js中为Enso链测试网或主网定义的网络名称,例如ensoTestnet。
示例:
npx hardhat run scripts/deploy.js --network ensoTestnet
部署成功后,你会在终端看到类似下面的输出:
EnsoToken 合约已成功部署!
合约地址: 0x1234567890123456789012345678901234567890
这个0x...地址就是你的代币合约地址,你的代币已经正式“出生”了!
本文由用户投稿上传,若侵权请提供版权资料并联系删除!