Closed jamesray1 closed 7 years ago
Note that intention is Note that the intention
I see that o is defined in section 8, para. 2.
@jamesray1 , I believe that is saying that contract initialization will fail (F) if (|o| > 24576) the created contract is above the maximum size.
@jwasinger, I understand that it is saying the the output contract code is over 24576 bytes in length, but I want to know why that limit exists, e.g.: to prevent memory getting too bloated, etc.
A Gitter test room discussion linked to this EIP. Consider adding a link to it for an explanation of the limit. E.g.: "for details on why the 24576 byte limit for output contract code exists, refer to this EIP here". However, because the yellowpaper is a formal specification, it is probably best to explain why, e.g.: "The 24576 byte limit for output contract code data o exists because a contract creation call can trigger O(n) cost in terms of reading the code from disk, preprocessing the code for VM execution, and also adding O(n) data to the Merkle proof for the block's proof-of-validity. With higher gas limits that can be caused by dynamic gas limit rules, this is a greater concern, and is especially inconvenient with light clients verifying proofs of validity or invalidity". This is probably best added as a footnote.
See this commit containing the above suggestions: https://github.com/ethereum/yellowpaper/pull/345/commits/51b0afb3393bce05c7143b60cb80218dc757f56d
There doesn't seem to be an explanation near eqn. 97 on p. 9 for why the condition in F exists for |o|>24576. CTRL + F 24576 to find it.