Constantinople Release
5chdn opened this issue · comments
Tracking issue for Constantinople EIPs implementation progress:
- EIP 145 Bitwise shifting instructions in EVM #8451
-
EIP 210 Blockhash refactoring #5505 (needs to check current version compliance) - EIP 1014 Skinny CREATE2 #9268
- EIP 1052 EXTCODEHASH Opcode #9234
- EIP 1234 Delay diff bomb #9480
- EIP 1283 Net gas metering for SSTORE (replaces 1087) #9319
Hardfork Meta EIP:
- EIP 1013 Constantinople Fork
Timeline:
Proposed Constantinople Timeline
Finalize EIPs that are being implemented: July 13th
Client implementation: July 16th - August 13th
Testing: August 13th - September 10th
Testnet: September 10th - October 1st
Launch: October 8th
Geth implementation of 1087 ethereum/go-ethereum#17208
I'm having some issues getting EIP-1087 implemented in our codebase. With our current state cache method, we can do it, but with (probably noticeable) performance penalty. The issue is that we optimize state commitment to only happen at the end of a block, but EIP-1087 makes the assumption that state commitment happens at the end of every transaction.
So to implement current spec, it seems that we cannot use info from current cache (because storage caches, including checkpoints, also contain changes from previous transactions), but instead, we need to maintain a separate dirty map just to keep track of the gas cost. That dirty map will probably also need to contain the original storage value. So adding up, in this way, it basically doubles the memory size of storage cache.
Edit: trying to draft an alternative of EIP-1087 that may solve this problem. One possible limitation of this is that it doesn't deal with nested call frame, but it looks to be sufficient for all examples provided in EIP-1087 (reentry lock, multiple increments, multi-send). ethereum/EIPs#1283
All done. Can start testing.