如何无需付费在电脑上发布智能合约并创建链上代币?
本地创建并部署以太坊代币(无需依赖在线IDE)
一、准备本地开发环境
- 安装Node.js(v16及以上版本),确保npm命令可用
- 新建空文件夹,执行
npm init -y初始化项目,再安装Hardhat开发框架:npm install --save-dev hardhat
二、编写代币合约
- 执行
npx hardhat,选择「Create a JavaScript project」,按提示完成项目初始化 - 在
contracts/目录下新建MyToken.sol,写入标准ERC20代币合约(基于OpenZeppelin的成熟模板,避免安全漏洞):
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract MyToken is ERC20 { // 构造函数:代币名称、符号、初始发行量(需乘以10^18对应decimals) constructor(uint256 initialSupply) ERC20("MyToken", "MTK") { _mint(msg.sender, initialSupply * 10 ** decimals()); } }
- 安装OpenZeppelin合约库:
npm install @openzeppelin/contracts
三、配置部署脚本与网络
- 打开
scripts/deploy.js,修改为以下部署逻辑:
const hre = require("hardhat"); async function main() { const MyToken = await hre.ethers.getContractFactory("MyToken"); // 部署时传入初始发行量(示例为1000个代币) const myToken = await MyToken.deploy(1000); await myToken.waitForDeployment(); console.log(`代币合约已部署至:${await myToken.getAddress()}`); } main().catch((error) => { console.error(error); process.exitCode = 1; });
- 配置网络:打开
hardhat.config.js,添加测试网/主网配置(用本地私钥签名,无需在线钱包),也可配置本地私链(完全免费测试):
require("@nomicfoundation/hardhat-toolbox"); module.exports = { solidity: "0.8.20", networks: { // Sepolia测试网配置 sepolia: { url: "https://sepolia.infura.io/v3/你的Infura项目ID", // 或Alchemy等节点服务的URL accounts: ["你的本地钱包私钥(绝对不要泄露或上传)"] }, // 本地私链(用于免费测试) hardhat: { chainId: 1337 } } };
- 本地私链测试:执行
npx hardhat node启动本地节点,新开终端执行npx hardhat run scripts/deploy.js --network hardhat,全程无Gas费用。
四、解决Gas费用过高问题
- 手动设置Gas参数:在部署脚本中添加Gas价格和限额,避开网络拥堵时段:
const myToken = await MyToken.deploy(1000, { gasPrice: hre.ethers.parseUnits("20", "gwei"), // 自定义Gas价格为20Gwei gasLimit: 300000 // 设定足够ERC20部署的Gas限额 });
- 预估Gas费用:执行
npx hardhat estimateGas --contract contracts/MyToken.sol --constructor-args 1000,提前知晓所需费用 - 主网部署前,可通过ethers.js调用节点获取实时Gas价格,选择价格低谷时段部署
五、合约验证(可选)
若需在区块链浏览器上公开合约代码,执行 npx hardhat verify --network sepolia 合约地址 1000,需在Hardhat配置中添加Etherscan API密钥。
核心注意事项
- 私钥必须本地离线保存,绝对不可泄露或上传至公共平台
- 本地私链仅用于功能测试,代币无实际价值;测试网部署需先领取对应测试ETH
- 主网部署前,务必在测试网完成多轮功能验证,避免合约漏洞
内容的提问来源于stack exchange,提问作者0x32
相关产品推荐
相关产品推荐

