Fix Bank accounts hash mismatch related to Clock::unix_timestamp (#13477)

* Test for different ancestors with mismatch bank hash

* Test cleanup

* Remove nondeterministic ancestor check

* Update timestamp bounding feature key

* Update design doc

* Filter recent_timestamps to nodes voting within the last epoch

Co-authored-by: Stephen Akridge <sakridge@gmail.com>
This commit is contained in:
Tyera Eulberg
2020-11-09 19:10:09 -07:00
committed by GitHub
parent 2eb637d52f
commit c0e2ef06dc
4 changed files with 88 additions and 10 deletions

View File

@ -36,10 +36,8 @@ correction.
In order to calculate the estimated timestamp for a particular Bank, the runtime
first needs to get the most recent vote timestamps from the active validator
set. The `Bank::vote_accounts()` method provides the vote accounts state, and
these can be filtered to all accounts whose most recent timestamp is for an
ancestor slot back to the current root. This should guarantee 2/3+ of the
current cluster stake is represented, since by definition, roots must be
confirmed by 2/3+ stake.
these can be filtered to all accounts whose most recent timestamp was provided
within the last epoch.
From each vote timestamp, an estimate for the current Bank is calculated using
the epoch's target ns_per_slot for any delta between the Bank slot and the