-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
45 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
--- | ||
eip: 4812 | ||
title: Exodus | ||
description: Exodus facilitates the creation of blockchain networks with accounts and transactions. | ||
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 which can include initial balances and transactions to be processed. | ||
|
||
## 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 | ||
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 | ||
|
||
## 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/ |