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.
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.
- Ability to compile/build testeth and LLL compiler or run a docker file.
- Ability to understand the LLL Ethereum language.
- Ability to understand EIPs, particuarly those that are going to be going into the Metropolis hard fork.
- Create a GitHub account if you do not already have one.
- Read the resources below to learn about LLL, EVM, testeth, and EIPs.
- 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.
- 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.
- Document your learnings and correct/add to current documentation.
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.
- Understanding the Ethereum Blockchain Protocol (Video)
- An introduction to LLL for Ethereum Smart Contract Development by Daniel Ellison
- Building and installing Ethereum compilers by Daniel Ellison
- Building and installing Ethereum compilers screencast video by Daniel Ellison
- Compiling an LLL Contract for the First Time by Daniel Ellison
- Deploying your first LLL contract — Part 1
- Deploying your first LLL contract — Part 2
- The Resurrection of LLL blog posts by Daniel Ellison (this has 6 total parts)
- Advanced Solidity Tutorial by Andreas Olofsson (especially "EVM Stack and Assembler" section)
- Ethereum Frontier Guide on state machine and opcodes (possibly outdated)
- Ethereum Frontier Guide on state machine and opcodes (possibly outdated)
- Ethdocs Guide to Estimating Gas
- Reddit thread with links to old LLL code
- Old Ethereum Github Wiki page with links to LLL specs and examples
- Old LLL code by Andreas Olofsson
- Metropolis Tests - List of Tasks
- Yoichi's Guide to Generate Consensus Tests using testeth
- Testing Ethereum Consensus Video from Devcon1
- @winsvega's testeth Docker image
- ethereum/tests repo
- EthDocs.org Ethereum Testing Section [Note: Outdated]
- ethereum/tests Wiki (Parts may be outdated)
- List of Metropolis EIPs
- Yoichi's Blog Summarizing Metropolis EIPs
- "What happens when Metropolis EIPs change" - blog by Yoichi
- Bi-monthly Ethereum core developer meeting notes/video where devs discuss EIPs
We are also looking for contributors to ethereumjs-vm (more info soon)
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.