Skip to content

Commit

Permalink
Automatically merged updates to draft EIP(s) 1702 (ethereum#2152)
Browse files Browse the repository at this point in the history
Hi, I'm a bot! This change was automatically merged because:

 - It only modifies existing Draft or Last Call EIP(s)
 - The PR was approved or written by at least one author of each modified EIP
 - The build is passing
  • Loading branch information
sorpaas authored and ilanolkies committed Nov 12, 2019
1 parent 6d78cd9 commit b537819
Showing 1 changed file with 12 additions and 14 deletions.
26 changes: 12 additions & 14 deletions EIPS/eip-1702.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ We let a family of contracts to always have the same `version`. That
is, `CREATE` and `CREATE2` will always deploy contract that has the
same `version` as the *code's version*.

In other words, `CREATE` and `CREATE2` will execute the init code
using the current *code's version*, and deploy the contract of the
current *code's version*. This holds even if the to-be-deployed code
is empty.

### Validation

A new phrase, *validation* is added to contract deployment (by
Expand Down Expand Up @@ -177,20 +182,13 @@ fields, we also define:
## Rationale

This introduces account versioning via a new RLP item in account
state. The first design above gets account versioning by making the
contract *family* always have the same version. In this way, versions
are only needed to be provided by contract creation transaction, and
there is no restrictions on formats of code for any version. If we
want to support multiple newest VMs (for example, EVM and WebAssembly
running together), then this requires alternative design in contract
creation transaction section

The second design above requires new versions of VMs follow a
formatting -- that it always has a prefix. In this way, the version
can be derived from the prefix, thus allowing a contract *family* to
have multiple versions. It also makes it so that we can pin contract
creation transaction using only one VM version, and it can deploy
other VM versions.
state. The design above gets account versioning by making the contract
*family* always have the same version. In this way, versions are only
needed to be provided by contract creation transaction, and there is
no restrictions on formats of code for any version. If we want to
support multiple newest VMs (for example, EVM and WebAssembly running
together), then this will requires extensions such as EIP-2138 and
EIP-2139.

Alternatively, account versioning can also be done through:

Expand Down

0 comments on commit b537819

Please sign in to comment.