Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Finalizer transition requires QCs on both finalizer policy sets #391

Merged
merged 46 commits into from
Jul 24, 2024

Conversation

heifner
Copy link
Member

@heifner heifner commented Jul 23, 2024

Require a QC (quorum certificate) on both finalizer policy sets (active and pending) before considering a QC to have reached quorum on a block with a pending finalizer policy change.

Includes refactoring:

  • quorum_certificate.?pp => qc.?pp
  • quorum_certificate => qc_t
  • valid_quorum_certificate => qc_sig_t
  • vote_status => vote_result_t to differentiate from vote_status_t
  • pending_quorum_certificate => aggregating_qc_sig_t Use aggregating instead of pending to avoid confusion with pending finalizer policy
  • aggregating_qc_t manages the two aggregating_qc_sig_t, one for active policy sig and optionally one for pending policy sig.
  • Move QC processing out of block_state into QC types

Adds last_pending_finalizer_policy_start_num for tracking when pending finalizer policy first became pending.

Resolves #376

@heifner heifner added consensus-protocol Change to the consensus protocol. Impacts light client validation. OCI Work exclusive to OCI team labels Jul 23, 2024
libraries/chain/finality/qc.cpp Outdated Show resolved Hide resolved
libraries/chain/finality/qc.cpp Outdated Show resolved Hide resolved
libraries/chain/finality/qc.cpp Outdated Show resolved Hide resolved
libraries/chain/include/eosio/chain/finality/qc.hpp Outdated Show resolved Hide resolved
unittests/svnn_ibc_tests.cpp Outdated Show resolved Hide resolved
unittests/svnn_ibc_tests.cpp Outdated Show resolved Hide resolved
unittests/svnn_ibc_tests.cpp Outdated Show resolved Hide resolved
unittests/finality_proof.hpp Show resolved Hide resolved
libraries/chain/finality/qc.cpp Outdated Show resolved Hide resolved
libraries/chain/include/eosio/chain/finality/qc.hpp Outdated Show resolved Hide resolved
libraries/chain/include/eosio/chain/finality/qc.hpp Outdated Show resolved Hide resolved
libraries/chain/finality/qc.cpp Outdated Show resolved Hide resolved
libraries/chain/controller.cpp Outdated Show resolved Hide resolved
libraries/chain/finality/finalizer.cpp Outdated Show resolved Hide resolved
libraries/chain/finality/qc.cpp Outdated Show resolved Hide resolved
Copy link
Member

@linh2931 linh2931 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will add more comments while reviewing.

libraries/chain/controller.cpp Outdated Show resolved Hide resolved
libraries/chain/controller.cpp Outdated Show resolved Hide resolved
libraries/chain/include/eosio/chain/block_header_state.hpp Outdated Show resolved Hide resolved
libraries/chain/include/eosio/chain/finality/qc.hpp Outdated Show resolved Hide resolved
@ericpassmore
Copy link
Contributor

Note:start
group: STABILITY
category: INTERNALS
summary: Require a QC (quorum certificate) on both finalizer policy sets (active and pending) before considering a QC to have reached quorum on a block with a pending finalizer policy change.
Note:end

libraries/chain/finality/qc.cpp Show resolved Hide resolved
libraries/chain/finality/qc.cpp Outdated Show resolved Hide resolved
libraries/chain/finality/qc.cpp Show resolved Hide resolved
@heifner heifner merged commit f5df9fe into main Jul 24, 2024
36 checks passed
@heifner heifner deleted the GH-376-joint-qcs branch July 24, 2024 23:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
consensus-protocol Change to the consensus protocol. Impacts light client validation. OCI Work exclusive to OCI team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Policy transitions should use joint policies
5 participants