mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
added support for config change proposals
- added some fift scripts for the config change proposal voting - added validator-engine-console support for the config change proposal voting - additional sanity checks in catchain - unsafe slow catchain resync method
This commit is contained in:
parent
a31f8d4424
commit
4dd5eea11f
35 changed files with 753 additions and 144 deletions
|
@ -1868,9 +1868,10 @@ td::actor::ActorOwn<ValidatorGroup> ValidatorManagerImpl::create_validator_group
|
|||
} else {
|
||||
auto validator_id = get_validator(shard, validator_set);
|
||||
CHECK(!validator_id.is_zero());
|
||||
auto G = td::actor::create_actor<ValidatorGroup>("validatorgroup", shard, validator_id, session_id, validator_set,
|
||||
opts, keyring_, adnl_, rldp_, overlays_, db_root_, actor_id(this),
|
||||
init_session);
|
||||
auto G = td::actor::create_actor<ValidatorGroup>(
|
||||
"validatorgroup", shard, validator_id, session_id, validator_set, opts, keyring_, adnl_, rldp_, overlays_,
|
||||
db_root_, actor_id(this), init_session,
|
||||
opts_->check_unsafe_resync_allowed(validator_set->get_catchain_seqno()));
|
||||
return G;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -242,7 +242,7 @@ void ValidatorGroup::create_session() {
|
|||
|
||||
session_ = validatorsession::ValidatorSession::create(session_id_, config_, local_id_, std::move(vec),
|
||||
make_validator_session_callback(), keyring_, adnl_, rldp_,
|
||||
overlays_, db_root_);
|
||||
overlays_, db_root_, allow_unsafe_self_blocks_resync_);
|
||||
if (prev_block_ids_.size() > 0) {
|
||||
td::actor::send_closure(session_, &validatorsession::ValidatorSession::start);
|
||||
}
|
||||
|
|
|
@ -59,7 +59,8 @@ class ValidatorGroup : public td::actor::Actor {
|
|||
td::Ref<ValidatorSet> validator_set, validatorsession::ValidatorSessionOptions config,
|
||||
td::actor::ActorId<keyring::Keyring> keyring, td::actor::ActorId<adnl::Adnl> adnl,
|
||||
td::actor::ActorId<rldp::Rldp> rldp, td::actor::ActorId<overlay::Overlays> overlays,
|
||||
std::string db_root, td::actor::ActorId<ValidatorManager> validator_manager, bool create_session)
|
||||
std::string db_root, td::actor::ActorId<ValidatorManager> validator_manager, bool create_session,
|
||||
bool allow_unsafe_self_blocks_resync)
|
||||
: shard_(shard)
|
||||
, local_id_(std::move(local_id))
|
||||
, session_id_(session_id)
|
||||
|
@ -71,7 +72,8 @@ class ValidatorGroup : public td::actor::Actor {
|
|||
, overlays_(overlays)
|
||||
, db_root_(std::move(db_root))
|
||||
, manager_(validator_manager)
|
||||
, init_(create_session) {
|
||||
, init_(create_session)
|
||||
, allow_unsafe_self_blocks_resync_(allow_unsafe_self_blocks_resync) {
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -98,6 +100,7 @@ class ValidatorGroup : public td::actor::Actor {
|
|||
td::actor::ActorOwn<validatorsession::ValidatorSession> session_;
|
||||
|
||||
bool init_ = false;
|
||||
bool allow_unsafe_self_blocks_resync_;
|
||||
td::uint32 last_known_round_id_ = 0;
|
||||
};
|
||||
|
||||
|
|
|
@ -91,6 +91,9 @@ struct ValidatorManagerOptionsImpl : public ValidatorManagerOptions {
|
|||
td::uint32 get_filedb_depth() const override {
|
||||
return db_depth_;
|
||||
}
|
||||
bool check_unsafe_resync_allowed(CatchainSeqno seqno) const override {
|
||||
return unsafe_catchains_.count(seqno) > 0;
|
||||
}
|
||||
|
||||
void set_zero_block_id(BlockIdExt block_id) override {
|
||||
zero_block_id_ = block_id;
|
||||
|
@ -129,6 +132,9 @@ struct ValidatorManagerOptionsImpl : public ValidatorManagerOptions {
|
|||
CHECK(value <= 32);
|
||||
db_depth_ = value;
|
||||
}
|
||||
void add_unsafe_resync_catchain(CatchainSeqno seqno) override {
|
||||
unsafe_catchains_.insert(seqno);
|
||||
}
|
||||
|
||||
ValidatorManagerOptionsImpl *make_copy() const override {
|
||||
return new ValidatorManagerOptionsImpl(*this);
|
||||
|
@ -164,6 +170,7 @@ struct ValidatorManagerOptionsImpl : public ValidatorManagerOptions {
|
|||
bool initial_sync_disabled_;
|
||||
std::vector<BlockIdExt> hardforks_;
|
||||
td::uint32 db_depth_ = 2;
|
||||
std::set<CatchainSeqno> unsafe_catchains_;
|
||||
};
|
||||
|
||||
} // namespace validator
|
||||
|
|
|
@ -68,6 +68,7 @@ struct ValidatorManagerOptions : public td::CntObject {
|
|||
virtual td::uint32 key_block_utime_step() const {
|
||||
return 86400;
|
||||
}
|
||||
virtual bool check_unsafe_resync_allowed(CatchainSeqno seqno) const = 0;
|
||||
|
||||
virtual void set_zero_block_id(BlockIdExt block_id) = 0;
|
||||
virtual void set_init_block_id(BlockIdExt block_id) = 0;
|
||||
|
@ -81,6 +82,7 @@ struct ValidatorManagerOptions : public td::CntObject {
|
|||
virtual void set_initial_sync_disabled(bool value) = 0;
|
||||
virtual void set_hardforks(std::vector<BlockIdExt> hardforks) = 0;
|
||||
virtual void set_filedb_depth(td::uint32 value) = 0;
|
||||
virtual void add_unsafe_resync_catchain(CatchainSeqno seqno) = 0;
|
||||
|
||||
static td::Ref<ValidatorManagerOptions> create(
|
||||
BlockIdExt zero_block_id, BlockIdExt init_block_id,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue