Fold the validator roots into the state tree
ref: https://github.com/lazyledger/lazyledger-core/issues/66
Essentially the same work (minus removing the additional validator roots in the header), need to happen in optimint. @tzdybal I'd open a separate issue there and link to this and lazyledger/lazyledger-core#66 in there.
Have we decided we're not doing this anymore?
I'm not sure tbh. If we can keep the current mechanism and have the validator sets as part of the sub-trees in the SMT as in the specs, that could be preferable (as we won't change anything in tendermint per se). But this approach should be validated first.
I think we discussed today (correct me if I'm wrong @liamsi) that we should include the validator set root in both the header and folded into the state. Which would make this issue no longer needed until we eventually remove the validator set root from the header way down the line.
Exactly, we would include the validator set root in both the header and folded into the state.
Which would make this issue no longer needed until we eventually remove the validator set root from the header way down the line.
That means no changes are required on the tendermint side but we still need to make sure that the valsets show up in the state-tree. So while this issue is not really needed as a whole, we still need to make sure that a) the valsetes are part of the abci-app state and b) (less relevant for the main chain, but important for sdk-based rollups imo) that all state-transitions touching that state can result in succinct state fraud-proofs.