mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Add getvalidatorsessions query to validator-engine-console
This commit is contained in:
parent
9465fd866a
commit
849d995346
21 changed files with 181 additions and 4 deletions
|
@ -79,6 +79,11 @@ td::uint32 ValidatorSessionDescriptionImpl::get_max_priority() const {
|
|||
return opts_.round_candidates - 1;
|
||||
}
|
||||
|
||||
td::uint32 ValidatorSessionDescriptionImpl::get_node_by_priority(td::uint32 round, td::uint32 priority) const {
|
||||
CHECK(priority <= get_max_priority());
|
||||
return (round + priority) % get_total_nodes();
|
||||
}
|
||||
|
||||
ValidatorSessionCandidateId ValidatorSessionDescriptionImpl::candidate_id(
|
||||
td::uint32 src_idx, ValidatorSessionRootHash root_hash, ValidatorSessionFileHash file_hash,
|
||||
ValidatorSessionCollatedDataFileHash collated_data_file_hash) const {
|
||||
|
|
|
@ -85,6 +85,7 @@ class ValidatorSessionDescription {
|
|||
virtual ValidatorWeight get_total_weight() const = 0;
|
||||
virtual td::int32 get_node_priority(td::uint32 src_idx, td::uint32 round) const = 0;
|
||||
virtual td::uint32 get_max_priority() const = 0;
|
||||
virtual td::uint32 get_node_by_priority(td::uint32 round, td::uint32 priority) const = 0;
|
||||
virtual td::uint32 get_unixtime(td::uint64 t) const = 0;
|
||||
virtual td::uint32 get_attempt_seqno(td::uint64 t) const = 0;
|
||||
virtual td::uint32 get_self_idx() const = 0;
|
||||
|
|
|
@ -101,6 +101,7 @@ class ValidatorSessionDescriptionImpl : public ValidatorSessionDescription {
|
|||
}
|
||||
td::int32 get_node_priority(td::uint32 src_idx, td::uint32 round) const override;
|
||||
td::uint32 get_max_priority() const override;
|
||||
td::uint32 get_node_by_priority(td::uint32 round, td::uint32 priority) const override;
|
||||
td::uint32 get_unixtime(td::uint64 ts) const override {
|
||||
return static_cast<td::uint32>(ts >> 32);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "validator-session.hpp"
|
||||
#include "td/utils/Random.h"
|
||||
#include "td/utils/crypto.h"
|
||||
#include "ton/ton-tl.hpp"
|
||||
|
||||
namespace ton {
|
||||
|
||||
|
@ -937,6 +938,18 @@ void ValidatorSessionImpl::stats_set_candidate_status(td::uint32 round, PublicKe
|
|||
it->block_status = status;
|
||||
}
|
||||
|
||||
void ValidatorSessionImpl::get_session_info(
|
||||
td::Promise<tl_object_ptr<ton_api::engine_validator_validatorSessionInfo>> promise) {
|
||||
std::vector<td::Bits256> next_producers;
|
||||
for (td::uint32 round = cur_round_; round < cur_round_ + 20; ++round) {
|
||||
td::uint32 node = description().get_node_by_priority(round, 0);
|
||||
next_producers.push_back(description().get_source_id(node).bits256_value());
|
||||
}
|
||||
promise.set_result(create_tl_object<ton_api::engine_validator_validatorSessionInfo>(
|
||||
create_tl_block_id_simple(BlockId{}), description().get_source_id(local_idx()).bits256_value(),
|
||||
cur_round_, std::move(next_producers)));
|
||||
}
|
||||
|
||||
td::actor::ActorOwn<ValidatorSession> ValidatorSession::create(
|
||||
catchain::CatChainSessionId session_id, ValidatorSessionOptions opts, PublicKeyHash local_id,
|
||||
std::vector<ValidatorSessionNode> nodes, std::unique_ptr<Callback> callback,
|
||||
|
|
|
@ -92,6 +92,8 @@ class ValidatorSession : public td::actor::Actor {
|
|||
virtual void start() = 0;
|
||||
virtual void destroy() = 0;
|
||||
|
||||
virtual void get_session_info(td::Promise<tl_object_ptr<ton_api::engine_validator_validatorSessionInfo>> promise) = 0;
|
||||
|
||||
static td::actor::ActorOwn<ValidatorSession> create(
|
||||
catchain::CatChainSessionId session_id, ValidatorSessionOptions opts, PublicKeyHash local_id,
|
||||
std::vector<ValidatorSessionNode> nodes, std::unique_ptr<Callback> callback,
|
||||
|
|
|
@ -159,6 +159,8 @@ class ValidatorSessionImpl : public ValidatorSession {
|
|||
void stats_add_round();
|
||||
void stats_set_candidate_status(td::uint32 round, PublicKeyHash src, int status);
|
||||
|
||||
void get_session_info(td::Promise<tl_object_ptr<ton_api::engine_validator_validatorSessionInfo>> promise) override;
|
||||
|
||||
public:
|
||||
ValidatorSessionImpl(catchain::CatChainSessionId session_id, ValidatorSessionOptions opts, PublicKeyHash local_id,
|
||||
std::vector<ValidatorSessionNode> nodes, std::unique_ptr<Callback> callback,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue