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

Rename instant_finality_extension to finality_extension #364

Merged
merged 2 commits into from
Jul 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 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/finality/instant_finality_extension.hpp>
#include <eosio/chain/finality/finality_extension.hpp>
#include <fc/io/raw.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <fc/io/varint.hpp>
Expand Down Expand Up @@ -634,11 +634,10 @@ namespace eosio { namespace chain {
_variant_to_binary(type, var, ds, ctx);
}

void impl::abi_to_variant::add_block_header_instant_finality_extension( mutable_variant_object& mvo, const header_extension_multimap& header_exts ) {
if (header_exts.count(instant_finality_extension::extension_id())) {
const auto& if_extension =
std::get<instant_finality_extension>(header_exts.lower_bound(instant_finality_extension::extension_id())->second);
mvo("instant_finality_extension", if_extension);
void impl::abi_to_variant::add_block_header_finality_extension( mutable_variant_object& mvo, const header_extension_multimap& header_exts ) {
if (header_exts.count(finality_extension::extension_id())) {
const auto& f_ext = std::get<finality_extension>(header_exts.lower_bound(finality_extension::extension_id())->second);
mvo("finality_extension", f_ext);
}
}

Expand Down
42 changes: 21 additions & 21 deletions libraries/chain/block_header_state.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include <eosio/chain/block_header_state.hpp>
#include <eosio/chain/block_header_state_utils.hpp>
#include <eosio/chain/finality/instant_finality_extension.hpp>
#include <eosio/chain/finality/finality_extension.hpp>
#include <eosio/chain/finality/proposer_policy.hpp>
#include <eosio/chain/exceptions.hpp>
#include <limits>
Expand Down Expand Up @@ -174,7 +174,7 @@ void evaluate_finalizer_policies_for_promotion(const block_header_state& prev,

// -------------------------------------------------------------------------------------------------
// `finish_next` updates the next `block_header_state` according to the contents of the
// header extensions (either new protocol_features or instant_finality_extension) applicable to this
// header extensions (either new protocol_features or finality_extension) applicable to this
// next block .
//
// These extensions either result from the execution of the previous block (in case this node
Expand All @@ -183,7 +183,7 @@ void evaluate_finalizer_policies_for_promotion(const block_header_state& prev,
void finish_next(const block_header_state& prev,
block_header_state& next_header_state,
vector<digest_type> new_protocol_feature_activations,
instant_finality_extension if_ext,
finality_extension f_ext,
bool log) { // only log on assembled blocks, to avoid double logging
// activated protocol features
// ---------------------------
Expand All @@ -210,8 +210,8 @@ void finish_next(const block_header_state& prev,
}

std::optional<proposer_policy> new_proposer_policy;
if (if_ext.new_proposer_policy_diff) {
new_proposer_policy = prev.get_last_proposed_proposer_policy().apply_diff(*if_ext.new_proposer_policy_diff);
if (f_ext.new_proposer_policy_diff) {
new_proposer_policy = prev.get_last_proposed_proposer_policy().apply_diff(*f_ext.new_proposer_policy_diff);
}
if (new_proposer_policy) {
// called when assembling the block
Expand All @@ -226,7 +226,7 @@ void finish_next(const block_header_state& prev,
.timestamp = prev.timestamp(),
.finalizer_policy_generation = prev.active_finalizer_policy->generation
};
next_header_state.core = prev.core.next(parent_block, if_ext.qc_claim);
next_header_state.core = prev.core.next(parent_block, f_ext.qc_claim);

// finalizer policy
// ----------------
Expand All @@ -236,8 +236,8 @@ void finish_next(const block_header_state& prev,

next_header_state.last_pending_finalizer_policy_digest = fc::sha256::hash(next_header_state.get_last_pending_finalizer_policy());

if (if_ext.new_finalizer_policy_diff) {
finalizer_policy new_finalizer_policy = prev.get_last_proposed_finalizer_policy().apply_diff(*if_ext.new_finalizer_policy_diff);
if (f_ext.new_finalizer_policy_diff) {
finalizer_policy new_finalizer_policy = prev.get_last_proposed_finalizer_policy().apply_diff(*f_ext.new_finalizer_policy_diff);

// a new `finalizer_policy` was proposed in the previous block, and is present in the previous
// block's header extensions.
Expand Down Expand Up @@ -296,13 +296,13 @@ block_header_state block_header_state::next(block_header_state_input& input) con
if (input.new_proposer_policy) {
new_proposer_policy_diff = get_last_proposed_proposer_policy().create_diff(*input.new_proposer_policy);
}
instant_finality_extension new_if_ext { input.most_recent_ancestor_with_qc,
std::move(new_finalizer_policy_diff),
std::move(new_proposer_policy_diff) };
finality_extension new_f_ext { input.most_recent_ancestor_with_qc,
std::move(new_finalizer_policy_diff),
std::move(new_proposer_policy_diff) };

uint16_t if_ext_id = instant_finality_extension::extension_id();
emplace_extension(next_header_state.header.header_extensions, if_ext_id, fc::raw::pack(new_if_ext));
next_header_state.header_exts.emplace(if_ext_id, new_if_ext);
uint16_t f_ext_id = finality_extension::extension_id();
emplace_extension(next_header_state.header.header_extensions, f_ext_id, fc::raw::pack(new_f_ext));
next_header_state.header_exts.emplace(f_ext_id, new_f_ext);

// add protocol_feature_activation extension
// -----------------------------------------
Expand All @@ -314,7 +314,7 @@ block_header_state block_header_state::next(block_header_state_input& input) con
next_header_state.header_exts.emplace(ext_id, std::move(pfa_ext));
}

finish_next(*this, next_header_state, std::move(input.new_protocol_feature_activations), std::move(new_if_ext), true);
finish_next(*this, next_header_state, std::move(input.new_protocol_feature_activations), std::move(new_f_ext), true);

return next_header_state;
}
Expand Down Expand Up @@ -351,17 +351,17 @@ block_header_state block_header_state::next(const signed_block_header& h, valida
validator( timestamp(), activated_protocol_features->protocol_features, new_protocol_feature_activations );
}

// retrieve instant_finality_extension data from block header extension
// retrieve finality_extension data from block header extension
// --------------------------------------------------------------------
EOS_ASSERT(exts.count(instant_finality_extension::extension_id()) > 0, invalid_block_header_extension,
EOS_ASSERT(exts.count(finality_extension::extension_id()) > 0, invalid_block_header_extension,
"Instant Finality Extension is expected to be present in all block headers after switch to IF");
auto if_entry = exts.lower_bound(instant_finality_extension::extension_id());
const auto& if_ext = std::get<instant_finality_extension>(if_entry->second);
auto f_entry = exts.lower_bound(finality_extension::extension_id());
const auto& f_ext = std::get<finality_extension>(f_entry->second);

if (h.is_proper_svnn_block()) {
// if there is no Finality Tree Root associated with the block,
// then this needs to validate that h.action_mroot is the empty digest
auto next_core_metadata = core.next_metadata(if_ext.qc_claim);
auto next_core_metadata = core.next_metadata(f_ext.qc_claim);
bool no_finality_tree_associated = core.is_genesis_block_num(next_core_metadata.final_on_strong_qc_block_num);

EOS_ASSERT(no_finality_tree_associated == h.action_mroot.empty(), block_validate_exception,
Expand All @@ -371,7 +371,7 @@ block_header_state block_header_state::next(const signed_block_header& h, valida
("f", next_core_metadata.final_on_strong_qc_block_num));
};

finish_next(*this, next_header_state, std::move(new_protocol_feature_activations), if_ext, false);
finish_next(*this, next_header_state, std::move(new_protocol_feature_activations), f_ext, false);

return next_header_state;
}
Expand Down
15 changes: 7 additions & 8 deletions libraries/chain/block_header_state_legacy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,11 +156,10 @@ namespace eosio::chain {
result.producer_to_last_implied_irb[proauth.producer_name] = dpos_proposed_irreversible_blocknum;
}

if (header_exts.count(instant_finality_extension::extension_id())) { // transition to savanna has started
const auto& if_extension =
std::get<instant_finality_extension>(header_exts.lower_bound(instant_finality_extension::extension_id())->second);
if (header_exts.count(finality_extension::extension_id())) { // transition to savanna has started
const auto& f_ext = std::get<finality_extension>(header_exts.lower_bound(finality_extension::extension_id())->second);
// copy over qc_claim from IF Genesis Block
result.qc_claim = if_extension.qc_claim;
result.qc_claim = f_ext.qc_claim;
}

return result;
Expand Down Expand Up @@ -222,11 +221,11 @@ namespace eosio::chain {
.is_strong_qc = false };
finalizer_policy no_policy;
auto new_fin_policy_diff = no_policy.create_diff(*new_finalizer_policy);
emplace_extension(h.header_extensions, instant_finality_extension::extension_id(),
fc::raw::pack(instant_finality_extension{ initial_if_claim, std::move(new_fin_policy_diff), {} }));
emplace_extension(h.header_extensions, finality_extension::extension_id(),
fc::raw::pack(finality_extension{ initial_if_claim, std::move(new_fin_policy_diff), {} }));
} else if (qc_claim) {
emplace_extension(h.header_extensions, instant_finality_extension::extension_id(),
fc::raw::pack(instant_finality_extension{ *qc_claim, {}, {} }));
emplace_extension(h.header_extensions, finality_extension::extension_id(),
fc::raw::pack(finality_extension{ *qc_claim, {}, {} }));
}

return h;
Expand Down
14 changes: 7 additions & 7 deletions libraries/chain/block_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,10 @@ block_state_ptr block_state::create_if_genesis_block(const block_state_legacy& b
result.header = bsp.header;
result.activated_protocol_features = bsp.activated_protocol_features;

assert(bsp.block->contains_header_extension(instant_finality_extension::extension_id())); // required by transition mechanism
instant_finality_extension if_ext = bsp.block->extract_header_extension<instant_finality_extension>();
assert(if_ext.new_finalizer_policy_diff); // required by transition mechanism
result.active_finalizer_policy = std::make_shared<finalizer_policy>(finalizer_policy{}.apply_diff(std::move(*if_ext.new_finalizer_policy_diff)));
assert(bsp.block->contains_header_extension(finality_extension::extension_id())); // required by transition mechanism
finality_extension f_ext = bsp.block->extract_header_extension<finality_extension>();
assert(f_ext.new_finalizer_policy_diff); // required by transition mechanism
result.active_finalizer_policy = std::make_shared<finalizer_policy>(finalizer_policy{}.apply_diff(std::move(*f_ext.new_finalizer_policy_diff)));

block_ref genesis_block_ref {
.block_id = bsp.id(),
Expand Down Expand Up @@ -299,11 +299,11 @@ void block_state::verify_qc(const valid_quorum_certificate& qc) const {
}

qc_claim_t block_state::extract_qc_claim() const {
auto itr = header_exts.lower_bound(instant_finality_extension::extension_id());
auto itr = header_exts.lower_bound(finality_extension::extension_id());
if (itr == header_exts.end())
return {};
const auto& if_ext = std::get<instant_finality_extension>(itr->second);
return if_ext.qc_claim;
const auto& f_ext = std::get<finality_extension>(itr->second);
return f_ext.qc_claim;
}

valid_t block_state::new_valid(const block_header_state& next_bhs, const digest_type& action_mroot, const digest_type& strong_digest) const {
Expand Down
Loading