I have a question regarding how state data is verified by the L1 contract when an L2 rollup batch is published.

I understand that the state deltas are published in compressed form, as with a zk-rollup, where we replace addresses with leaf indices, and we remove the signature because they are verified in the snark / stark. But how does the contract know if the CALLDATA payload that contains the compressed state deltas is accurate? Is this data checked by the smart contract? i.e. does the smart contract hash each delta and create a merkle tree to compare to the public inputs of the snark?

If the smart contract doesn't check the calldata state deltas, then surely the operator can change the state history discretely?

1 Answer 1


There is a transaction root consisting of the current batch of transactions. The circuit needs to prove that the transaction comes from the transaction root tree. The transaction root will be submitted to L1.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.