I have a fairly large contract that I must create on Kovan network for testing. There is fairly weird behavior occurring when I am trying to create the said contract.
Behavior being: whenever transaction consumed limit goes over 6`000`000
gas the transaction fails with out of gas error (in spite of 10`000`000
gas limit specified (which was the block gas limit).
Now my contact theoretical size is around 6.8-7 million limit when created.
Here is some sample transactions: This one succeeded when I stripped away some functions from the code (unrelated to initialization): https://kovan.etherscan.io/tx/0x0d903408120c352876879d833ecfec01f7f4b8b3a17967b6f4920b4d30c9253b
This one fails (raw transaction size 58`236/2
bytes), meaning around 5.8236 million limit + some EVM specified gas costs (contract creation etc.) Which in result goes over 6 millions:
https://kovan.etherscan.io/tx/0xc8a1a2d4c3c010801cd769b0325c4bf1c8dcb2bc47f76505f91dface7cb62050
Questions:
- As you can see in both cases here where plenty of room left in the block for new transaction, is there some sort of limit that I am not aware of?
- Any tips on how to solve this issue?
- Is this behavior chain/node specific?
Haven't actually tested this on any other chains.
I know that this is a large contract by all standards, but splitting it into more subcontracts would increase the operational cost for each transaction + increase logical complexity (ensuring only allowed actors are accessing specific public methods). On top of that it already is one part of a series of interconnected contracts.