ZK rollups don’t store transaction on L1. They just need the Zk proof the check correctness of state transition and additionally state diff so users would be able to reconstruct the rollup state in case the operator stops his work. But if the individual transactions are not stored on L1, how would I be able the check on L1 that my rollup transaction has been executed / included in the last rollup batch?
I found the following info on ethereum.org docu: "Besides computing state roots, the ZK-rollup operator also creates a batch root—the root of a Merkle tree comprising all transactions in a batch. When a new batch is submitted, the rollup contract stores the batch root, allowing users to prove a transaction (e.g., a withdrawal request) was included in the batch. Users will have to provide transaction details, the batch root, and a Merkle proof showing the inclusion path."
So, it says that a user checks/proves transaction inclusion by providing a Merkle proof. But how would a user be able to generate a Merkle proof? She is unable to do this because she does not see all other transactions of the batch because in Zk rollups transactions are not stored on L2.
Does anybody know more here?