From 163336289d3580558de3afdc78e3bca4f9f2599a Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Wed, 1 May 2024 11:45:40 -0400 Subject: [PATCH 1/4] add get_blocks v1 (for fetch_finality_data) --- include/eosio/ship_protocol.hpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/eosio/ship_protocol.hpp b/include/eosio/ship_protocol.hpp index 2891627..d5214f0 100644 --- a/include/eosio/ship_protocol.hpp +++ b/include/eosio/ship_protocol.hpp @@ -114,13 +114,19 @@ namespace eosio { namespace ship_protocol { EOSIO_REFLECT(get_blocks_request_v0, start_block_num, end_block_num, max_messages_in_flight, have_positions, irreversible_only, fetch_block, fetch_traces, fetch_deltas) + struct get_blocks_request_v1 : get_blocks_request_v0 { + bool fetch_finality_data = {}; + }; + + EOSIO_REFLECT(get_blocks_request_v1, base get_blocks_request_v1, fetch_finality_data) + struct get_blocks_ack_request_v0 { uint32_t num_messages = {}; }; EOSIO_REFLECT(get_blocks_ack_request_v0, num_messages) - using request = std::variant; + using request = std::variant; struct get_blocks_result_base { block_position head = {}; @@ -139,6 +145,12 @@ namespace eosio { namespace ship_protocol { EOSIO_REFLECT(get_blocks_result_v0, base get_blocks_result_base, block, traces, deltas) + struct get_blocks_result_v1 : get_blocks_result_v0 { + std::optional finality_data = {}; + }; + + EOSIO_REFLECT(get_blocks_result_v1, base get_blocks_result_v0, finality_data) + struct row_v0 { bool present = {}; // false (not present), true (present, old / new) eosio::input_stream data = {}; @@ -362,7 +374,7 @@ namespace eosio { namespace ship_protocol { EOSIO_REFLECT(signed_block, base signed_block_header, transactions, block_extensions) - using result = std::variant; + using result = std::variant; struct transaction_header { eosio::time_point_sec expiration = {}; From 24b7345eec0e3cfd45daca6d3e8c45dad9c6b6e2 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Mon, 3 Jun 2024 22:52:25 -0400 Subject: [PATCH 2/4] add finality_data too --- include/eosio/ship_protocol.hpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/eosio/ship_protocol.hpp b/include/eosio/ship_protocol.hpp index d5214f0..dd50ad9 100644 --- a/include/eosio/ship_protocol.hpp +++ b/include/eosio/ship_protocol.hpp @@ -808,6 +808,17 @@ namespace eosio { namespace ship_protocol { using resource_limits_config = std::variant; + struct finality_data { + uint32_t major_version = {}; + uint32_t minor_version = {}; + uint32_t active_finalizer_policy_generation = {}; + eosio::checksum256 action_mroot = {}; + eosio::checksum256 base_digest = {}; + }; + + EOSIO_REFLECT(finality_data, major_version, minor_version, active_finalizer_policy_generation, + action_mroot, base_digest) + }} // namespace eosio::ship_protocol namespace eosio { From 4aa297f22f7a5e4d3f3b316c1e98e17c67f68a55 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Wed, 5 Jun 2024 23:13:38 -0400 Subject: [PATCH 3/4] clean up my sloppy whitespace --- include/eosio/ship_protocol.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/eosio/ship_protocol.hpp b/include/eosio/ship_protocol.hpp index dd50ad9..a1bd7f4 100644 --- a/include/eosio/ship_protocol.hpp +++ b/include/eosio/ship_protocol.hpp @@ -809,11 +809,11 @@ namespace eosio { namespace ship_protocol { using resource_limits_config = std::variant; struct finality_data { - uint32_t major_version = {}; - uint32_t minor_version = {}; + uint32_t major_version = {}; + uint32_t minor_version = {}; uint32_t active_finalizer_policy_generation = {}; - eosio::checksum256 action_mroot = {}; - eosio::checksum256 base_digest = {}; + eosio::checksum256 action_mroot = {}; + eosio::checksum256 base_digest = {}; }; EOSIO_REFLECT(finality_data, major_version, minor_version, active_finalizer_policy_generation, From 384c59b30f2b54f3e61239c6e0b47f12b1cfdf14 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Wed, 12 Jun 2024 12:21:36 -0400 Subject: [PATCH 4/4] fill out finality_data further --- include/eosio/ship_protocol.hpp | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/include/eosio/ship_protocol.hpp b/include/eosio/ship_protocol.hpp index a1bd7f4..e9d75e5 100644 --- a/include/eosio/ship_protocol.hpp +++ b/include/eosio/ship_protocol.hpp @@ -808,16 +808,34 @@ namespace eosio { namespace ship_protocol { using resource_limits_config = std::variant; + struct finalizer_authority { + std::string description = {}; + uint64_t weight = {}; + eosio::input_stream public_key = {}; + }; + + EOSIO_REFLECT(finalizer_authority, description, weight, public_key) + + struct finalizer_policy { + uint32_t generation = {}; + uint64_t threshold = {}; + std::vector finalizers = {}; + }; + + EOSIO_REFLECT(finalizer_policy, generation, threshold, finalizers) + struct finality_data { - uint32_t major_version = {}; - uint32_t minor_version = {}; - uint32_t active_finalizer_policy_generation = {}; - eosio::checksum256 action_mroot = {}; - eosio::checksum256 base_digest = {}; + uint32_t major_version = {}; + uint32_t minor_version = {}; + uint32_t active_finalizer_policy_generation = {}; + uint32_t final_on_strong_qc_block_num = {}; + eosio::checksum256 action_mroot = {}; + eosio::checksum256 base_digest = {}; + std::optional proposed_finalizer_policy = {}; }; EOSIO_REFLECT(finality_data, major_version, minor_version, active_finalizer_policy_generation, - action_mroot, base_digest) + final_on_strong_qc_block_num, action_mroot, base_digest, proposed_finalizer_policy) }} // namespace eosio::ship_protocol