1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00

Fast-sync overlays

* Semiprivate overlays
* Fast sync overlays in full-node
* Adjust shard overlays
This commit is contained in:
SpyCheese 2024-07-13 15:40:26 +03:00
parent ac3b8d6088
commit 3a8ef60bbb
38 changed files with 2545 additions and 964 deletions

View file

@ -24,7 +24,7 @@
#include "interfaces/proof.h"
#include "interfaces/shard.h"
#include "full-node-private-overlay.hpp"
#include "full-node-private-overlay-v2.hpp"
#include "full-node-fast-sync-overlays.hpp"
#include <map>
#include <set>
@ -47,9 +47,8 @@ class FullNodeImpl : public FullNode {
void add_collator_adnl_id(adnl::AdnlNodeIdShort id) override;
void del_collator_adnl_id(adnl::AdnlNodeIdShort id) override;
void sign_shard_overlay_certificate(ShardIdFull shard_id, PublicKeyHash signed_key,
td::uint32 expiry_at, td::uint32 max_size,
td::Promise<td::BufferSlice> promise) override;
void sign_shard_overlay_certificate(ShardIdFull shard_id, PublicKeyHash signed_key, td::uint32 expiry_at,
td::uint32 max_size, td::Promise<td::BufferSlice> promise) override;
void import_shard_overlay_certificate(ShardIdFull shard_id, PublicKeyHash signed_key,
std::shared_ptr<ton::overlay::Certificate> cert,
td::Promise<td::Unit> promise) override;
@ -60,7 +59,7 @@ class FullNodeImpl : public FullNode {
void add_custom_overlay(CustomOverlayParams params, td::Promise<td::Unit> promise) override;
void del_custom_overlay(std::string name, td::Promise<td::Unit> promise) override;
void update_shard_configuration(td::Ref<MasterchainState> state, std::set<ShardIdFull> shards_to_monitor,
void on_new_masterchain_block(td::Ref<MasterchainState> state, std::set<ShardIdFull> shards_to_monitor,
std::set<ShardIdFull> temporary_shards);
void sync_completed();
@ -95,6 +94,11 @@ class FullNodeImpl : public FullNode {
void process_block_candidate_broadcast(BlockIdExt block_id, CatchainSeqno cc_seqno, td::uint32 validator_set_hash,
td::BufferSlice data) override;
void import_fast_sync_member_certificate(adnl::AdnlNodeIdShort local_id,
overlay::OverlayMemberCertificate cert) override {
fast_sync_overlays_.add_member_certificate(local_id, std::move(cert));
}
void start_up() override;
FullNodeImpl(PublicKeyHash local_id, adnl::AdnlNodeIdShort adnl_id, FileHash zero_state_file_hash,
@ -145,12 +149,13 @@ class FullNodeImpl : public FullNode {
FullNodeConfig config_;
// Private overlays:
// Old overlays - one overlay for all validators
// New overlays (v2) - overlay per shard (monitor_min_split depth).
bool use_old_private_overlays_ = false; // TODO: set from config
// Old overlays - one private overlay for all validators
// New overlays (fast sync overlays) - semiprivate overlay per shard (monitor_min_split depth)
// for validators and authorized nodes
bool use_old_private_overlays_ = false; // TODO: set from config or something
std::map<PublicKeyHash, td::actor::ActorOwn<FullNodePrivateBlockOverlay>> private_block_overlays_;
bool broadcast_block_candidates_in_public_overlay_ = false;
FullNodePrivateBlockOverlaysV2 private_block_overlays_v2_;
FullNodeFastSyncOverlays fast_sync_overlays_;
struct CustomOverlayInfo {
CustomOverlayParams params_;