StephenGrider / EthereumCasts

Companion repo to an Ethereum/Solidity course on Udemy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VM Exception while processing transaction: out of gas

dreammonkey opened this issue · comments

Hi,

In the kickstart project test script I ran into an issue where ganache was refusing to deploy the CampaignFactory.

VM Exception while processing transaction: out of gas

It turned out I had to augment the gasLimit to 10 million when deploying:

factory = await new web3.eth.Contract(compiledFactory.abi)
  .deploy({ data: compiledFactory.evm.bytecode.object })
  .send({
    from: accounts.kickstarter,
    gas: "10000000",
  });

After that the following error appeared:

n: Exceeds block gas limit

Apparently I also needed to raise the global gasLimit in the ganache provider:

const web3 = new Web3(
  ganache.provider({
    gasLimit: 10000000,
  })
);

This resolved the issue and successfully deployed the factory on the test network.
But I have yet to find the reason why this was needed ?
And more importantly what would be the consequences when deploying this on the MainNet ?

Are there any thoughts on this ?

Best Regards,
Diederik

The issue happened cause the default gas limit per block in local ganache chain was lower than 10 million.

As of the writing this reply, the gas limit on Mainnet is a minimum of 15 million. It is expandable, as per requirement, with the maximum being 30 million.

Thanks for your answer, I tested some more and I was able to run the test and deploy the contract to the Ropsten Network using a gas price of 3 million. Removing the need to overwrite the ganache default block gas limit.

This makes me wonder: is this a normal process to go through when developing/deploying a contract ? Should one estimate in advance what would be an adequate gas price for a contract ?

Clearly larger contracts and contracts with a larger computational cost consume more gas, but how can we properly check the gas that contracts are likely to consume. I think this is not really addressed during the course...