Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
Before the enforcer can run an op-code on chain, every VM element needs to be initialized.
Currently the VM memory is initialized as follows:
- Full memory is provided in initialization transaction.
- Memory is hashed and combined with hashes of other VM elements.
- If VM root hash matches with generated hash, VM has been set up correctly.
This is not efficient for opcodes MLOAD, MSTORE, MSTORE8 where at max a word of the memory will be read. A better approach is to:
1. Make the memory size a power of 2.
2. Merkelize the memory instead of simply hashing.
3. Only provide the proof for the word that the next opcode will read, instead of the whole array.