Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add EIP-6269: Full EVM Equivalence #6269

Closed
wants to merge 9 commits into from
58 changes: 58 additions & 0 deletions EIPS/eip-6269.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
eip: 6269
title: Full EVM Equivalence
description: Canonicalise the definition of Full EVM Equivalence
author: Pascal Caversaccio (@pcaversaccio)
discussions-to: https://ethereum-magicians.org/t/evm-equivalence-and-ethereum-stack-compatibility-definition-future-informational-eip/10044
status: Draft
type: Meta
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be type informational

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My original draft was of type informational, @Pandapip1 suggested the meta type #6269 (comment)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I think that is the correct type. Meta is used for processes around Ethereum which require consensus like the EIP process, hard forks, testnets, etc. This EIP is unenforceable (but still useful from an informational standpoint) and so I think this is the correct type.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the question is about whether it can be ignored or not - imho it should not be ignored (otherwise my initiative is somehow useless). And if I understand correctly, an informational EIP can be ignored whilst a meta EIP cannot be ignored. Not sure what's the approach here to find a consensus but I want to clearly define a very important semantics that cannot be simply ignored by the community...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I think that is the correct type. Meta is used for processes around Ethereum which require consensus like the EIP process, hard forks, testnets, etc. This EIP is unenforceable (but still useful from an informational standpoint) and so I think this is the correct type.

It's not enforceable, but it's nonetheless not an EIP that can be ignored. Defining something, IMO, is Meta, while describing an aspect of something is Informational.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please review the EIPs that are classified as "Meta" and then review the EIPs that are classified as "Informational". This EIP is an Informational EIP because it does not affect anything related to Ethereum "process" (again, see definition of meta type in EIP-1). It is providing a definition for a term to the community, not proposing any new feature or process change, and is advisable to follow, but is not enforceable.

created: 2023-01-06
---

## Abstract

This EIP standardises the definition of "Full Ethereum Virtual Machine (EVM) Equivalence". Full EVM equivalence is **complete** compliance with the latest version of the [Execution Layer Specification](https://github.com/ethereum/execution-specs/tree/24de2192e02bba11e61746aa9dee04d4e7a8b62e). This definition applies retroactively from the first release of the Ethereum Yellow Paper in April 2014.
pcaversaccio marked this conversation as resolved.
Show resolved Hide resolved

## Motivation

In light of the recent zkEVM announcements by various projects and the ongoing discussion, confusion, and ambiguity about how **full** EVM equivalence is defined, we define a canonical definition to foster a common understanding of the term "Full EVM Equivalence".

## Specification

Any protocol, network, smart contract system, or similar that claims at time `t` full EVM equivalence MUST fully (=100%) comply with the latest [Execution Layer Specification](https://github.com/ethereum/execution-specs/tree/24de2192e02bba11e61746aa9dee04d4e7a8b62e) version at time `t`.

## Rationale

A proper equivalence definition requires a common, publicly available reference that specifies the formal specification of the equivalence. The [Execution Layer Specification](https://github.com/ethereum/execution-specs/tree/24de2192e02bba11e61746aa9dee04d4e7a8b62e) formulates the formal specification of the Ethereum protocol, which is publicly available and serves as a common reference for all protocols, networks, smart contract systems, or the like that aim to build similar implementations.

## Backwards Compatibility

This proposal is fully backward compatible until the first release of the Ethereum Yellow Paper in April 2014.

## Test Cases

### Example 1 ✅

_Assumption:_ A protocol `X` follows at time `t` all the specifications stated in the Ethereum Yellow Paper at time `t`.

> Protocol `X` is fully EVM equivalent.

### Example 2 ❌

_Assumption:_ A protocol `X` follows at time `t` all the specifications stated in the Ethereum Yellow Paper at time `t` _except_ using the similar pricing for zero and non-zero byte of data.

> Protocol `X` is **not** fully EVM equivalent.

### Example 3 ❌

_Assumption:_ A protocol `X` follows at time `t` all the specifications stated in the Ethereum Yellow Paper at time `t` _except_ that the opcode `SELFDESTRUCT` does not destroy any storage.

> Protocol `X` is **not** fully EVM equivalent.

## Security Considerations

There are no security considerations directly related to the definition of "Full EVM Equivalence".

## Copyright

Copyright and related rights waived via [CC0](../LICENSE.md).