Page MenuHomeThat World

EIP161 implementation
ClosedPublic

Authored by sorpaas on Jan 23 2018, 8:16 AM.

Details

Summary

This implements EIP161. Several notes:

  • AccountPatch::initial_create_nonce handles EIP161(a).
  • AccountPatch::empty_considered_exists handles EIP161(b)(c)(d).
  • AccountPatch::allow_partial_change specify whether AccountChange::IncreaseBalance can happen. However, if in the case of EIP161 being enabled, allowing this would mean that the client needs to check for zero balance accounts in the end touched by IncreaseBalance to comply EIP161(d).
  • AccountPatch::allow_partial_change also has impact on parallel execution. When it is disabled, parallel execution would be slow due to the dependency on beneficiary address. If a client decides to take advantage of SputnikVM's parallel execution, it is recommended to always enable this and deal with EIP161(d).
  • premark_exists is removed as it is not needed any more.

Diff Detail

Repository
rEVM evm-rs
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

sorpaas created this revision.Jan 23 2018, 8:16 AM
sorpaas edited the summary of this revision. (Show Details)Jan 23 2018, 8:17 AM

Build has FAILED

Link to build: https://jenkins.that.world/job/evm-rs/12/
See console output for more information: https://jenkins.that.world/job/evm-rs/12/console

sorpaas updated this revision to Diff 71.Jan 23 2018, 8:20 AM
  • Fix stateful tests due to new patch trait
sorpaas accepted this revision.Jan 23 2018, 8:22 AM
This revision is now accepted and ready to land.Jan 23 2018, 8:22 AM
This revision was automatically updated to reflect the committed changes.