mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Accelerator, part 1 (#1119)
This commit contains some parts of https://github.com/ton-blockchain/ton/tree/accelerator This is auxiliary code that mostly does not change node behavior. 1) Semiprivate overlays and other improvements in overlays code 2) Rename actual_min_split -> monitor_min_split, fix building shard overlays 3) Loading block candidates by block id from DB, fix accept_block after validator restart 4) Cells: ProofStorageStat and changes in CellUsageTree 5) Remove some unused code, other minor changes
This commit is contained in:
parent
9a10f79fba
commit
908415d00b
66 changed files with 2221 additions and 638 deletions
|
@ -177,21 +177,21 @@ void RootDb::get_block_proof_link(ConstBlockHandle handle, td::Promise<td::Ref<P
|
|||
}
|
||||
|
||||
void RootDb::store_block_candidate(BlockCandidate candidate, td::Promise<td::Unit> promise) {
|
||||
auto source = PublicKey{pubkeys::Ed25519{candidate.pubkey.as_bits256()}};
|
||||
auto obj = create_serialize_tl_object<ton_api::db_candidate>(
|
||||
PublicKey{pubkeys::Ed25519{candidate.pubkey.as_bits256()}}.tl(), create_tl_block_id(candidate.id),
|
||||
std::move(candidate.data), std::move(candidate.collated_data));
|
||||
|
||||
auto P = td::PromiseCreator::lambda([promise = std::move(promise)](td::Result<td::Unit> R) mutable {
|
||||
if (R.is_error()) {
|
||||
promise.set_error(R.move_as_error());
|
||||
} else {
|
||||
promise.set_value(td::Unit());
|
||||
}
|
||||
});
|
||||
source.tl(), create_tl_block_id(candidate.id), std::move(candidate.data), std::move(candidate.collated_data));
|
||||
auto P = td::PromiseCreator::lambda(
|
||||
[archive_db = archive_db_.get(), promise = std::move(promise), block_id = candidate.id, source,
|
||||
collated_file_hash = candidate.collated_file_hash](td::Result<td::Unit> R) mutable {
|
||||
TRY_RESULT_PROMISE(promise, _, std::move(R));
|
||||
td::actor::send_closure(archive_db, &ArchiveManager::add_temp_file_short, fileref::CandidateRef{block_id},
|
||||
create_serialize_tl_object<ton_api::db_candidate_id>(
|
||||
source.tl(), create_tl_block_id(block_id), collated_file_hash),
|
||||
std::move(promise));
|
||||
});
|
||||
td::actor::send_closure(archive_db_, &ArchiveManager::add_temp_file_short,
|
||||
fileref::Candidate{PublicKey{pubkeys::Ed25519{candidate.pubkey.as_bits256()}}, candidate.id,
|
||||
candidate.collated_file_hash},
|
||||
std::move(obj), std::move(P));
|
||||
fileref::Candidate{source, candidate.id, candidate.collated_file_hash}, std::move(obj),
|
||||
std::move(P));
|
||||
}
|
||||
|
||||
void RootDb::get_block_candidate(PublicKey source, BlockIdExt id, FileHash collated_data_file_hash,
|
||||
|
@ -215,6 +215,17 @@ void RootDb::get_block_candidate(PublicKey source, BlockIdExt id, FileHash colla
|
|||
fileref::Candidate{source, id, collated_data_file_hash}, std::move(P));
|
||||
}
|
||||
|
||||
void RootDb::get_block_candidate_by_block_id(BlockIdExt id, td::Promise<BlockCandidate> promise) {
|
||||
td::actor::send_closure(
|
||||
archive_db_, &ArchiveManager::get_temp_file_short, fileref::CandidateRef{id},
|
||||
[SelfId = actor_id(this), promise = std::move(promise)](td::Result<td::BufferSlice> R) mutable {
|
||||
TRY_RESULT_PROMISE(promise, data, std::move(R));
|
||||
TRY_RESULT_PROMISE(promise, f, fetch_tl_object<ton_api::db_candidate_id>(data, true));
|
||||
td::actor::send_closure(SelfId, &RootDb::get_block_candidate, PublicKey{f->source_}, create_block_id(f->id_),
|
||||
f->collated_data_file_hash_, std::move(promise));
|
||||
});
|
||||
}
|
||||
|
||||
void RootDb::store_block_state(BlockHandle handle, td::Ref<ShardState> state,
|
||||
td::Promise<td::Ref<ShardState>> promise) {
|
||||
if (handle->moved_to_archive()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue