×
Array
(
[fid] => 6974
[description] => 专注于币圈最新最快资讯,数字货币应用及知识普及
[password] =>
[icon] => b1/common_6974_icon.png
[redirect] =>
[attachextensions] =>
[creditspolicy] => Array
(
[post] => Array
(
[usecustom] => 1
[cycletype] => 1
[cycletime] => 0
[rewardnum] => 5
[extcredits1] => 1
[extcredits2] => 1
[extcredits3] => 0
[extcredits4] => 0
[extcredits5] => 0
[extcredits6] => 0
[extcredits7] => 0
[extcredits8] => 0
[rid] => 1
[fid] => 6974
[rulename] => 发表主题
[action] => post
[fids] => 32,52,67,447,1120,1151,1156,6750,6762,6763,6766,6769,6772,6773,6787,6796,6808,6809,6810,6813,6814,6820,6829,6830,6846,6856,6864,6865,6827,6930,6931,6776,6858,6880,6764,6932,6871,6758,6905,1116,6788,6812,6798,6736,6759,6842,6966,6767,6828,6924,6935,6936,6938,6940,6941,6826,6909,6803,6919,6911,6908,6881,6920,6912,6913,6921,6925,6922,6789,6818,6819,6872,6928,6969,6889,6888,6917,6939,6947,6961,6937,6943,6970,6869,6900,6902,6783,6817,1111,6870,6821,6876,6952,6954,6960,6942,6910,6949,6962,6963,6964,6927,6926,6973,6728,6929,6874,6894,6896,6885,6857,6868,1113,6778,56,6844,6878,6802,6933,6811,6923,6877,6875,6918,6892,6757,6832,6833,6795,6793,6848,6837,6849,6850,6851,6852,6853,6854,6863,6882,6836,6790,6838,6794,6791,6873,555,6934,6958,6944,6945,6907,6779,6886,6950,6904,6956,6862,6957,6855,6955,6959,6914,6965,6971,6972,6953,6976,6824,6815,6891,6866,6979,6977,6765,6903,6948,6980,6981,6983,6799,6982,6951,6984,6975,6895,6845,6879,1121,6974
)
[reply] => Array
(
[usecustom] => 1
[cycletype] => 1
[cycletime] => 0
[rewardnum] => 0
[extcredits1] => 0
[extcredits2] => 1
[extcredits3] => 10
[extcredits4] => 0
[extcredits5] => 0
[extcredits6] => 0
[extcredits7] => 0
[extcredits8] => 0
[rid] => 2
[fid] => 6974
[rulename] => 发表回复
[action] => reply
[fids] => 32,52,67,447,1120,1151,1156,6750,6763,6766,6769,6772,6773,6787,6796,6808,6809,6810,6813,6814,6820,6829,6830,6846,6856,6864,6865,6827,6930,6931,6776,6858,6880,6764,6932,6871,6758,1116,6788,6812,6798,6736,6759,6842,6966,6767,6828,6924,6935,6936,6938,6940,6941,6826,6909,6803,6919,6911,6908,6881,6920,6912,6913,6921,6925,6922,6789,6818,6819,6872,6928,6969,6889,6888,6917,6939,6947,6961,6937,6943,6970,6869,6900,6902,6783,6817,1111,6870,6821,6876,6952,6954,6960,6942,6910,6949,6962,6963,6964,6927,6926,6973,6728,6929,6874,6894,6896,6885,6857,6868,1113,6778,56,6844,6878,6802,6933,6811,6923,6877,6875,6918,6892,6757,6832,6833,6795,6793,6848,6837,6849,6850,6851,6852,6853,6854,6863,6836,6790,6838,6794,6791,6873,555,6934,6958,6944,6945,6907,6779,6886,6950,6904,6956,6862,6957,6855,6955,6959,6914,6965,6971,6972,6953,6976,6824,6815,6891,6866,6979,6977,6765,6903,6948,6980,6981,6983,6799,6982,6951,6984,6975,6895,6845,6879,1121,6974
)
)
[formulaperm] => a:5:{i:0;s:0:"";i:1;s:0:"";s:7:"message";s:0:"";s:5:"medal";N;s:5:"users";s:0:"";}
[moderators] => 实习版主1
[rules] =>
[threadtypes] => Array
(
[required] => 1
[listable] => 1
[prefix] => 1
[types] => Array
(
[1590] => 论坛公告
[1752] => 公司优惠
[1603] => 虚拟币交流
[1753] => 数字钱包
[1754] => 虚拟币存提
[1755] => 交易所
[1655] => 虚拟币资讯
[1756] => 银行卡
[1757] => 第三方支付
[1760] => 币圈大佬
[1758] => 科技前沿
[1759] => 天策嗨聊
[1661] => 入驻合作
)
[icons] => Array
(
[1590] =>
[1752] =>
[1603] =>
[1753] =>
[1754] =>
[1755] =>
[1655] =>
[1756] =>
[1757] =>
[1760] =>
[1758] =>
[1759] =>
[1661] =>
)
[moderators] => Array
(
[1590] => 1
[1752] =>
[1603] =>
[1753] =>
[1754] =>
[1755] =>
[1655] =>
[1756] =>
[1757] =>
[1760] =>
[1758] =>
[1759] => 1
[1661] =>
)
)
[threadsorts] => Array
(
)
[viewperm] => 9 26 22 11 12 13 14 15 27 43 44 60 61 62 63 64 19 31 67 68 69 73 75 76 83 84 87 90 91 92 33 38 57 58 65 66 74 77 79 80 85 86 1 2 3 7 8
[postperm] => 22 11 12 13 14 15 27 43 44 60 61 62 63 64 19 67 68 69 73 75 76 83 84 87 90 91 92 33 38 57 58 65 66 74 77 79 80 85 86 1 2 3
[replyperm] => 26 22 11 12 13 14 15 27 43 44 60 61 62 63 64 19 67 68 69 73 75 76 83 84 87 90 91 92 33 38 57 58 65 66 74 77 79 80 85 86 1 2 3
[getattachperm] => 26 22 11 12 13 14 15 27 43 44 60 61 62 63 64 19 67 68 69 73 75 76 83 84 87 90 91 92 33 38 57 58 65 66 74 77 79 80 85 86 1 2 3
[postattachperm] => 26 22 11 12 13 14 15 27 43 44 60 61 62 63 64 19 67 68 69 73 75 76 83 84 87 90 91 92 33 38 57 58 65 66 74 77 79 80 85 86 1 2 3
[postimageperm] => 26 22 11 12 13 14 15 27 43 44 60 61 62 63 64 19 67 68 69 73 75 76 83 84 87 90 91 92 33 38 57 58 65 66 74 77 79 80 85 86 1 2 3
[spviewperm] =>
[seotitle] =>
[keywords] =>
[seodescription] =>
[supe_pushsetting] =>
[modrecommend] => Array
(
[open] => 0
[num] => 10
[imagenum] => 0
[imagewidth] => 300
[imageheight] => 250
[maxlength] => 0
[cachelife] => 0
[dateline] => 0
)
[threadplugin] => Array
(
)
[replybg] =>
[extra] => a:2:{s:9:"namecolor";s:0:"";s:9:"iconwidth";s:2:"60";}
[jointype] => 0
[gviewperm] => 0
[membernum] => 0
[dateline] => 0
[lastupdate] => 0
[activity] => 0
[founderuid] => 0
[foundername] =>
[banner] =>
[groupnum] => 0
[commentitem] =>
[relatedgroup] =>
[picstyle] => 0
[widthauto] => 0
[noantitheft] => 0
[noforumhidewater] => 0
[noforumrecommend] => 0
[livetid] => 0
[price] => 0
[fup] => 6729
[type] => forum
[name] => 虚拟币讨论大厅
[status] => 1
[displayorder] => 3
[styleid] => 0
[threads] => 27792
[posts] => 446160
[todayposts] => 6
[yesterdayposts] => 318
[rank] => 2
[oldrank] => 2
[lastpost] => 2765263 Avantis (AVNT) 加密货币市值突破 1 亿:仍被低估?(转) 1757741853 小钱儿
[domain] =>
[allowsmilies] => 1
[allowhtml] => 1
[allowbbcode] => 1
[allowimgcode] => 1
[allowmediacode] => 0
[allowanonymous] => 0
[allowpostspecial] => 21
[allowspecialonly] => 0
[allowappend] => 0
[alloweditrules] => 1
[allowfeed] => 0
[allowside] => 0
[recyclebin] => 1
[modnewposts] => 2
[jammer] => 1
[disablewatermark] => 0
[inheritedmod] => 0
[autoclose] => 0
[forumcolumns] => 3
[catforumcolumns] => 0
[threadcaches] => 0
[alloweditpost] => 1
[simple] => 16
[modworks] => 1
[allowglobalstick] => 1
[level] => 0
[commoncredits] => 0
[archive] => 0
[recommend] => 0
[favtimes] => 0
[sharetimes] => 0
[disablethumb] => 0
[disablecollect] => 0
[ismoderator] => 0
[threadtableid] => 0
[allowreply] =>
[allowpost] =>
[allowpostattach] =>
)
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 212 小时
本月在线: 20 小时
|
|
本文章详细的讲解一个最基础的链上加密货币发行过程,期间也需要利用到几个工具(当然本文章最后有一键发行的工具,嫌麻烦的可以直接翻到最后使用工具)标准流程全解析
2 q8 e* p4 z. U3 \* Y$ C" p以太坊代币(ERC‑20)从开发到上链的最简标准流程(只讲开发与发行)示例使用以太坊兼容链 + Hardhat + OpenZeppelin,先部署到测试网(Sepolia),确认无误后再部署主网。4 X- C% c7 r; _$ f& u
一、环境准备
6 f% [! L, i0 z& _9 P5 R- 必备) V; @. K: j {* k5 t$ x
- ≥ 18 与 npm
. k5 F, i2 i8 F5 E0 j& T- 一个以太坊钱包(如 MetaMask)! ^+ o" g7 s$ [ n# _6 l
- 测试网 ETH(Sepolia Faucet 获取),主网部署需主网 ETH
) {2 Z+ Q( w- f- RPC 节点(Alchemy/Infura/Ankr 等均可); T% I- C! N8 c6 X: Y7 `
- 新建项目目录,例如:erc20-token,并进入该目录
- q0 B* j2 Z8 J y; U- ^% i4 U& B二、安装与初始化& h/ Z& Z/ S" {) z( M7 C8 ~
- 初始化项目
) o7 q/ D. W& n3 U- npm init -y
" Y+ O# n0 w& @: ]4 Y; `$ i- 安装依赖
% v. @7 J# @; T0 @- 开发工具:npm i -D hardhat @
5 x9 p2 r: i* x& G7 I3 ?8 \nomicfoundation/hardhat-toolbox dotenv) y/ e0 y( T* `
- 合约库:npm i @openzeppelin/contracts
9 s0 `3 ?5 [$ `2 B- 初始化 Hardhat(可交互,也可手动建文件)- ]# z1 ?" a# }& e% D1 q/ n$ |& T
- 交互方式:npx hardhat(选择 JavaScript 项目)* k, x0 J' K1 b5 S
- 或手动创建以下文件(见下一步)
! L6 w& B1 |3 Q三、最小化项目结构与配置9 e+ f5 \7 A1 X" o# O1 d4 i
- 新建 (最小可用配置)
; V2 b- U; l7 Y F+ b& `- x- 内容示例:0 l# i! h* O U5 N; {
- require("@nomicfoundation/hardhat-toolbox");
) a7 {0 h3 G$ M- a3 E+ E- require("dotenv").config();
# ?) B% ^: @( G9 ?3 B* a# v- = {1 M T4 |. j! T
solidity: "0.8.24",
/ x; K- J0 ]) z0 Unetworks: {+ F* }" N2 P6 G( c9 F
sepolia: {9 N+ J: q$ {, ~& i0 E* D) E
url: .SEPOLIA_RPC_URL,7 M) R" W7 g; O, @6 c2 M0 |
accounts: [.PRIVATE_KEY].filter(Boolean),8 u' s% i, l2 v" e" B Z) o2 T0 I
},
_1 }- b- A* Y; `* I: A- d6 i// mainnet: { url: .MAINNET_RPC_URL, accounts: [.PRIVATE_KEY].filter(Boolean) }
/ E1 {# r8 e* i4 a, z5 k3 }},
) x# q: X# } n7 i0 M, C/ r$ Tetherscan: {* v4 x) S- L1 ?# d
apiKey:; O) r) x- U; \7 o1 J7 u0 c
.ETHERSCAN_API_KEY, // 可选:用于合约校验
) d; y" G* ~. A: y; |},8 Y, T' g% R/ P' |2 M* V- o
};
. g0 v7 z7 U4 b! m5 }9 S: W- 在项目根目录创建 .env,示例(请替换为你自己的值):7 }8 L+ T6 b1 }3 x u
- SEPOLIA_RPC_URL=' M; G, L. @9 s$ O
- MAINNET_RPC_URL=
0 X9 u6 _0 y8 W5 o. n! V- PRIVATE_KEY=你的私钥(0x开头,无空格)
0 I, m/ t$ M: x# ~& k4 r- ETHERSCAN_API_KEY=你的Etherscan API Key(可选,用于校验), G6 ]$ I2 R4 S; ]$ U1 O% \7 v
四、编写标准 ERC‑20 合约$ t% y6 e3 V1 O* F4 ]0 K
- 在 contracts/ 目录下创建 ,示例代码:1 T5 o4 A: Q4 t3 w1 d. J/ U8 w
- pragma solidity ^0.8.20;
5 w# C5 h n1 C. U( o; B8 w1 }- import "@openzeppelin/contracts/token/ERC20/";
8 I, ] O7 U" w4 h$ g- contract MyToken is ERC20 {
6 J% d$ t# b+ I: Nconstructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
/ M! r8 h- B: p; n% |/ N_mint(, initialSupply);
7 f8 I- z1 J ?4 B: N8 j}& p: m4 h% a4 _
}
, \- ?( M& t, e% k) {/ r- 说明
; D- ~3 W k/ q- 名称与符号可自定义(如 "MyToken" / "MTK")( X5 F3 R1 S8 E
- initialSupply 为初始发行量(单位为最小单位 Wei,例如 18 位小数的代币需乘 10^18)
4 r; ?: f7 x; M x! v2 a五、编写部署脚本
' Q% R5 U/ p7 ]1 O1 u" [3 u) v- 在 scripts/ 目录下创建 ,示例代码:
6 B/ W2 w8 n+ D; ?- const { ethers } = require("hardhat"); x; x8 |# L4 ]' A$ ^" u
- async function main() {
" c/ Y! [0 w0 v$ J3 n) f- aconst initialSupply = ("100000000", 18); // 1亿枚,18位小数9 F5 Z3 q3 h+ ]4 n$ S/ B) g
const token = await ("MyToken", [initialSupply]);- K2 K0 ^5 X9 j4 E, L2 W
await ();, E. B9 n( c7 @* P) s$ V
("MyToken deployed to:", );
8 ~1 F: _4 \+ Q9 d}
' P% a9 k; d9 G, v- main().catch((error) => {7 }. S2 n K# d) T/ X
(error);
4 Y2 D# U9 I w. E = 1;5 U# b2 }/ t D
});) c! F g- w5 { ? H
六、编译与部署到测试网(Sepolia)
7 Y$ `, K- c/ E% k) \ b/ a" h- 编译:npx hardhat compile- e. Y+ J! i! d4 N- O
- 部署:npx hardhat run scripts/ --network sepolia; A$ f8 V- I! P3 h- r/ R
- 运行成功会输出合约地址(MyToken deployed to: 0x...)" F4 g, t! R, i3 H
- 在区块浏览器()查询该地址,确认合约已上链
) {1 H* U( t1 f$ m* _6 q6 X# B七、可选:合约源码校验(便于他人查看源码与构造参数); A( |/ M" ]0 W1 \& h: `
- 命令:npx hardhat verify --network sepolia 合约地址 初始发行量(Wei)0 T F- N% A4 u: ~' Q7 j7 j
- 例:npx hardhat verify --network sepolia 0xYourTokenAddress
2 ^" _# f* F. T& O2 U4 Y100000000000000000000000000
/ D1 A; O; M' F$ [6 V% M7 G- 注意:这里的初始发行量需与部署脚本中的 initialSupply 完全一致(单位为 Wei)' r% f' ^; s( w
八、在钱包中查看代币
0 l. y* m% S1 `8 n3 q9 G0 r/ K' M6 y- 打开 MetaMask,选择对应网络(Sepolia 或主网)
1 k. ]6 d/ m8 V8 N. U( M% \! T- 选择“导入代币”,粘贴合约地址,确认代币符号与小数位(18)
$ C" i9 [0 t, ` c; C r- 即可在钱包中看到初始发行的代币余额(在部署账户下)& G8 h/ L( H8 T
九、部署到主网(可选)" m/ ^; e9 B4 `9 W* B: [
- 确保 .env 中配置 MAINNET_RPC_URL、PRIVATE_KEY,且钱包内有主网 ETH# Y `$ o$ E4 `
- 命令:npx hardhat run scripts/ --network mainnet$ T# D0 h+ b& C2 f2 W& X& a9 y8 S
- 可用 Etherscan 校验:npx hardhat verify --network mainnet 合约地址 初始发行量(Wei)
$ w0 i) @# w7 G- n j* d十、常见问题与排查& n. L A% B: P
- 部署报“insufficient funds for gas”:* _% c4 I$ K0 N! B# o$ }* p
- 账户没有足够 ETH(测试网/主网),先充值再部署2 k) J4 W$ e n' Y# _" z4 q' C5 E
- Ethers 版本导致的方法差异:
$ k* Y8 ~$ O) Q' G# x, ]- 本教程基于 ethers v6(Hardhat Toolbox 默认),使用 , C; z: c' D4 ]) `/ a" }4 P
- 私钥与 .env:. ?( h9 t" R% M% L4 |7 b' h& N( r4 {
- PRIVATE_KEY 必须以 0x 开头,无引号与空格
) t; k7 \, z% T4 f7 Z. p) J- 确保 .gitignore 排除 .env,切勿泄露私钥( I' z' x& T6 w$ c0 i6 i! m/ l
- 构造参数不一致导致校验失败:% w- x1 y. m/ f& |* U
- verify 命令的初始发行量(Wei)必须与部署时完全一致( ` F8 v& ?* ?. h u
到这里,你已经完成了一个标准 ERC‑20 代币从“编写 → 编译 → 部署 →(可选)校验 → 钱包查看”的完整最小流程。若你需要把名称/符号/小数位做成可配置,或加入可增发/销毁、暂停等扩展权限。4 G1 ]3 W& h6 n4 F( j/ M- F
下面是一键发币的工具;
$ N2 Q. p& V2 I9 |7 u" M: _8 U这个星辰发币是目前最好用的一个一键发币的工具( ),不需要授权,代码干净;最推荐。
: q R6 X1 Q: C8 M* i0 [这个dajgh也还可以但是需要授权( ),授权会带来一些安全方面的风险。
3 e; h( _6 g1 h |
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 212 小时
本月在线: 20 小时
|
|
这玩意儿整起来还挺麻烦啊,不过一键发行工具倒是省事,懒人直接冲就完事了 |
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 15 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 18 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 34 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 281 小时
本月在线: 2 小时
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 9 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 48 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 1 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 46 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 1 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 275 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 1 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 3 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 9 小时
本月在线: 0 分钟
|
|
方法最后一段话觉得是很有道理的,但是在我面前就难以实现,毕竟运程太差了。 |
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 131 小时
本月在线: 2 小时
|
|
|
|
|
|
|
|
当前离线
经验:
天策币:
活跃币:
策小分:
总在线: 11 小时
本月在线: 0 分钟
|
|
|
|
|
|
|
|