Making this a single milestone for now, but we might want to split it off. Each of those is its own smaller milestone, though there isn't enough details to really flesh those out as comprehensively as the other epics yet.
Initial review / spec
[ ] Write a spec based on what’s in the Cannon repo.
[ ] Review the code looking for bugs to claim our bounty. (Has to happen in February).
Migrate Cannon from L1 to L2
[ ] deposit rollup
[ ] make it do the L2 execution engine version of processBlock
[ ] port block derivation to cannon: cannon needs to read L1 inputs (provided by users & proven against L1 roots) in order to create to the L2 blocks to be validated.
[ ] other milestones (TBD)
Additional testing based on the spec
[ ] Write tests, including fuzzing / symbolic execution, for the deposit rollup fault proof
[ ] ... for other milestones (TBD)
Dispute game design
[ ] Review the statechannel work and see how it fits with what we learned from Cannon.
[ ] Similarly, investigate Arbitrum’s design.
[ ] Come up with a solution for the large preimage problem (e.g. outlaw them safely, commission a zk-proof)
Dispute game implementation
[ ] Write/adapt disput game contract & connect the on-chain MIPS step evaluator to the dispute game contract.
Challenge agent
[ ] Connect the off-chain code for playing the dispute game (i.e. doing the on-chain interactions which do the binary search) to the off-chain code for generating the MIPS traces.
End to end testing
[ ] Try to fuzz the dispute game itself as best as possible, probably using a mock program.
Making this a single milestone for now, but we might want to split it off. Each of those is its own smaller milestone, though there isn't enough details to really flesh those out as comprehensively as the other epics yet.
processBlock