diff --git a/EIPS/eip-3860.md b/EIPS/eip-3860.md index 9551db72ca1503..60c2583e9c9e94 100644 --- a/EIPS/eip-3860.md +++ b/EIPS/eip-3860.md @@ -53,8 +53,8 @@ We define `initcode_cost(initcode)` to equal `INITCODE_WORD_COST * ceil(len(init ### Rules 1. If length of transaction data (`initcode`) in a create transaction exceeds `MAX_INITCODE_SIZE`, transaction is invalid. (*Note that this is similar to transactions considered invalid for not meeting the intrinsic gas cost requirement.*) -2. For a create transaction, extend the transaction data cost formula to include `initcode_cost(initcode)`. Note that this is included in transaction intrinsic cost, i.e. transaction with not enough gas to cover initcode cost is invalid. -3. If length of `initcode` to `CREATE` or `CREATE2` instructions exceeds `MAX_INITCODE_SIZE`, instruction results in `0` value pushed on stack. +2. For a create transaction, extend the transaction data cost formula to include `initcode_cost(initcode)`. (*Note that this is included in transaction intrinsic cost, i.e. transaction with not enough gas to cover initcode cost is invalid.*) +3. If length of `initcode` to `CREATE` or `CREATE2` instructions exceeds `MAX_INITCODE_SIZE`, instruction execution ends with the result `0` pushed on the stack. Gas for initcode execution is not deducted in this case. 4. For the `CREATE` and `CREATE2` instructions charge an extra gas cost equaling to `initcode_cost(initcode)`. This cost is deducted before the calculation of the resulting contract address and the execution of `initcode`. (*Note that this means before or at the same time as the hashing cost is applied in `CREATE2`.*) ## Rationale