openethereum/parity-ethereum

Constantinople Release

5chdn opened this issue · 3 comments

5chdn commented

Tracking issue for Constantinople EIPs implementation progress:

Hardfork Meta EIP:

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

5chdn commented

All done. Can start testing.