celestiaorg / cosmos-sdk

:chains: A Framework for Building High Value Public Blockchains :sparkles:
https://cosmos.network/
Other
19 stars 33 forks source link

Initialize the new app with a deep SMT instead of populating the empty SMT #266

Closed Manav-Aggarwal closed 2 years ago

Manav-Aggarwal commented 2 years ago

Currently, when a new baseapp is set from the contents of a fraudproof, when setting key/value pairs in the store of the baseapp, we start with an empty SMT with no predefined root. However, we must start with a deep SMT with a predefined root taken from the given fraudproof. This lets the new app's substore hashes to be the same.

Right now, since we load the key/value pairs on an empty SMT we don't get the same root as the pre-state root of a challenged transaction.

Starting point: https://github.com/celestiaorg/cosmos-sdk/blob/aa56ce45725fc0fc3d6e62d9e537e3a2265c5c0c/baseapp/baseapp.go#L873

Manav-Aggarwal commented 2 years ago

We use IAVL store type now. Closed by: https://github.com/celestiaorg/cosmos-sdk-rollmint/pull/2