I see you have implemented Waypoint
and 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 LedgerInfo
s 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.