Data Structure, Hashing and Compression algorithms

Hi everyone!
I am working on a ZK-based Cross rollup communication protocol (Wisp)
Can someone from the team help me out with the following so we can integrate the CRC protocol with Linea as well:

  • What is the data structure used for the storage of the rollup? Is it MerklePatriciaTrees with Poseidon hashing or something else?
  • Are developers able to access the state root for a given block number from the L1 rollup contract or some compression algorithm is used for batching multiple blocks into one, meaning no direct access to blocknumber -> state root mapping?
  • Are the ecadd ecmul and ecpair precompiles verified by the prover?

Thank you!


Hey Daniel,

  • We use a sparse Merkle tree structure and the MiMC hash function
  • Yes, you will be able to validate the storage proof for on account on L2 via the L1 rollup contract. This mechanism is being worked on for integrating ENS. It is not recommended to use eth_getProof on the L2 as the target behavior of block hash will simply be a hash of the blocknumber.
  • ecmul and ecpair precompiles execute but are not yet proven (i.e. they’re trusted). The gnark team is close to implementing these and will be added to the coverage in the coming months

Please refer to this post too: Compiling Gnark proover using Tinygo - #5 by r00sh to learn more about gnark and tinygo


@0xroo Does it mean that the witness nodes for doing a Merkle Inclusion proof can be retrieved using eth_getProof or there will be some other way of getting the data for executing the proof validation?

1 Like

There will be another way. It’s currently being designed by the team - we can publish more details on this soon.


A post was merged into an existing topic: Share Your Feedback Here! :thought_balloon: