ECIP 1068: Account Versioning Extension for Contract Creation Transaction
Author | Wei Tang |
---|---|
Discussions-To | https://github.com/ethereumclassic/ECIPs/issues/169 |
Status | Draft |
Type | Standards Track |
Category | Core |
Created | 2019-06-24 |
Requires | 1040 |
Simple Summary
Specification for an extension of ECIP-1040 to allow contract creation transaction to create multiple versions.
Abstract
This ECIP defines an extension to the base layer of account versioning (ECIP-1040) to allow multiple account versions to be used in contract creation transaction. Although this is not necessary at this moment, it will once we have multiple independent VMs (such as eWasm).
Motivation
The base account versioning layer only allows contract of the newest version to be deployed via contract creation transaction. This is a reasonable assumption for current Ethereum network, because most of new features added to EVM are additions, and developers almost never want to deploy contracts that are not of the newest version. In this section, we provide an extension to allow multiple versions of contracts to be deployed via contract creation transaction.
Specification
Add an additional field version
(256-bit integer) in contract
creation transaction. So it becomes nonce
, gasprice
, startgas
,
to
, value
, data
, v
, r
, s
, version
. When signing or
recovering, sign ten items, with v
, r
, s
as defined by EIP-155.
The transaction would be executed with the code’s version in
version
supplied, and deploys contract of version
. If version
is
not supported or validation does not pass, return out-of-gas.
Rationale
By providing the additional field version
, a contract creation
transaction can specify which version it wants to deploy. In case of
two independent VMs such as EVM and eWASM, we can allow two
LATEST_VERSION
s to be specified – one for EVM and another for
eWASM. Both of them then can deploy new contracts via transactions.
Backwards Compatibility
This ECIP only changes transaction formats and does not change any VM execution logic, thus it has no backwards compatibility issue.
Test Cases
Not yet provided.
Implementation
Not yet implemented.
Copyright
This work is licensed under Apache License, Version 2.0.