市值: $2.1042T -2.07%
成交额(24h): $151.5349B 12.51%
恐惧与贪婪指数:

16 - 极度恐惧

  • 市值: $2.1042T -2.07%
  • 成交额(24h): $151.5349B 12.51%
  • 恐惧与贪婪指数:
  • 市值: $2.1042T -2.07%
加密货币
话题
百科
资讯
加密话题
视频
热门加密百科

选择语种

选择语种

选择货币

加密货币
话题
百科
资讯
加密话题
视频

如何使用 Hardhat 测试您的 Solidity 合约?

Hardhat enables robust smart contract development with local testing, forking, debugging tools like console.log in Solidity, gas reporting, and precise event/time manipulation.

2026/01/20 12:20

设置安全帽环境

1. 安装 Node.js 和 npm 以确保与 Hardhat 工具链的兼容性。

2. 运行npm init -y初始化新的 Node.js 项目。

3. 执行npm install --save-dev Hardhat将 Hardhat 添加为开发依赖项。

4. 使用npx Hardhat启动 Hardhat 设置向导,然后选择“创建空的 Hardhat.config.js”。

5. 创建一个contracts/目录并将您的Solidity源文件(例如Token.sol )放入其中。

使用 JavaScript 或 TypeScript 编写测试脚本

1. 生成test/文件夹并添加测试文件,例如Token.test.js

2. 导入 Hardhat 的测试实用程序: const { Expect } = require('@nomicfoundation/hardhat-c​​hai-matchers');

3. 使用describe()it()块逻辑地构建测试用例。

4. 通过await ethers.deployContract('Token')在测试中部署合约,而不是手动字节码处理。

5. 使用await token.transfer(address, amount)与合约方法交互,并使用Chai 匹配器断言结果。

在本地分叉网络上运行测试

1. 通过使用 RPC URL 指定以太坊主网或 Sepolia 等网络,在Hardhat.config.js中配置分叉。

2. 启动 Hardhat 网络并启用分叉: npx hardhat node --fork https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY

3. 编写与已部署的主网合约(例如 Uniswap V3 池)交互的测试,方法是获取其 ABI 并通过ethers.getContractAt()附加到它们。

4. 使用 Hardhat Network 的内置助手模拟现实世界的条件,包括 Gas 价格波动和区块时间戳操作。

5. 通过使用wait network.provider.request({ method: 'hardhat_impersonateAccount', params: [address] })模拟从 Etherscan 等浏览器检索到的 EOA 地址来验证许可访问模式。

使用 Hardhat 的内置工具进行调试

1. 直接在 Solidity 代码中插入console.log()语句,并在启用控制台日志插件的情况下进行编译。

2. 运行npx hardhat test --no-compile以在仅测试逻辑更改时跳过重新编译。

3. 使用hardhat-tracer检查每个事务期间执行的低级EVM 操作码。

4. 利用hardhat-gas-reporter测量函数调用之间的gas 消耗并检测效率低下的情况。

5. 通过在 Hardhat 配置的 mocha 部分中设置throwOnTransactionFailures: true来启用还原事务的堆栈跟踪。

常见问题解答

问:我可以使用 Hardhat 测试合约发出的事件吗?答:是的。使用await Expect(tx).to.emit(contract, 'Transfer').withArgs(owner,recipient,amount)来验证事件参数。

问:如何测试重入漏洞?答:在测试中部署恶意攻击者合约,触发易受攻击的功能,并断言余额不一致或状态损坏。

问:是否可以测试与时间相关的逻辑,例如归属计划?答:是的。使用await network.provider.send('evm_increaseTime', [seconds]) ,然后使用await network.provider.send('evm_mine')来推进块。

问:如果我的合约使用 OpenZeppelin 的 AccessControl 怎么办?答:在调用受限函数之前,使用await accessControl.grantRole(ROLE_HASH, address)在测试中分配角色。

免责声明:info@kdj.com

所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!

如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。

相关百科

在Bybit上进行BTC交易如何选择线性永续合约和反向永续合约?

在Bybit上进行BTC交易如何选择线性永续合约和反向永续合约?

2026-06-06 02:54:55

合同结算机制1. Bybit的线性永续合约以USDT结算,这意味着所有盈亏计算、保证金要求和清算门槛均以稳定币单位计价。 2.反向永续合约以BTC本身结算,因此每笔交易都会直接影响交易者的BTC余额——收益会增加BTC持有量,而损失会减少BTC持有量。 3. 反向合约的定价引擎使用 BTC/USDT...

如何在Bybit上设置风险管理规则来限制我的每日最大损失?

如何在Bybit上设置风险管理规则来限制我的每日最大损失?

2026-06-04 16:40:15

账户级损失限额配置1. 使用双因素身份验证通过网络或移动应用程序登录您的 Bybit 帐户。 2. 导航至“资产”部分,然后从左侧菜单中选择“风险管理”。 3. 选择“每日损失限制”并将该功能切换为“开”以激活控制。 4. 输入代表当前交易日 USDT 最大允许净亏损的数值。 5. 使用您的电子邮件...

如何在币安上启用投资组合保证金模式以降低我的保证金要求?

如何在币安上启用投资组合保证金模式以降低我的保证金要求?

2026-06-05 04:59:43

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少每个区块新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将使其达到 3.1...

如何将我的未平仓期货头寸从币安迁移到Bybit而不平仓?

如何将我的未平仓期货头寸从币安迁移到Bybit而不平仓?

2026-06-04 03:59:47

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

如何处理美国加密货币期货交易利润的税务影响?

如何处理美国加密货币期货交易利润的税务影响?

2026-05-29 18:19:59

Bitcoin 减半机制1. Bitcoin 的协议强制规定 2100 万枚代币的固定供应上限,并通过区块奖励引入新单位。 2. 每 210,000 个区块(大约每四年)区块奖励就会减少一半,这个过程称为减半。 3. 最近一次减半发生在 2024 年 4 月,每个区块的奖励从 6.25 BTC 减少...

如何利用Bybit交易机器人市场寻找有利可图的期货策略?

如何利用Bybit交易机器人市场寻找有利可图的期货策略?

2026-06-02 04:39:47

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

在Bybit上进行BTC交易如何选择线性永续合约和反向永续合约?

在Bybit上进行BTC交易如何选择线性永续合约和反向永续合约?

2026-06-06 02:54:55

合同结算机制1. Bybit的线性永续合约以USDT结算,这意味着所有盈亏计算、保证金要求和清算门槛均以稳定币单位计价。 2.反向永续合约以BTC本身结算,因此每笔交易都会直接影响交易者的BTC余额——收益会增加BTC持有量,而损失会减少BTC持有量。 3. 反向合约的定价引擎使用 BTC/USDT...

如何在Bybit上设置风险管理规则来限制我的每日最大损失?

如何在Bybit上设置风险管理规则来限制我的每日最大损失?

2026-06-04 16:40:15

账户级损失限额配置1. 使用双因素身份验证通过网络或移动应用程序登录您的 Bybit 帐户。 2. 导航至“资产”部分,然后从左侧菜单中选择“风险管理”。 3. 选择“每日损失限制”并将该功能切换为“开”以激活控制。 4. 输入代表当前交易日 USDT 最大允许净亏损的数值。 5. 使用您的电子邮件...

如何在币安上启用投资组合保证金模式以降低我的保证金要求?

如何在币安上启用投资组合保证金模式以降低我的保证金要求?

2026-06-05 04:59:43

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少每个区块新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将使其达到 3.1...

如何将我的未平仓期货头寸从币安迁移到Bybit而不平仓?

如何将我的未平仓期货头寸从币安迁移到Bybit而不平仓?

2026-06-04 03:59:47

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

如何处理美国加密货币期货交易利润的税务影响?

如何处理美国加密货币期货交易利润的税务影响?

2026-05-29 18:19:59

Bitcoin 减半机制1. Bitcoin 的协议强制规定 2100 万枚代币的固定供应上限,并通过区块奖励引入新单位。 2. 每 210,000 个区块(大约每四年)区块奖励就会减少一半,这个过程称为减半。 3. 最近一次减半发生在 2024 年 4 月,每个区块的奖励从 6.25 BTC 减少...

如何利用Bybit交易机器人市场寻找有利可图的期货策略?

如何利用Bybit交易机器人市场寻找有利可图的期货策略?

2026-06-02 04:39:47

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

查看所有文章

User not found or password invalid

Your input is correct