This issue tracks progress towards building a prototype that fully implements the protocol and can be used to observe and test all invariants. There are many components we want to model and believe this will help us create a robust validator implementation once the time comes to port things into Nitro.
Protocol
[x] Add simple balance tracking functionality to AssertionChain to help with the accounting of stakes
[x] Extract leaf / challenge creation conditions into helper functions that can be fully tested for invariants using table-driven tests
[x] Add more validity conditions around submitting duplicates
[ ] Define final draft solidity API for the protocol
Validator Overall Behavior
[x] When listening to assertion / challenge events, ignore those from self
[ ] Include chaos monkey validators in simulations
[ ] Include metrics collection of challenge games and figure out what we want to track
[ ] Survive crashes/restarts and properly recover to continue participating in challenge games / leaf creation
[ ] Simulate different latencies for validator actions, configurable in the simulation
[x] Currently, state and history commitments are treated equivalently but they are very different things. Utilize historical commitments to their full capacity in the simulation
[ ] Consider building a spec tests suite similar to Ethereum consensus, and distributed in a format such as YAML for others building validator clients for the protocol
Validator Challenge Games
[x] Implement BlockChallenge resolution that can handle a single one-step fork, many validators, and differing heights
[ ] Implement BlockChallenge resolution that can handle multiple one-step-forks happening in the challenge game
[ ] Begin implementing BigStepChallenge and include a mock execution environment for testing purposes
[ ] Implement SmallStepChallenge
Visualization
[ ] Visualize presumtive vertices
[ ] Visualize challenges as a separate graph for easier tracking / understanding
[ ] Allow submissions of actions via a form on the website, such as submitting challenges, creating leaves, responding to challenges
Optimizations
[x] Have ready access to state roots for some last N amount of heights to quickly verify valid parent assertions to build upon or produce historical commitments for challenge games
[ ] Analyzer the number of chain calls / txs our validator makes and determine how to reduce them
Background
This issue tracks progress towards building a prototype that fully implements the protocol and can be used to observe and test all invariants. There are many components we want to model and believe this will help us create a robust validator implementation once the time comes to port things into Nitro.
Protocol
AssertionChain
to help with the accounting of stakesValidator Overall Behavior
Validator Challenge Games
BlockChallenge
resolution that can handle a single one-step fork, many validators, and differing heightsBlockChallenge
resolution that can handle multiple one-step-forks happening in the challenge gameBigStepChallenge
and include a mock execution environment for testing purposesSmallStepChallenge
Visualization
Optimizations