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

Send block broadcasts directly to collators

This commit is contained in:
SpyCheese 2022-09-27 16:33:27 +03:00
parent b0c2c6c525
commit 699a56b951
20 changed files with 143 additions and 26 deletions

View file

@ -205,6 +205,33 @@ void FullNodeImpl::update_shard_configuration(td::Ref<MasterchainState> state, s
++it;
}
}
if (!collators_inited_ || state->is_key_state()) {
update_collators(state);
}
}
void FullNodeImpl::update_collators(td::Ref<MasterchainState> state) {
collators_inited_ = true;
collator_config_ = state->get_collator_config(true);
for (auto& s : shards_) {
update_shard_collators(s.first, s.second);
}
}
void FullNodeImpl::update_shard_collators(ShardIdFull shard, ShardInfo& info) {
if (info.actor.empty()) {
return;
}
std::vector<adnl::AdnlNodeIdShort> nodes;
for (const block::CollatorNodeDescr& desc : collator_config_.collator_nodes) {
if (!desc.full_node_id.is_zero() && shard_intersects(shard, desc.shard)) {
nodes.emplace_back(desc.full_node_id);
}
}
std::sort(nodes.begin(), nodes.end());
nodes.erase(std::unique(nodes.begin(), nodes.end()), nodes.end());
td::actor::send_closure(info.actor, &FullNodeShard::update_collators, std::move(nodes));
}
void FullNodeImpl::add_shard_actor(ShardIdFull shard, FullNodeShardMode mode) {
@ -219,6 +246,9 @@ void FullNodeImpl::add_shard_actor(ShardIdFull shard, FullNodeShardMode mode) {
if (all_validators_.size() > 0) {
td::actor::send_closure(info.actor, &FullNodeShard::update_validators, all_validators_, sign_cert_by_);
}
if (collators_inited_) {
update_shard_collators(shard, info);
}
}
void FullNodeImpl::sync_completed() {