市值: $2.2032T 1.06%
成交额(24h): $37.9282B -32.34%
恐惧与贪婪指数:

36 - 恐惧

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

选择语种

选择语种

选择货币

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

如何使用 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),我们将及时删除。

相关百科

AVAX 期货保证金要求是如何计算的?

AVAX 期货保证金要求是如何计算的?

2026-07-23 15:40:03

AVAX 期货保证金结构1. AVAX期货保证金由两个不同的部分组成:初始保证金和维持保证金。这些是根据当前市场价格、波动性、未平仓合约和合约规模实时计算的。 2. 初始保证金作为履约保证金,以弥补短期(通常是一个交易时段)内潜在的不利价格变动。它以头寸名义价值的百分比表示。 3. 维持保证金设置为...

ADA合约保证金率为何会触发警告?

ADA合约保证金率为何会触发警告?

2026-07-22 09:00:26

ADA 合约保证金比率机制1. 各大交易所的ADA永续合约采用根据持仓规模、杠杆水平和当前标记价格实时计算的动态保证金比例。 2. 保证金比率等于(钱包余额+未实现盈亏)除以维持保证金要求,以百分比表示。 3. 当该比率低于交易所定义的维持阈值(通常为 5% 至 10%,具体取决于杠杆率)时,系统将...

ADAUSDT永续合约资金费率是多少?

ADAUSDT永续合约资金费率是多少?

2026-07-24 20:19:46

ADAUSDT永续合约资金费率定义及目的1. ADAUSDT永续合约资金费率是卡尔达诺(ADA)与主要加密货币交易所Tether(USDT)衍生品头寸之间采用的定期费用兑换机制。 2. 作为价格锚定工具,确保ADAUSDT永续合约价格与基础ADA/USDT现货指数价格保持紧密一致。 3、与传统期货不...

TON 期货强平价格公式是什么?

TON 期货强平价格公式是什么?

2026-07-23 09:19:45

TON 期货强平机制1. 当交易者的保证金余额低于交易所设定的维持保证金要求时,TON 期货就会被清算。 2、保证金比例低于或等于100%时,系统自动触发强制平仓,计算公式为(可用保证金/所需保证金)×100%。 3. 强平价格不是固定的,它会随着市场走势、头寸规模、杠杆水平和资金费率的调整而动态变...

TONUSDT永续合约资金费率是多少?

TONUSDT永续合约资金费率是多少?

2026-07-27 02:39:50

定义和核心机制1. TONUSDT永续合约资金费率是专门适用于各大交易所交易的TON/USDT永续合约的定期费用兑换机制。 2. 作为价格锚定工具,防止TONUSDT永续市场价格与基础TON/USDT现货指数价格持续背离。 3. 费率每 8 小时计算一次,采用综合平均保费指数和利息成分的公式计算,通...

SUI期货杠杆如何影响强平?

SUI期货杠杆如何影响强平?

2026-07-22 09:59:59

SUI 期货保证金机制1、主要衍生品交易所的SUI期货合约根据持仓规模和市场波动情况实行分级初始保证金要求。对于名义价值低于 50,000 美元的头寸,标准初始保证金设置为 8%,而较大头寸则可逐步调整至 15%。 2. 所有合约规模的维持保证金固定为初始保证金水平的 65%,这意味着当净值相对于当...

AVAX 期货保证金要求是如何计算的?

AVAX 期货保证金要求是如何计算的?

2026-07-23 15:40:03

AVAX 期货保证金结构1. AVAX期货保证金由两个不同的部分组成:初始保证金和维持保证金。这些是根据当前市场价格、波动性、未平仓合约和合约规模实时计算的。 2. 初始保证金作为履约保证金,以弥补短期(通常是一个交易时段)内潜在的不利价格变动。它以头寸名义价值的百分比表示。 3. 维持保证金设置为...

ADA合约保证金率为何会触发警告?

ADA合约保证金率为何会触发警告?

2026-07-22 09:00:26

ADA 合约保证金比率机制1. 各大交易所的ADA永续合约采用根据持仓规模、杠杆水平和当前标记价格实时计算的动态保证金比例。 2. 保证金比率等于(钱包余额+未实现盈亏)除以维持保证金要求,以百分比表示。 3. 当该比率低于交易所定义的维持阈值(通常为 5% 至 10%,具体取决于杠杆率)时,系统将...

ADAUSDT永续合约资金费率是多少?

ADAUSDT永续合约资金费率是多少?

2026-07-24 20:19:46

ADAUSDT永续合约资金费率定义及目的1. ADAUSDT永续合约资金费率是卡尔达诺(ADA)与主要加密货币交易所Tether(USDT)衍生品头寸之间采用的定期费用兑换机制。 2. 作为价格锚定工具,确保ADAUSDT永续合约价格与基础ADA/USDT现货指数价格保持紧密一致。 3、与传统期货不...

TON 期货强平价格公式是什么?

TON 期货强平价格公式是什么?

2026-07-23 09:19:45

TON 期货强平机制1. 当交易者的保证金余额低于交易所设定的维持保证金要求时,TON 期货就会被清算。 2、保证金比例低于或等于100%时,系统自动触发强制平仓,计算公式为(可用保证金/所需保证金)×100%。 3. 强平价格不是固定的,它会随着市场走势、头寸规模、杠杆水平和资金费率的调整而动态变...

TONUSDT永续合约资金费率是多少?

TONUSDT永续合约资金费率是多少?

2026-07-27 02:39:50

定义和核心机制1. TONUSDT永续合约资金费率是专门适用于各大交易所交易的TON/USDT永续合约的定期费用兑换机制。 2. 作为价格锚定工具,防止TONUSDT永续市场价格与基础TON/USDT现货指数价格持续背离。 3. 费率每 8 小时计算一次,采用综合平均保费指数和利息成分的公式计算,通...

SUI期货杠杆如何影响强平?

SUI期货杠杆如何影响强平?

2026-07-22 09:59:59

SUI 期货保证金机制1、主要衍生品交易所的SUI期货合约根据持仓规模和市场波动情况实行分级初始保证金要求。对于名义价值低于 50,000 美元的头寸,标准初始保证金设置为 8%,而较大头寸则可逐步调整至 15%。 2. 所有合约规模的维持保证金固定为初始保证金水平的 65%,这意味着当净值相对于当...

查看所有文章

User not found or password invalid

Your input is correct