ECIP 1068: Account Versioning Extension for Contract Creation Transaction Source

AuthorWei Tang
Discussions-Tohttps://github.com/ethereumclassic/ECIPs/issues/169
StatusDraft
TypeStandards Track
CategoryCore
Created2019-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_VERSIONs 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.

This work is licensed under Apache License, Version 2.0.