Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Final votes #3134

Merged
merged 12 commits into from
May 7, 2021
Merged

Final votes #3134

merged 12 commits into from
May 7, 2021

Conversation

clemahieu
Copy link
Contributor

This patch is a mitigation when handling specific fork situations and uses a double consensus pass before arriving at confirmation.

Thank you to @PlasmaPower for the initial design and @Srayman for help with patch testing.

… uses a double consensus pass before arriving at confirmation. The final vote pass is limited to issuing a single vote which cannot be changed and only following confirmation in the final vote pass is a transaction confirmed.
@SergiySW SergiySW added this to the V22.0 milestone Mar 11, 2021
@zhyatt zhyatt requested a review from SergiySW March 11, 2021 15:00
SergiySW
SergiySW previously approved these changes Mar 11, 2021
@Srayman
Copy link
Contributor

Srayman commented Mar 17, 2021

Can both the sequence and timestamps be used but have the timestamp include the actual timestamp the vote was generated?

This would help in analyzing votes for confirmations to know when a final vote was generated compared to others.

The sequence could continue to be used to differentiate newer/final votes.

@clemahieu clemahieu dismissed a stale review via a822aea April 19, 2021 14:13
Srayman pushed a commit to Srayman/nano-node that referenced this pull request Apr 20, 2021
# Conflicts:
#	nano/core_test/active_transactions.cpp
#	nano/core_test/node.cpp
#	nano/node/active_transactions.cpp
#	nano/node/blockprocessor.cpp
#	nano/node/bootstrap/bootstrap_frontier.cpp
#	nano/node/bootstrap/bootstrap_legacy.cpp
#	nano/node/confirmation_height_bounded.cpp
#	nano/node/confirmation_height_processor.cpp
#	nano/node/confirmation_height_unbounded.cpp
#	nano/node/election.cpp
#	nano/node/node.cpp
#	nano/node/prioritization.cpp
#	nano/node/request_aggregator.cpp
#	nano/node/voting.cpp
#	nano/secure/common.cpp
# Conflicts:
#	nano/node/active_transactions.cpp
#	nano/node/node.cpp
Check if scheduler is stopped when blocking on ::flush.
@clemahieu
Copy link
Contributor Author

Can both the sequence and timestamps be used but have the timestamp include the actual timestamp the vote was generated?

This would help in analyzing votes for confirmations to know when a final vote was generated compared to others.

The sequence could continue to be used to differentiate newer/final votes.

That would require a second field in the vote and a new vote format with an upgrade etc.

# Conflicts:
#	nano/node/active_transactions.cpp
#	nano/node/election.cpp
#	nano/node/election.hpp
# Conflicts:
#	nano/node/election_scheduler.cpp
@clemahieu clemahieu merged commit 98af164 into develop May 7, 2021
@zhyatt zhyatt added the major This item indicates the need for or supplies a major or notable change label May 12, 2021
@zhyatt zhyatt deleted the final_votes branch September 21, 2021 21:53
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
enhancement major This item indicates the need for or supplies a major or notable change
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants