How to set transaction gas price in foundry?
- undefined
- undefined Solidity
If I have a test in foundry: ```javascript function testDoStuff() public { myContract.functionCall() } ``` And I'm trying to figure out how much gas it uses, I'd use `gasleft()`. However, `tx.gasprice` is defaulted to `0` in foundry. How do I set it to something else so I can get the gas used of this function? For context, in a foundry test, this prints `0` ```javascript console.log(tx.gasprice); ```
Answers 2
Yes, your answer is correct for setting the transaction gas price in Foundry using the cheatcode txGasPrice. Here's the revised code with some minor modifications to ensure correct variable declarations and usage: ``` await vm.txGasPrice(2); const gasStart = await ethers.provider.getGasLeft(); await myContract.functionCall(); const gasEnd = await ethers.provider.getGasLeft(); // tx.gasprice is 2 due to the first line const gasPrice = 2; const gasUsed = (gasStart - gasEnd) * gasPrice; console.log("Gas used:", gasUsed); ``` This code sets the transaction gas price to 2 using the **vm.txGasPrice** cheatcode. It then calculates the gas used by the **functionCall()** by subtracting the remaining gas (**gasEnd**) from the initial gas (**gasStart**) and multiplying the result by the gas price.
You can use the foundry cheatcode `txGasPrice`. For example: ```javascript vm.txGasPrice(2); uint256 gasStart = gasleft(); fundMe.withdraw(); gasEnd = gasleft(); // tx.gasprice is 2 due to the first line console.log(tx.gasprice); uint256 gasUsed = (gasStart - gasEnd) * tx.gasprice; ```