The model is developed in Alloy 6.1. The properties and testing scenarios are checked with glucose 4.1 SAT solver.
Code accompanying "Towards a formal foundation of blockchain rollups" paper.
rollup_data_model.als
definition of datatypes associated with basic entities of ZK rollups.Input
abstract inputs (transactions);Block
encapsulate sequence of inputs;Proof
andCommitment
represent proofs and commitments submitted from L2 to L1 for block finalization;ForcedEvent
events forced upon L2 through L1;UpgradeAnnouncement
abstract datatype which represents an announcement of an upgrade;Timeout
after upgrade announcement users get a period of time to act on the "upgrade announcement". The end of this period is signalled by the timeout event.L1
a singleton object with fields which represent the state of L2 rollup on L1;
rollup_dynamics.als
implementation of queries associated with ZK-rollups.receive_commitment
receives a commitment for later process.receive_proof
receives a proof for later process.receive_forced
receives a forced event, appends it to the queue unless upgrade is in the processing mode.rollup_process
tries to finalize previously received commitment and the proof.update_blacklist
processes the blacklisting event from the head of the forced queue.upgrade_init
receives theUpgradeAnnouncement
and sets theL1.ongoing_upgrade
field.upgrade_timeout
receives a timeout indicating that the current queueing phase of the upgrade has finished.upgrade_deploy
deploys the upgrade once the processing phase has ended (i.e., forced queue is empty).stutter
ensures that traces are infiniteevents
set of possible events.
rollup_properties.als
specification of properties.simple_rollup_prop*
- properties associated with the basic ("strawnan") rollups;cold_rollup_prop*
- properties associated with forced queues;blacklist_prop*
- properties associated with rollups with "eager" blacklists updated through the forced queue;upgrade_prop*
- properties associated with "soft" blacklists updated through the upgradeability mechanism;
rollup_scenarios.als
various scenarios for testing.