Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?

Welcome

This guide is intended to provide resources for those wanting to help test Metropolis EIPs. The CPP team is currently in the middle of a migration from EthDocs to a documentation site that is more dedicated to CPP-Ethereum so the documentation on creating tests for Ethereum using testeth is scattered. Everything you will need to get started should be compiled below.

Suggested skill sets needed to create and run tests

  1. Ability to compile/build testeth and LLL compiler or run a docker file.
  2. Ability to understand the LLL Ethereum language.
  3. Ability to understand EIPs, particuarly those that are going to be going into the Metropolis hard fork.

Now What Do I Do?

  1. Create a GitHub account if you do not already have one.
  2. Read the resources below to learn about LLL, EVM, testeth, and EIPs.
  3. Join the Gitter chat room for Ethereum testers at https://gitter.im/ethereum/tests. Introduce yourself and ask questions if you get confused or need guidance on what to do.
  4. Create and/or run consensus tests by following the guide here: Yoichi's Guide to Generate Consensus Tests using testeth. If you create new tests open a pull request in the appropriate repository.
  5. Document your learnings and correct/add to current documentation.

Resources to Help You Get Started

LLL and EVM Stack Resources

LLL is a high-level language in Ethereum used to write smart contracts. LLL is considered a more difficult to learn and write than Solidity because it deals directly with a lot of the low level OPCODEs and features of the Ethereum Virtual Machine (EVM). If you have familiarity with stack machines or have ever taken a course on assembly languages you will be able to pick this up.

testeth/cpp-ethereum Resources

Metropolis EIP Resources

Help/Chat

We are also looking for contributors to ethereumjs-vm (more info soon)

Video Overview Resources

sdtsui commented Jun 18, 2017

Nice share, @tcsiwula - good addition to @pirapira 's generating_tests.rst documentation.

cdetrio commented Jun 21, 2017

"Yoichi's Guide to Generate Consensus Tests using testeth" should link to https://github.com/ethereum/cpp-ethereum/blob/develop/doc/generating_tests.rst

Owner

Souptacular commented Jun 21, 2017

@tcsiwula and @cdetrio: Updated guide with your changes. Thanks!

sdtsui commented Jun 23, 2017

@Souptacular -
Would it be useful to add Yoichi's list of tasks?
Metropolis Tests

Resources that I've found useful to get a high-level understanding of what is being tested, as a programmer without experience in the ethereum protocol (other devs might be able to relate):
Understanding the Ethereum Blockchain Protocol

Docs from Frontier and Homestead, even if possibly outdated:
https://ethereum.gitbooks.io/frontier-guide/opcodes,_costs,_and_gas.html
https://ethereum.gitbooks.io/frontier-guide/contracts_and_transactions_intro.html
http://www.ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-transactions.html#estimating-transaction-costs

Owner

Souptacular commented Jul 2, 2017

@sdtsui Added!

jamesray1 commented Aug 4, 2017

I've started reading the yellow paper, and will finish that before I start going through the docs on this page. I've already read the whitepaper and was going through the Solidity docs.

hugo-dc commented Aug 5, 2017

I'm still getting 404 for "Yoichi's Guide to Generate Consensus Tests using testeth".

The yellow paper involves a lot of further reading, e.g. about maths and cryptography, in order to understand it. So I might just jump to learning LLL as it's probably more useful to know how to use that.

jamesray1 commented Aug 11, 2017

jamesray1 commented Sep 1, 2017

For the latest testing documentation, refer to http://ethereum-tests.readthedocs.io/.
This latest documenation may make other links to testing documentation in this post outdated, which I have been through and provided a reference to the latest site above for articles that discuss testing Ethereum.

jamesray1 commented Sep 1, 2017

As I mentioned before,

I also got a 404 error for compile/build testeth and LLL compiler or run a docker file.

That link can be replaced with the https://ethereum-tests.readthedocs.io/en/latest/ link, like so:

Ability to compile/build testeth.

For:

Create and/or run consensus tests by following the guide here: Yoichi's Guide to Generate Consensus Tests using testeth.

This should be changed to:
Create and/or run consensus tests by following the previously mentioned guide here: https://ethereum-tests.readthedocs.io/en/latest/.

@pirapira, @winsvega, @holgerd77, @Souptacular

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment