diff --git a/hardhat/set_usdc_balance.js b/hardhat/set_usdc_balance.js new file mode 100644 index 0000000..ccab353 --- /dev/null +++ b/hardhat/set_usdc_balance.js @@ -0,0 +1,28 @@ +// function to set USDC balance of ethereum mainnet forks by @janbro + + +const { ethers } = require("hardhat"); + +async function setUSDCBalance(account, balance) { + const balances_index = 9; + const USDC_ADDRESS = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; // ETH mainnet USDC address + + // modify usdc's storage to give rich account large amount of tokens + const index = ethers.utils.solidityKeccak256( + ["uint256", "uint256"], + [account, balances_index] // key, slot + ); + + await await ethers.provider.send( + "hardhat_setStorageAt", + [ + USDC_ADDRESS, + index, + ethers.utils.hexlify(ethers.utils.zeroPad(balance.toHexString(), 32)).toString() + ] + ); +} + +module.exports = { + setUSDCBalance, +};