-
bitcoin $77323.969542 USD
0.01% -
ethereum $2523.414850 USD
2.23% -
tether $0.999674 USD
0.01% -
bnb $732.334794 USD
2.37% -
xrp $1.364311 USD
0.51% -
usd-coin $0.999831 USD
0.00% -
solana $101.751035 USD
1.88% -
tron $0.339246 USD
0.15% -
hyperliquid $78.911101 USD
-1.42% -
zcash $1143.169120 USD
2.95% -
dogecoin $0.084522 USD
0.58% -
monero $539.820025 USD
5.75% -
chainlink $11.538258 USD
0.03% -
unus-sed-leo $9.111763 USD
0.28% -
cardano $0.208079 USD
-0.46%
如何用 Solidity 编写你的第一个智能合约? (分步教程)
Set up Node.js, Truffle, and Ganache; write an ERC-20 token using OpenZeppelin; compile, deploy locally, and test via Truffle console and JavaScript.
2026/01/17 00:00
设置开发环境
1. 安装 Node.js 和 npm 以管理 Solidity 工具所需的依赖项。
2. 使用npm在全球范围内安装Truffle——一种广泛采用的基于以太坊的智能合约开发框架。
3、安装Ganache作为个人区块链进行本地测试;它为私人账户提供预先充值的 ETH。
4. 使用truffle init配置一个新的 Truffle 项目以生成基本目录,例如contracts/ 、 migrations/和test/ 。
5. 通过运行truffle 版本并确认与 Solidity 编译器 v0.8.x 或更高版本的兼容性来验证安装完整性。
编写基本的代币合约
1. 在contracts/文件夹中创建一个名为MyToken.sol的新文件。
2.声明Solidity版本编译指示:编译指示solidity ^0.8.20;以确保确定性的编译行为。
3.导入OpenZeppelin的ERC-20实现: import '@openzeppelin/contracts/token/ERC-20/ERC-20.sol';
4. 定义合约继承:合约MyToken为ERC20 { ... }并在构造函数中初始化名称、符号和总供应量。
5. 使用 OpenZeppelin 的 AccessControl 库中的onlyOwner修饰符添加仅限所有者的 mint 函数。
编译和部署合约
1. 在migrations/2_deploy_contracts.js中编写迁移脚本,实例化并部署100万个代币的MyToken 。
2.运行trufflecompile生成ABI和字节码;确认没有出现语法或版本不匹配错误。
3. 启动 Ganache 并将其 RPC 服务器 URL(例如,http://127.0.0.1:7545)复制到开发网络下的truffle-config.js中。
4. 执行truffle migrate --networkdevelopment部署合约并记录交易哈希值和合约地址。
5. 通过检查 Ganache 的事务日志并验证控制台输出中出现的合约地址来确认部署成功。
通过 Truffle 控制台进行交互
1. 启动连接到 Ganache 的 Truffle 控制台: truffle console --networkdevelopment 。
2. 获取已部署的实例: let instance = wait MyToken.deployed();
3. 使用(await instance.totalSupply()).toString()查询总供应量 — 期望输出与初始薄荷值匹配。
4. 账户间转账: await instance.transfer('0xAb8483F64d9C6d1EcF9b849Ae677dC320f55a1B5', '1000') 。
5. 使用(await instance.balanceOf('0xAb8483F64d9C6d1EcF9b849Ae677dC320f55a1B5')).toString()验证余额更改。
使用 JavaScript 进行测试
1. 创建test/mytoken.js ,其中包含核心功能的 Mocha 风格测试用例。
2. 使用contract()定义测试上下文,并使用it()块来断言铸造、传输和事件发射等行为。
3. 调用transfer 后,使用assert.equal(receipt.logs[0].event, 'Transfer')断言正确的事件日志。
4. 测试恢复条件:尝试传输超过余额的内容,并使用ExpectRevert实用程序验证是否引发恢复。
5. 使用truffle test运行测试,并确认所有断言都通过,没有超时或运行时异常。
常见问题解答
问:我可以在不使用 Truffle 的情况下部署 Solidity 合约吗?答:是的。替代方案包括 Hardhat、Remix IDE 或使用编译的字节码和 ABI 直接调用 web3.js。
问:如果我忘记了接收 ETH 的函数中的payable关键字,会发生什么情况?答:该函数将恢复任何尝试发送 ETH 的交易,从而导致执行失败和 Gas 消耗。
问:使用tx.origin进行访问控制安全吗?答:不行。 tx.origin可以通过网络钓鱼合约进行操纵,并且绝不能在权限检查中替换msg.sender 。
问:如何在 Etherscan 上验证我的合约源代码?答:通过 Etherscan 的验证表单提交准确的 Solidity 源代码、编译器版本、优化设置和构造函数参数。
免责声明:info@kdj.com
所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!
如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。
- CPEN Network Ink 代币:深入探讨移动挖矿、代币经济及其不断发展的遗产
- 2026-09-12 16:35:02
- XRP 投资者在市场不确定性和重大经济事件中面临关键决策
- 2026-09-12 16:40:01
- 在市场波动中,以太坊鲸鱼推动 ETH 飙升至 8 个月高位
- 2026-09-12 16:35:02
- sUSDe 收益率、Aave 借款利率和 USDe 循环:在 DeFi 的“大苹果”中走钢丝
- 2026-09-12 12:45:01
- USDC Bridge CCTP、稳定币链变、Bridge 关闭:引领跨链转账新时代
- 2026-09-12 12:45:01
- 在投资者强烈抗议和激励计划撤回之际,Metaplanet 将高管股份削减 41.1%
- 2026-09-12 12:35:02
相关百科
如何查看DOGE期货成交量及持仓量?
2026-09-12 08:39:38
了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...
如何查看BTC期货交易量和持仓量?
2026-09-12 15:19:55
BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...
如何看懂DOGEUSDT永续合约图表?
2026-09-11 19:19:48
了解 DOGEUSDT 永续图表上的价格走势1. 蜡烛图的形成揭示了直接的市场情绪——绿色蜡烛表示买盘占主导地位,而红色蜡烛则反映该区间内的抛售压力。 2. 实体上方和下方的灯芯信号拒绝更高或更低的价格;在波动较大的模因币市场中,长上影线通常先于短期反转。 3. 接近关键水平的连续小实体蜡烛表明在突...
如何在币安查看BTC合约资金费用?
2026-09-10 08:00:06
找到资金费率显示1. 进入币安合约交易界面,选择BTCUSDT永续合约。 2. 观察价格图表正下方或订单簿附近的区域——该区域包含一个标有资金费率的标签框。 3. 显示值实时更新,反映当前每小时的资金费率,无论是正数还是负数。 4. 单击资金费率框将打开一个弹出窗口,显示多个结算周期的历史资金价值。...
如何计算SOLUSDT期货盈亏?
2026-09-10 19:19:37
了解 SOLUSDT 期货合约规格1、每张SOLUSDT期货合约均以USDT报价,以USDT结算,为线性永续合约。 2.基础资产为SOL,报价资产为USDT——所有盈亏计算均直接以USDT计价。 3. 价格变动的最小变动单位为0.01 USDT,合约乘数固定为每张合约1 SOL。 4. Bitget...
如何计算XRPUSDT期货盈亏?
2026-09-09 17:40:21
了解 XRPUSDT 期货合约规格1、每张XRPUSDT永续合约以USDT报价,以USDT结算,每张合约面值为1XRP。 2. 对于包括 Binance 和 Bybit 在内的大多数主要交易所,最小价格增量(报价单位)为 0.0001 美元。 3. 杠杆范围从 1 倍到 75 倍不等,具体取决于头寸...
如何查看DOGE期货成交量及持仓量?
2026-09-12 08:39:38
了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...
如何查看BTC期货交易量和持仓量?
2026-09-12 15:19:55
BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...
如何看懂DOGEUSDT永续合约图表?
2026-09-11 19:19:48
了解 DOGEUSDT 永续图表上的价格走势1. 蜡烛图的形成揭示了直接的市场情绪——绿色蜡烛表示买盘占主导地位,而红色蜡烛则反映该区间内的抛售压力。 2. 实体上方和下方的灯芯信号拒绝更高或更低的价格;在波动较大的模因币市场中,长上影线通常先于短期反转。 3. 接近关键水平的连续小实体蜡烛表明在突...
如何在币安查看BTC合约资金费用?
2026-09-10 08:00:06
找到资金费率显示1. 进入币安合约交易界面,选择BTCUSDT永续合约。 2. 观察价格图表正下方或订单簿附近的区域——该区域包含一个标有资金费率的标签框。 3. 显示值实时更新,反映当前每小时的资金费率,无论是正数还是负数。 4. 单击资金费率框将打开一个弹出窗口,显示多个结算周期的历史资金价值。...
如何计算SOLUSDT期货盈亏?
2026-09-10 19:19:37
了解 SOLUSDT 期货合约规格1、每张SOLUSDT期货合约均以USDT报价,以USDT结算,为线性永续合约。 2.基础资产为SOL,报价资产为USDT——所有盈亏计算均直接以USDT计价。 3. 价格变动的最小变动单位为0.01 USDT,合约乘数固定为每张合约1 SOL。 4. Bitget...
如何计算XRPUSDT期货盈亏?
2026-09-09 17:40:21
了解 XRPUSDT 期货合约规格1、每张XRPUSDT永续合约以USDT报价,以USDT结算,每张合约面值为1XRP。 2. 对于包括 Binance 和 Bybit 在内的大多数主要交易所,最小价格增量(报价单位)为 0.0001 美元。 3. 杠杆范围从 1 倍到 75 倍不等,具体取决于头寸...
查看所有文章














