foundry-rs / foundry

Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
https://getfoundry.sh
Apache License 2.0
8.32k stars 1.76k forks source link

feat(`forge script`): add `--gas-price-multiplier` #9067

Open 409H opened 1 month ago

409H commented 1 month ago

Component

Forge

Describe the feature you would like

When running forge script script/deploy.s.sol and specifying the gas params, either with -g or --gas-price, the output of the simulation (running without --broadcast) shows the estimated gas price of the current block, not what was specified with the cli params and can be confusing.

As per the docs, supplying -g will multiply the estimated gas by some number.

If gas price is 65 gwei, and we want to deploy with 6 gwei, we could specify -g 10

Current avg gas price: 65 gwei Call: forge script script/deploy.s.sol:DeployScript -g 10 --rpc-url https://cloudflare-eth.com/

However, in doing so, the output still specifies the 65 gwei. Interpretation of the output could be that we will deploy with 65 gwei gas price.

## Setting up 1 EVM.

==========================

Chain 1

Estimated gas price: 64.375837984 gwei

Estimated total gas used for script: 15627

Estimated amount required: 0.001006001220175968 ETH

We can confirm the estimated amount required is correct and uses what we specify with -g by calling the same exec with -g 1000.

Current avg gas price: 65 gwei Call: forge script script/deploy.s.sol:DeployScript -g 1000 --rpc-url https://cloudflare-eth.com/

## Setting up 1 EVM.

==========================

Chain 1

Estimated gas price: 64.834925182 gwei

Estimated total gas used for script: 1562760

Estimated amount required: 0.10132142767742232 ETH

It seems to be that Estimated gas price: is not overridden with what we specify in the args but instead of always the gas price of the current block.

Ask:

In the output, either;

Additional context

No response

zerosnacks commented 1 month ago

Hi @409H

--gas-estimate-multiplier decreases / the gas limit of the transaction by a scalar, you can see an example here: https://holesky.etherscan.io/tx/0x16f18c36af6f987282d846b58e9ab982f9c813f53f9deb8b947c01c3c8b693f4

1,067,150 | 106,733 (10%) when -g is set to 1000 (think of this as specifying a budget of gas the transaction is allowed to use)

I think what you are requesting is a new flag called --gas-price-multiplier which would multiply the gas_price or max_fee_per_gas field by a scalar (as in 6.4 gwei -> 64 gwei)

409H commented 1 month ago

@zerosnacks Ah yes, sorry -- good catch. Yes, you're correct in what I mean