A limited #76, where we keep the TXCREATE, but discuss the necessity of having the Createor Contract introduced via an irregular state change.
Instead of the "ISC", we keep the possibility of "legacy-like" creation transaction, where the entire calldata is treated as an initcontainer (and wiped, so that it behaves as empty calldata within the execution frame of the initcontainer).
Can be informally thought of how sending EOF to an "empty address" would have the same effect as an "implicit txcreate" operating on the calldata.
~The lack of ability to put data in the calldata in this first iteration is substituted by putting the data into the data_section of the initcontainer.~ There are alternative ideas to this where "stray data" beyond the end of the declared data_section becomes calldata for the initcode execution frame.
EDIT: I've changed the proposal to the alternative mentioned above, see comments for discussion
Another alternative is to reuse the type 4 InitcodeTransaction zeroth field for fetching the initcontainer in such transactions and keep calldata behaving normally.
A limited #76, where we keep the TXCREATE, but discuss the necessity of having the Createor Contract introduced via an irregular state change.
Instead of the "ISC", we keep the possibility of "legacy-like" creation transaction, where the entire calldata is treated as an initcontainer (and wiped, so that it behaves as empty calldata within the execution frame of the initcontainer).
Can be informally thought of how sending EOF to an "empty address" would have the same effect as an "implicit
txcreate
" operating on the calldata.~The lack of ability to put data in the calldata in this first iteration is substituted by putting the data into the
data_section
of the initcontainer.~ There are alternative ideas to this where "stray data" beyond the end of the declareddata_section
becomes calldata for the initcode execution frame.EDIT: I've changed the proposal to the alternative mentioned above, see comments for discussion
Another alternative is to reuse the type 4
InitcodeTransaction
zeroth field for fetching the initcontainer in such transactions and keep calldata behaving normally.