Fold validator root(s) into state root (app hash) #66
Labels
C:abci
The connection between ll-core and the (abci) app
C:light
Component: Light client
C:minimal-execution
Parts that require on-chain execution (i.e. via the cosmos-sdk)
T:investigate
Further investigation needed
Summary
Fold the validator roots (
Header.ValidatorsHash
andHeader.NextValidatorsHash
) into the single state root.Problem Definition
Tendermint is designed in a way that it does not need to understand how the app that is using it is computing the state root (
Header.AppHash
). Only a minimal subset of the state needed by tendermint to function properly. It includes the validator set changes (computed by the app). The commitment to that part of state is computed by tendermint (and not by the app). This makes sense as this works independently on how the app tracks state and leaves and apps can define whatever business logic they want.For LL we want to avoid several roots as every additional root means a new kind of fraud proof that needs to be defined and implemented. Hence, we want to "fold" the commitment to the validator sets into the state root (which is usually computed by the app and an opaque blob to tendermint).
Proposal
There are basically two ways we can go about this (both blur the line between the app and tendermint):
Both approaches have some pros and cons that we need to understand and discuss here first. One observation is that while (2.) even further blurs the line between app and tendermint, it is closer to what is already there and might have less implications on the cosmos-sdk app we will build (i.e. we can probably reuse more of the existing SDK modules without big changes).
ref: https://github.com/lazyledger/lazyledger-core/compare/ismail/unsafe_removal_ofvalhashes?expand=1
ref: celestiaorg/celestia-specs#78
The text was updated successfully, but these errors were encountered: