I see you have implemented
LedgerConsistancyProof. It’s time to bring up this question again.
According to #1384, Waypoint properties and debate #2: “…if we suspect that there might be a fork in the current epoch it means we don’t trust the current validator set and we should absolutely move to the next epoch anyway.”
My question: Could you elaborate this statement a bit?
To make use of
LedgerConsistancyProof, the client needs to keep track of not only the root hash of the current known version, but also the hashes of frozen subtrees.
Waypoint is simple and short, and easy to use, but does not contain the subtrees to prove consistancy within an epoch.
My suggestion: Include frozen subtrees into
LedgerInfos at epoch boundaries, so that these information also gets hashed into the Waypont and returned with
ValidatorChangeProof, along with next validator set. Thus, by verifying a
Waypoint, a client can also learn the frozen subtrees, with which it can make use of
LedgerConsistancyProof and detect forks in the current epoch.