Page MenuHomePhabricator

[avalanche] Reject votes that have been inconclusive for too many rounds
AbandonedPublic

Authored by sdulfari on May 13 2022, 00:44.

Details

Reviewers
deadalnix
Group Reviewers
Restricted Project
Summary

If a vote (on a block or proof) has been going for too many rounds, increase the chances of the network coming to a vote by voting to reject after some threshold number of rounds.

The Avalanche whitepaper suggests that it's expected for finalization to occur after O(log(n))
rounds of voting. While our implementation differs in some ways, this expectation should hold
reasonably close. The threshold was selected to be an order of magnitude higher than the number
of votes required for finalization, which gives plenty of room for confidence to reset multiple
times before finalizing under normal network conditions.

This threshold can later be made configurable and/or tightened as needed.

Test Plan
ninja check check-functional

Diff Detail

Event Timeline

deadalnix requested changes to this revision.May 13 2022, 10:36
deadalnix added a subscriber: deadalnix.

This is obviously unsound. How can this make consistent conclusion with the rest of the network?

This revision now requires changes to proceed.May 13 2022, 10:36

Fix the approach so that instead of stopping avalanche on the inconclusive item, we continue
with a reject vote. This way, we retain network consistency but are still able to tip the
network to finalize a rejection and not let a vote dangle.

I think I came up with a better approach.

Extract some parts of this diff into D11474. The design is moving away from complicating the vote rejection logic in favor of letting the network layer request inventories as needed.