MCPcopy Create free account
hub / github.com/TelegramMessenger/cocoon / update_root_contract_state

Method update_root_contract_state

runners/BaseRunner.cpp:780–814  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

778 }
779}
780td::actor::Task<td::Unit> BaseRunner::update_root_contract_state() {
781 root_contract_state_updating_ = true;
782 SCOPE_EXIT {
783 root_contract_state_updating_ = false;
784 };
785
786 auto res = co_await tonlib_wrapper_.request<tonlib_api::raw_getAccountState>(
787 ton::create_tl_object<tonlib_api::accountAddress>(root_contract_address_.rserialize(true)));
788
789 LOG(INFO) << "got root contract state with ts=" << res->sync_utime_;
790
791 auto data = res->data_;
792 int ts = (td::int32)res->sync_utime_;
793
794 auto cell = co_await vm::std_boc_deserialize(data);
795
796 vm::CellSlice cs{vm::NoVm{}, std::move(cell)};
797
798 auto val = co_await RootContractConfig::load_from_state(cs, is_testnet());
799
800 LOG_CHECK(val->is_test() == is_test()) << "test mode mismatch";
801
802 if (runner_config_) {
803 if (runner_config_->root_contract_config->version() < val->version()) {
804 set_root_contract_config(std::move(val), ts);
805 } else if (runner_config_->root_contract_config->version() == val->version()) {
806 if (runner_config_->root_contract_ts < ts) {
807 runner_config_->root_contract_ts = ts;
808 }
809 }
810 } else {
811 set_root_contract_config(std::move(val), ts);
812 }
813 co_return td::Unit();
814}
815
816void BaseRunner::get_private_keys_from_key_manager() {
817 if (!is_initialized()) {

Callers

nothing calls this directly

Calls 2

versionMethod · 0.80
is_testMethod · 0.45

Tested by

no test coverage detected