Implements a fault proof program that runs through the rollup state-transition to verify an L2 output from L1 inputs. This verifiable output can then resolve a disputed output on L1.
The program is designed such that it can be run in a deterministic way such that two invocations with the same input data will result in not only the same output, but the same program execution trace. This allows it to be run in an on-chain VM as part of the dispute resolution process.
To build op-program, from within the op-program
directory run:
make op-program
This resulting executable will be in ./bin/op-program
To run op-program unit tests, from within the op-program
directory run:
make test
From within the op-program
directory, options can be reviewed with:
./bin/op-program --help
The absolute pre-state of the op-program can be generated by executing the makefile
reproducible-prestate
target. Effectively, this builds a docker image specified
by Dockerfile.repro with pinned dependency versions to ensure the build is reproducible.
After running make reproducible-prestate
, the generate prestates files can be found in ./bin/.
The prestate-proof-*.json
files contain the absolute pre-state hash under the .pre
key that is also used by the
contracts deploy script. The prestate-*.bin.gz
files contain the actual prestate.