Instantly share code, notes, and snippets.

Embed
What would you like to do?

Edit 8/14/18: See https://ethereum-tests.readthedocs.io/en/latest/ for more updated information. Much of the links below are still valuable though.

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)

@tcsiwula

This comment has been minimized.

Show comment
Hide comment
@tcsiwula

tcsiwula commented Jun 17, 2017

Video Overview Resources

@sdtsui

This comment has been minimized.

Show comment
Hide comment
@sdtsui

sdtsui Jun 18, 2017

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

sdtsui commented Jun 18, 2017

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

@cdetrio

This comment has been minimized.

Show comment
Hide comment
@cdetrio

cdetrio 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

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

@Souptacular

This comment has been minimized.

Show comment
Hide comment
@Souptacular

Souptacular Jun 21, 2017

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

Owner

Souptacular commented Jun 21, 2017

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

@sdtsui

This comment has been minimized.

Show comment
Hide comment
@sdtsui

sdtsui 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

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

@Souptacular

This comment has been minimized.

Show comment
Hide comment
@Souptacular
Owner

Souptacular commented Jul 2, 2017

@sdtsui Added!

@jamesray1

This comment has been minimized.

Show comment
Hide comment
@jamesray1

jamesray1 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.

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

This comment has been minimized.

Show comment
Hide comment
@hugo-dc

hugo-dc Aug 5, 2017

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

hugo-dc commented Aug 5, 2017

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

@jamesray1

This comment has been minimized.

Show comment
Hide comment
@jamesray1

jamesray1 Aug 11, 2017

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

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

This comment has been minimized.

Show comment
Hide comment

jamesray1 commented Aug 11, 2017

@jamesray1

This comment has been minimized.

Show comment
Hide comment
@jamesray1

jamesray1 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

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

This comment has been minimized.

Show comment
Hide comment
@jamesray1

jamesray1 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

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