mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Merge branch 'testnet' into block-generation
# Conflicts: # adnl/adnl-query.cpp # crypto/block/block.tlb # crypto/block/mc-config.h # lite-client/lite-client.cpp # overlay/overlay-manager.h # overlay/overlay-peers.cpp # overlay/overlay.cpp # overlay/overlay.h # overlay/overlay.hpp # overlay/overlays.h # rldp-http-proxy/DNSResolver.cpp # rldp-http-proxy/rldp-http-proxy.cpp # tl/generate/scheme/ton_api.tl # tl/generate/scheme/ton_api.tlo # tl/generate/scheme/tonlib_api.tlo # ton/ton-types.h # tonlib/tonlib/ExtClient.cpp # tonlib/tonlib/ExtClient.h # tonlib/tonlib/ExtClientLazy.cpp # tonlib/tonlib/ExtClientOutbound.h # tonlib/tonlib/ExtClientRaw.h # tonlib/tonlib/TonlibClient.cpp # tonlib/tonlib/TonlibClient.h # tonlib/tonlib/tonlib-cli.cpp # validator/impl/collator.cpp # validator/impl/validate-query.cpp # validator/impl/validate-query.hpp # validator/manager.cpp # validator/state-serializer.cpp # validator/state-serializer.hpp # validator/validator-group.cpp # validator/validator-group.hpp # validator/validator.h
This commit is contained in:
commit
d652f7d706
200 changed files with 13492 additions and 2997 deletions
|
@ -376,12 +376,16 @@ void ValidatorManagerImpl::new_external_message(td::BufferSlice data) {
|
|||
if (!is_collator()) {
|
||||
return;
|
||||
}
|
||||
if (last_masterchain_state_.is_null()) {
|
||||
VLOG(VALIDATOR_NOTICE) << "dropping ext message: validator is not ready";
|
||||
return;
|
||||
}
|
||||
if ((double)ext_messages_.size() > max_mempool_num()) {
|
||||
return;
|
||||
}
|
||||
auto R = create_ext_message(std::move(data));
|
||||
auto R = create_ext_message(std::move(data), last_masterchain_state_->get_ext_msg_limits());
|
||||
if (R.is_error()) {
|
||||
VLOG(VALIDATOR_NOTICE) << "dropping bad external message: " << R.move_as_error();
|
||||
VLOG(VALIDATOR_NOTICE) << "dropping bad ext message: " << R.move_as_error();
|
||||
return;
|
||||
}
|
||||
add_external_message(R.move_as_ok());
|
||||
|
@ -400,8 +404,14 @@ void ValidatorManagerImpl::add_external_message(td::Ref<ExtMessage> msg) {
|
|||
}
|
||||
}
|
||||
}
|
||||
void ValidatorManagerImpl::check_external_message(td::BufferSlice data, td::Promise<td::Unit> promise) {
|
||||
run_check_external_message(std::move(data), actor_id(this), std::move(promise));
|
||||
void ValidatorManagerImpl::check_external_message(td::BufferSlice data, td::Promise<td::Ref<ExtMessage>> promise) {
|
||||
auto state = do_get_last_liteserver_state();
|
||||
if (state.is_null()) {
|
||||
promise.set_error(td::Status::Error(ErrorCode::notready, "not ready"));
|
||||
return;
|
||||
}
|
||||
run_check_external_message(std::move(data), state->get_ext_msg_limits(), actor_id(this),
|
||||
std::move(promise));
|
||||
}
|
||||
|
||||
void ValidatorManagerImpl::new_ihr_message(td::BufferSlice data) {
|
||||
|
@ -1397,6 +1407,16 @@ void ValidatorManagerImpl::get_top_masterchain_state(td::Promise<td::Ref<Masterc
|
|||
}
|
||||
}
|
||||
|
||||
td::Ref<MasterchainState> ValidatorManagerImpl::do_get_last_liteserver_state() {
|
||||
if (last_masterchain_state_.is_null()) {
|
||||
return {};
|
||||
}
|
||||
if (last_liteserver_state_.is_null() || last_liteserver_state_->get_unix_time() < td::Clocks::system() - 30) {
|
||||
last_liteserver_state_ = last_masterchain_state_;
|
||||
}
|
||||
return last_liteserver_state_;
|
||||
}
|
||||
|
||||
void ValidatorManagerImpl::get_top_masterchain_block(td::Promise<BlockIdExt> promise) {
|
||||
if (!last_masterchain_block_id_.is_valid()) {
|
||||
promise.set_error(td::Status::Error(ton::ErrorCode::notready, "not started"));
|
||||
|
@ -1415,6 +1435,16 @@ void ValidatorManagerImpl::get_top_masterchain_state_block(
|
|||
}
|
||||
}
|
||||
|
||||
void ValidatorManagerImpl::get_last_liteserver_state_block(
|
||||
td::Promise<std::pair<td::Ref<MasterchainState>, BlockIdExt>> promise) {
|
||||
auto state = do_get_last_liteserver_state();
|
||||
if (state.is_null()) {
|
||||
promise.set_error(td::Status::Error(ton::ErrorCode::notready, "not started"));
|
||||
} else {
|
||||
promise.set_result(std::pair<td::Ref<MasterchainState>, BlockIdExt>{state, state->get_block_id()});
|
||||
}
|
||||
}
|
||||
|
||||
void ValidatorManagerImpl::send_get_block_request(BlockIdExt id, td::uint32 priority,
|
||||
td::Promise<ReceivedBlock> promise) {
|
||||
callback_->download_block(id, priority, td::Timestamp::in(10.0), std::move(promise));
|
||||
|
@ -2369,9 +2399,13 @@ void ValidatorManagerImpl::advance_gc(BlockHandle handle, td::Ref<MasterchainSta
|
|||
try_advance_gc_masterchain_block();
|
||||
}
|
||||
|
||||
void ValidatorManagerImpl::update_shard_client_block_handle(BlockHandle handle, td::Promise<td::Unit> promise) {
|
||||
void ValidatorManagerImpl::update_shard_client_block_handle(BlockHandle handle, td::Ref<MasterchainState> state,
|
||||
td::Promise<td::Unit> promise) {
|
||||
shard_client_handle_ = std::move(handle);
|
||||
auto seqno = shard_client_handle_->id().seqno();
|
||||
if (last_liteserver_state_.is_null() || last_liteserver_state_->get_block_id().seqno() < seqno) {
|
||||
last_liteserver_state_ = std::move(state);
|
||||
}
|
||||
shard_client_update(seqno);
|
||||
promise.set_value(td::Unit());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue