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:
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.