-
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%
How to Test Your Solidity Contract with Hardhat?
Hardhat enables robust smart contract development with local testing, forking, debugging tools like console.log in Solidity, gas reporting, and precise event/time manipulation.
Jan 20, 2026 at 12:20 pm
Setting Up the Hardhat Environment
1. Install Node.js and npm to ensure compatibility with Hardhat’s toolchain.
2. Run npm init -y to initialize a new Node.js project.
3. Execute npm install --save-dev hardhat to add Hardhat as a development dependency.
4. Launch the Hardhat setup wizard using npx hardhat and select “Create an empty hardhat.config.js”.
5. Create a contracts/ directory and place your Solidity source file—e.g., Token.sol—inside it.
Writing Test Scripts in JavaScript or TypeScript
1. Generate a test/ folder and add a test file such as Token.test.js.
2. Import Hardhat’s testing utilities: const { expect } = require('@nomicfoundation/hardhat-chai-matchers');
3. Use describe() and it() blocks to structure test cases logically.
4. Deploy contracts inside tests via await ethers.deployContract('Token') instead of manual bytecode handling.
5. Interact with contract methods using await token.transfer(address, amount) and assert outcomes with Chai matchers.
Running Tests on a Local Forked Network
1. Configure a fork in hardhat.config.js by specifying a network like Ethereum mainnet or Sepolia using its RPC URL.
2. Launch Hardhat Network with forking enabled: npx hardhat node --fork https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY.
3. Write tests that interact with deployed mainnet contracts—such as Uniswap V3 pools—by fetching their ABI and attaching to them via ethers.getContractAt().
4. Simulate real-world conditions including gas price fluctuations and block timestamp manipulation using Hardhat Network’s built-in helpers.
5. Validate permissioned access patterns by impersonating EOA addresses retrieved from explorers like Etherscan using await network.provider.request({ method: 'hardhat_impersonateAccount', params: [address] }).
Using Hardhat’s Built-in Tools for Debugging
1. Insert console.log() statements directly in Solidity code and compile with the console log plugin enabled.
2. Run npx hardhat test --no-compile to skip recompilation when only test logic changes.
3. Use hardhat-tracer to inspect low-level EVM opcodes executed during each transaction.
4. Leverage hardhat-gas-reporter to measure gas consumption across function calls and detect inefficiencies.
5. Enable stack traces for reverted transactions by setting throwOnTransactionFailures: true in Hardhat config’s mocha section.
Frequently Asked Questions
Q: Can I test events emitted by my contract using Hardhat?A: Yes. Use await expect(tx).to.emit(contract, 'Transfer').withArgs(owner, recipient, amount) to verify event parameters.
Q: How do I test reentrancy vulnerabilities?A: Deploy a malicious attacker contract within the test, trigger vulnerable functions, and assert balance inconsistencies or state corruption.
Q: Is it possible to test time-dependent logic like vesting schedules?A: Yes. Use await network.provider.send('evm_increaseTime', [seconds]) followed by await network.provider.send('evm_mine') to advance blocks.
Q: What if my contract uses OpenZeppelin’s AccessControl?A: Assign roles inside tests using await accessControl.grantRole(ROLE_HASH, address) before calling restricted functions.
Disclaimer:info@kdj.com
The information provided is not trading advice. kdj.com does not assume any responsibility for any investments made based on the information provided in this article. Cryptocurrencies are highly volatile and it is highly recommended that you invest with caution after thorough research!
If you believe that the content used on this website infringes your copyright, please contact us immediately (info@kdj.com) and we will delete it promptly.
- CPEN Network Ink Token: A Deep Dive into Mobile Mining, Tokenomics, and Its Evolving Legacy
- 2026-09-12 16:35:02
- XRP Investors Face Critical Decision Amidst Market Uncertainty and Key Economic Events
- 2026-09-12 16:40:01
- Ethereum Whales Fuel ETH Explosion to 8-Month High Amidst Market Volatility
- 2026-09-12 16:35:02
- The sUSDe Yield, Aave Borrow Rate, and USDe Loop: A Tightrope Walk in DeFi's Big Apple
- 2026-09-12 12:45:01
- USDC Bridge CCTP, Stablecoin Chain Change, Bridge Shutdown: Navigating the New Era of Cross-Chain Transfers
- 2026-09-12 12:45:01
- Metaplanet Slashes Executive Share Pool by 41.1% Amidst Investor Outcry and Incentive Plan Withdrawal
- 2026-09-12 12:35:02
Related knowledge
How to Check DOGE Futures Volume and Open Interest?
Sep 12,2026 at 08:39am
Understanding DOGE Futures Volume1. Futures volume refers to the total number of DOGE futures contracts traded within a specific time frame, usually m...
How to Check BTC Futures Volume and Open Interest?
Sep 12,2026 at 03:19pm
Data Sources for BTC Futures Metrics1. CoinGlass API v4 delivers real-time funding rates, liquidation heatmaps, and granular open interest breakdowns ...
How to Read the DOGEUSDT Perpetual Contract Chart?
Sep 11,2026 at 07:19pm
Understanding Price Action on DOGEUSDT Perpetual Charts1. Candlestick formation reveals immediate market sentiment—green candles indicate buying domin...
How to Check BTC Futures Funding Fee on Binance?
Sep 10,2026 at 08:00am
Locating the Funding Rate Display1. Navigate to the Binance Futures trading interface and select the BTCUSDT perpetual contract. 2. Observe the area d...
How to Calculate SOLUSDT Futures Profit and Loss?
Sep 10,2026 at 07:19pm
Understanding SOLUSDT Futures Contract Specifications1. Each SOLUSDT futures contract is quoted in USDT and settled in USDT, making it a linear perpet...
How to Calculate XRPUSDT Futures PnL?
Sep 09,2026 at 05:40pm
Understanding XRPUSDT Futures Contract Specifications1. Each XRPUSDT perpetual contract is quoted in USDT and settled in USDT, with a face value of 1 ...
How to Check DOGE Futures Volume and Open Interest?
Sep 12,2026 at 08:39am
Understanding DOGE Futures Volume1. Futures volume refers to the total number of DOGE futures contracts traded within a specific time frame, usually m...
How to Check BTC Futures Volume and Open Interest?
Sep 12,2026 at 03:19pm
Data Sources for BTC Futures Metrics1. CoinGlass API v4 delivers real-time funding rates, liquidation heatmaps, and granular open interest breakdowns ...
How to Read the DOGEUSDT Perpetual Contract Chart?
Sep 11,2026 at 07:19pm
Understanding Price Action on DOGEUSDT Perpetual Charts1. Candlestick formation reveals immediate market sentiment—green candles indicate buying domin...
How to Check BTC Futures Funding Fee on Binance?
Sep 10,2026 at 08:00am
Locating the Funding Rate Display1. Navigate to the Binance Futures trading interface and select the BTCUSDT perpetual contract. 2. Observe the area d...
How to Calculate SOLUSDT Futures Profit and Loss?
Sep 10,2026 at 07:19pm
Understanding SOLUSDT Futures Contract Specifications1. Each SOLUSDT futures contract is quoted in USDT and settled in USDT, making it a linear perpet...
How to Calculate XRPUSDT Futures PnL?
Sep 09,2026 at 05:40pm
Understanding XRPUSDT Futures Contract Specifications1. Each XRPUSDT perpetual contract is quoted in USDT and settled in USDT, with a face value of 1 ...
See all articles














