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-4812: Exodus #4812

Closed
wants to merge 16 commits into from
45 changes: 45 additions & 0 deletions EIPS/eip-4812.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
eip: 4812
title: Exodus
description: Exodus allows to create blockchain networks with accounts and transactions.
atoulme marked this conversation as resolved.
Show resolved Hide resolved
author: Antoine Toulmé (@atoulme), Chaals Nevile (@chaals)
discussions-to: <https://entethalliance.org/contact>, For EEA members only (requires a patent commitment): <https://github.com/entethalliance/testing-wg/issues>
status: Draft
type: Standards Track
category: ERC
created: 2021-11-09
---

## Abstract
This document specifies how to generate a blockchain environment from a file.

The environment is created based on a chain configuration, that can include initial balances, and transactions to be processed.
atoulme marked this conversation as resolved.
Show resolved Hide resolved

## Motivation
During testing of distributed systems, we need to load blockchain data and perform some operations.

There is currently no standard in place to codify how to ingest blockchain data. The current solutions involve directly ingesting RLP-encoded data, and that is effectively impossible to read directly which makes it hard to reason about tests.

We aim to facilitate testing and formulation of tests through an explicit format developers can use to represent contracts and transactions in detail, as well as the expected outcomes.

## Specification
atoulme marked this conversation as resolved.
Show resolved Hide resolved
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC 2119](#ref-RFC2119) and [RFC 8174](#ref-RFC8174)
atoulme marked this conversation as resolved.
Show resolved Hide resolved

## Rationale
The EEA is aiming to standardize Enterprise Ethereum clients, including facets like cross-chain activities and secure deployment of smart contracts. The Testing and Certification Working Group is working in earnest towards creating a test suite that allows developers to certify their implementation is matching the specification of the Enterprise Ethereum standard.

To do so, we require a way to generate workloads and situations on an enterprise blockchain that reconstitutes specific tests.

We have looked at existing solutions:
* Some clients are able to ingest RLP-encoded blockchain data for testing purposes, but that creates a burden on developers to maintain such data and is not directly viewable, making it difficult to maintain and discuss the data itself.
* Some clients can ingest specific payloads for components of their architecture, but we are looking to test consensus use cases that require all data such as transactions, accounts and balances.

## Backwards Compatibility
There is no backwards compatibility issues as this is a net-new process that will run separately from clients and generate blockchain state for them.

## Security Considerations

Some configurations **will** show security problems, to enable testing for them. This is a critical part of the functionality.

## Copyright
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/
atoulme marked this conversation as resolved.
Show resolved Hide resolved