Skip to content

Commit

Permalink
Merge pull request #1946 from AntelopeIO/rename_finalizer_set
Browse files Browse the repository at this point in the history
Rename `finalizer_set` -> `finalizer_policy`
  • Loading branch information
greg7mdp authored Dec 1, 2023
2 parents 77cb01a + 4715336 commit bb30c14
Show file tree
Hide file tree
Showing 24 changed files with 142 additions and 143 deletions.
2 changes: 1 addition & 1 deletion libraries/chain/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ set(CHAIN_WEBASSEMBLY_SOURCES
set(CHAIN_HOTSTUFF_SOURCES
hotstuff/chain_pacemaker.cpp
hotstuff/qc_chain.cpp
hotstuff/finalizer_policy.cpp
hotstuff/hotstuff.cpp
)

Expand Down Expand Up @@ -129,7 +130,6 @@ add_library( eosio_chain
${CHAIN_HOTSTUFF_SOURCES}

authority.cpp
finalizer_set.cpp
trace.cpp
transaction_metadata.cpp
protocol_state_object.cpp
Expand Down
12 changes: 6 additions & 6 deletions libraries/chain/abi_serializer.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <eosio/chain/abi_serializer.hpp>
#include <eosio/chain/asset.hpp>
#include <eosio/chain/exceptions.hpp>
#include <eosio/chain/finalizer_authority.hpp>
#include <eosio/chain/hotstuff/finalizer_authority.hpp>
#include <fc/io/raw.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <fc/io/varint.hpp>
Expand Down Expand Up @@ -634,11 +634,11 @@ namespace eosio { namespace chain {
_variant_to_binary(type, var, ds, ctx);
}

void impl::abi_to_variant::add_block_header_finalizer_set_extension( mutable_variant_object& mvo, const flat_multimap<uint16_t, block_header_extension>& header_exts ) {
if (header_exts.count(hs_finalizer_set_extension::extension_id())) {
const auto& finalizer_set_extension =
std::get<hs_finalizer_set_extension>(header_exts.lower_bound(hs_finalizer_set_extension::extension_id())->second);
mvo("proposed_finalizer_set", finalizer_set_extension);
void impl::abi_to_variant::add_block_header_finalizer_policy_extension( mutable_variant_object& mvo, const flat_multimap<uint16_t, block_header_extension>& header_exts ) {
if (header_exts.count(finalizer_policy_extension::extension_id())) {
const auto& finalizer_policy =
std::get<finalizer_policy_extension>(header_exts.lower_bound(finalizer_policy_extension::extension_id())->second);
mvo("proposed_finalizer_policy", finalizer_policy);
}
}

Expand Down
2 changes: 1 addition & 1 deletion libraries/chain/block_header.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include <eosio/chain/block.hpp>
#include <eosio/chain/finalizer_authority.hpp>
#include <eosio/chain/hotstuff/finalizer_authority.hpp>
#include <eosio/chain/merkle.hpp>
#include <fc/io/raw.hpp>
#include <fc/bitutil.hpp>
Expand Down
4 changes: 2 additions & 2 deletions libraries/chain/block_header_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace eosio { namespace chain {

#warning Add last_proposed_finalizer_set_generation to snapshot_block_header_state_v3, see header file TODO
#warning Add last_proposed_finalizer_policy_generation to snapshot_block_header_state_v3, see header file TODO

namespace detail {
bool is_builtin_activated( const protocol_feature_activation_set_ptr& pfa,
Expand Down Expand Up @@ -115,7 +115,7 @@ namespace eosio { namespace chain {

result.valid_block_signing_authority = proauth.authority;
result.producer = proauth.producer_name;
result.last_proposed_finalizer_set_generation = last_proposed_finalizer_set_generation;
result.last_proposed_finalizer_policy_generation = last_proposed_finalizer_policy_generation;

result.blockroot_merkle = blockroot_merkle;
result.blockroot_merkle.append( id );
Expand Down
26 changes: 13 additions & 13 deletions libraries/chain/controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
#include <eosio/chain/thread_utils.hpp>
#include <eosio/chain/platform_timer.hpp>
#include <eosio/chain/deep_mind.hpp>
#include <eosio/chain/finalizer_set.hpp>
#include <eosio/chain/finalizer_authority.hpp>
#include <eosio/chain/hotstuff/finalizer_policy.hpp>
#include <eosio/chain/hotstuff/finalizer_authority.hpp>
#include <eosio/chain/hotstuff/hotstuff.hpp>
#include <eosio/chain/hotstuff/chain_pacemaker.hpp>

Expand Down Expand Up @@ -1915,15 +1915,15 @@ struct controller_impl {

block_ptr->transactions = std::move( bb._pending_trx_receipts );

if (bb._pending_block_header_state.proposed_finalizer_set) {
// proposed_finalizer_set can't be set until builtin_protocol_feature_t::instant_finality activated
finalizer_set& fin_set = *bb._pending_block_header_state.proposed_finalizer_set;
++bb._pending_block_header_state.last_proposed_finalizer_set_generation;
fin_set.generation = bb._pending_block_header_state.last_proposed_finalizer_set_generation;
if (bb._pending_block_header_state.proposed_finalizer_policy) {
// proposed_finalizer_policy can't be set until builtin_protocol_feature_t::instant_finality activated
finalizer_policy& fin_pol = *bb._pending_block_header_state.proposed_finalizer_policy;
++bb._pending_block_header_state.last_proposed_finalizer_policy_generation;
fin_pol.generation = bb._pending_block_header_state.last_proposed_finalizer_policy_generation;
emplace_extension(
block_ptr->header_extensions,
hs_finalizer_set_extension::extension_id(),
fc::raw::pack( hs_finalizer_set_extension{ std::move(fin_set) } )
finalizer_policy_extension::extension_id(),
fc::raw::pack( finalizer_policy_extension{ std::move(fin_pol) } )
);
}

Expand Down Expand Up @@ -2001,11 +2001,11 @@ struct controller_impl {
pending->push();
}

void set_proposed_finalizers(const finalizer_set& fin_set) {
void set_proposed_finalizers(const finalizer_policy& fin_pol) {
assert(pending); // has to exist and be building_block since called from host function
auto& bb = std::get<building_block>(pending->_block_stage);

bb._pending_block_header_state.proposed_finalizer_set.emplace(fin_set);
bb._pending_block_header_state.proposed_finalizer_policy.emplace(fin_pol);
}

/**
Expand Down Expand Up @@ -3339,8 +3339,8 @@ void controller::register_pacemaker_warn_function(std::function<void(uint32_t, h
my->pacemaker->register_warn_function(std::move(warn_hs_message));
}

void controller::set_proposed_finalizers( const finalizer_set& fin_set ) {
my->set_proposed_finalizers(fin_set);
void controller::set_proposed_finalizers( const finalizer_policy& fin_pol ) {
my->set_proposed_finalizers(fin_pol);
}

void controller::get_finalizer_state( finalizer_state& fs ) const {
Expand Down
21 changes: 0 additions & 21 deletions libraries/chain/finalizer_set.cpp

This file was deleted.

12 changes: 6 additions & 6 deletions libraries/chain/hotstuff/chain_pacemaker.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include <eosio/chain/hotstuff/chain_pacemaker.hpp>
#include <eosio/chain/finalizer_authority.hpp>
#include <eosio/chain/hotstuff/finalizer_authority.hpp>
#include <iostream>

// comment this out to remove the core profiler
Expand Down Expand Up @@ -165,15 +165,15 @@ namespace eosio::chain {
// called from main thread
void chain_pacemaker::on_irreversible_block( const block_state_ptr& blk ) {
if (!blk->block->header_extensions.empty()) {
std::optional<block_header_extension> ext = blk->block->extract_header_extension(hs_finalizer_set_extension::extension_id());
std::optional<block_header_extension> ext = blk->block->extract_header_extension(finalizer_policy_extension::extension_id());
if (ext) {
std::scoped_lock g( _chain_state_mutex );
if (_active_finalizer_set.generation == 0) {
if (_active_finalizer_policy.generation == 0) {
// switching from dpos to hotstuff, all nodes will switch at same block height
// block header extension is set in finalize_block to value set by host function set_finalizers
_chain->set_hs_irreversible_block_num(blk->block_num); // can be any value <= dpos lib
}
_active_finalizer_set = std::move(std::get<hs_finalizer_set_extension>(*ext));
_active_finalizer_policy = std::move(std::get<finalizer_policy_extension>(*ext));
}
}
}
Expand All @@ -198,8 +198,8 @@ namespace eosio::chain {
return p_auth.producer_name;
}

const finalizer_set& chain_pacemaker::get_finalizer_set() {
return _active_finalizer_set;
const finalizer_policy& chain_pacemaker::get_finalizer_policy() {
return _active_finalizer_policy;
}

block_id_type chain_pacemaker::get_current_block_id() {
Expand Down
21 changes: 21 additions & 0 deletions libraries/chain/hotstuff/finalizer_policy.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#include <eosio/chain/hotstuff/finalizer_policy.hpp>
#include <eosio/chain/hotstuff/finalizer_authority.hpp>
#include <fc/crypto/bls_public_key.hpp>

namespace eosio::chain {

/**
* These definitions are all here to avoid including bls_public_key.hpp which includes <bls12-381/bls12-381.hpp>
* and pulls in bls12-381 types. This keeps bls12-381 out of libtester.
*/

finalizer_policy::finalizer_policy() = default;
finalizer_policy::~finalizer_policy() = default;

finalizer_policy::finalizer_policy(const finalizer_policy&) = default;
finalizer_policy::finalizer_policy(finalizer_policy&&) noexcept = default;

finalizer_policy& finalizer_policy::operator=(const finalizer_policy&) = default;
finalizer_policy& finalizer_policy::operator=(finalizer_policy&&) noexcept = default;

} /// eosio::chain
16 changes: 8 additions & 8 deletions libraries/chain/hotstuff/qc_chain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ namespace eosio::chain {
return finalizers.count(); // the number of bits in this bitset that are set.
}

hs_bitset qc_chain::update_bitset(const hs_bitset& finalizer_set, const bls_public_key& finalizer_key ) {
hs_bitset qc_chain::update_bitset(const hs_bitset& finalizer_policy, const bls_public_key& finalizer_key ) {

hs_bitset b(finalizer_set );
hs_bitset b(finalizer_policy );

const auto& finalizers = _pacemaker->get_finalizer_set().finalizers;
const auto& finalizers = _pacemaker->get_finalizer_policy().finalizers;

for (size_t i = 0; i < finalizers.size();i++) {
if (finalizers[i].public_key == finalizer_key) {
Expand Down Expand Up @@ -126,7 +126,7 @@ namespace eosio::chain {

void qc_chain::reset_qc(const hs_proposal_message& proposal) {
fc_tlog(_logger, " === ${id} resetting qc : ${proposal_id}", ("proposal_id" , proposal.proposal_id)("id", _id));
const auto& finalizers = _pacemaker->get_finalizer_set().finalizers;
const auto& finalizers = _pacemaker->get_finalizer_policy().finalizers;
_current_qc.reset(proposal.proposal_id, proposal.get_proposal_digest(), finalizers.size(), _pacemaker->get_quorum_threshold());
}

Expand Down Expand Up @@ -165,7 +165,7 @@ namespace eosio::chain {
}

bool qc_chain::am_i_finalizer() {
const auto& finalizers = _pacemaker->get_finalizer_set().finalizers;
const auto& finalizers = _pacemaker->get_finalizer_policy().finalizers;
return !_my_finalizer_keys.empty() &&
std::any_of(finalizers.begin(), finalizers.end(), [&](const auto& fa) { return _my_finalizer_keys.contains(fa.public_key); });
}
Expand Down Expand Up @@ -256,7 +256,7 @@ namespace eosio::chain {

if (signature_required && !_my_finalizer_keys.empty()){
//iterate over all my finalizer keys and sign / broadcast for each that is in the schedule
const auto& finalizers = _pacemaker->get_finalizer_set().finalizers;
const auto& finalizers = _pacemaker->get_finalizer_policy().finalizers;

for (const auto& i : finalizers) {
auto mfk_itr = _my_finalizer_keys.find(i.public_key);
Expand Down Expand Up @@ -355,7 +355,7 @@ namespace eosio::chain {

// If quorum is already met, we don't need to do anything else. Otherwise, we aggregate the signature.
if (!quorum_met) {
const auto& finalizers = _pacemaker->get_finalizer_set().finalizers;
const auto& finalizers = _pacemaker->get_finalizer_policy().finalizers;
digest_type digest = p->get_proposal_digest();
for (size_t i=0; i<finalizers.size(); ++i) {
if (finalizers[i].public_key == vote.finalizer_key) {
Expand Down Expand Up @@ -729,7 +729,7 @@ namespace eosio::chain {
//fc_tlog(_logger, " === update_high_qc : proposal.justify ===");
const hs_proposal_message* justify = get_proposal(proposal.justify.proposal_id);
digest_type digest = justify->get_proposal_digest();
const auto& finalizers = _pacemaker->get_finalizer_set().finalizers;
const auto& finalizers = _pacemaker->get_finalizer_policy().finalizers;
update_high_qc(valid_quorum_certificate(justify->proposal_id,
std::vector<uint8_t>(digest.data(), digest.data() + 32),
proposal.justify.strong_votes,
Expand Down
Loading

0 comments on commit bb30c14

Please sign in to comment.