mirror of
				https://github.com/ton-blockchain/ton
				synced 2025-03-09 15:40:10 +00:00 
			
		
		
		
	Add getConfigParam to tonlibjson
This commit is contained in:
		
							parent
							
								
									76c2764e7f
								
							
						
					
					
						commit
						45a160d7c1
					
				
					 6 changed files with 37 additions and 18 deletions
				
			
		| 
						 | 
					@ -210,6 +210,9 @@ blocks.shortTxId mode:# account:mode.0?bytes lt:mode.1?int64 hash:mode.2?bytes =
 | 
				
			||||||
blocks.transactions id:ton.blockIdExt req_count:int32 incomplete:Bool transactions:vector<blocks.shortTxId> = blocks.Transactions;
 | 
					blocks.transactions id:ton.blockIdExt req_count:int32 incomplete:Bool transactions:vector<blocks.shortTxId> = blocks.Transactions;
 | 
				
			||||||
blocks.header id:ton.blockIdExt global_id:int32 version:int32 after_merge:Bool after_split:Bool before_split:Bool want_merge:Bool want_split:Bool validator_list_hash_short:int32 catchain_seqno:int32 min_ref_mc_seqno:int32 is_key_block:Bool prev_key_block_seqno:int32 start_lt:int64 end_lt:int64 vert_seqno:# prev_blocks:vector<ton.blockIdExt> = blocks.Header;
 | 
					blocks.header id:ton.blockIdExt global_id:int32 version:int32 after_merge:Bool after_split:Bool before_split:Bool want_merge:Bool want_split:Bool validator_list_hash_short:int32 catchain_seqno:int32 min_ref_mc_seqno:int32 is_key_block:Bool prev_key_block_seqno:int32 start_lt:int64 end_lt:int64 vert_seqno:# prev_blocks:vector<ton.blockIdExt> = blocks.Header;
 | 
				
			||||||
//blocks.shortData header:blocks.Header transactions:blocks.Header = blocks.BlockData;
 | 
					//blocks.shortData header:blocks.Header transactions:blocks.Header = blocks.BlockData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					configInfo config:tvm.cell = ConfigInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---functions---
 | 
					---functions---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
init options:options = options.Info;
 | 
					init options:options = options.Info;
 | 
				
			||||||
| 
						 | 
					@ -262,6 +265,8 @@ guessAccount public_key:string rwallet_init_public_key:string = AccountRevisionL
 | 
				
			||||||
getAccountState account_address:accountAddress = FullAccountState;
 | 
					getAccountState account_address:accountAddress = FullAccountState;
 | 
				
			||||||
createQuery private_key:InputKey address:accountAddress timeout:int32 action:Action initial_account_state:InitialAccountState = query.Info;
 | 
					createQuery private_key:InputKey address:accountAddress timeout:int32 action:Action initial_account_state:InitialAccountState = query.Info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					getConfigParam mode:# id:ton.blockIdExt param:# = ConfigInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg.decrypt input_key:InputKey data:msg.dataEncryptedArray = msg.DataDecryptedArray;
 | 
					msg.decrypt input_key:InputKey data:msg.dataEncryptedArray = msg.DataDecryptedArray;
 | 
				
			||||||
msg.decryptWithProof proof:bytes data:msg.dataEncrypted = msg.Data;
 | 
					msg.decryptWithProof proof:bytes data:msg.dataEncrypted = msg.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -39,7 +39,7 @@ td::StringBuilder& operator<<(td::StringBuilder& sb, const LastConfigState& stat
 | 
				
			||||||
  return sb;
 | 
					  return sb;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LastConfig::LastConfig(ExtClientRef client, td::unique_ptr<Callback> callback) : callback_(std::move(callback)) {
 | 
					LastConfig::LastConfig(ExtClientRef client) {
 | 
				
			||||||
  client_.set_client(client);
 | 
					  client_.set_client(client);
 | 
				
			||||||
  VLOG(last_block) << "State: " << state_;
 | 
					  VLOG(last_block) << "State: " << state_;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,17 +36,10 @@ td::StringBuilder& operator<<(td::StringBuilder& sb, const LastConfigState& stat
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LastConfig : public td::actor::Actor {
 | 
					class LastConfig : public td::actor::Actor {
 | 
				
			||||||
 public:
 | 
					 public:
 | 
				
			||||||
  class Callback {
 | 
					  explicit LastConfig(ExtClientRef client);
 | 
				
			||||||
   public:
 | 
					 | 
				
			||||||
    virtual ~Callback() {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  explicit LastConfig(ExtClientRef client, td::unique_ptr<Callback> callback);
 | 
					 | 
				
			||||||
  void get_last_config(td::Promise<LastConfigState> promise);
 | 
					  void get_last_config(td::Promise<LastConfigState> promise);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 private:
 | 
					 private:
 | 
				
			||||||
  td::unique_ptr<Callback> callback_;
 | 
					 | 
				
			||||||
  ExtClient client_;
 | 
					  ExtClient client_;
 | 
				
			||||||
  LastConfigState state_;
 | 
					  LastConfigState state_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1439,17 +1439,9 @@ void TonlibClient::init_last_block(LastBlockState state) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void TonlibClient::init_last_config() {
 | 
					void TonlibClient::init_last_config() {
 | 
				
			||||||
  ref_cnt_++;
 | 
					  ref_cnt_++;
 | 
				
			||||||
  class Callback : public LastConfig::Callback {
 | 
					 | 
				
			||||||
   public:
 | 
					 | 
				
			||||||
    Callback(td::actor::ActorShared<TonlibClient> client) : client_(std::move(client)) {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   private:
 | 
					 | 
				
			||||||
    td::actor::ActorShared<TonlibClient> client_;
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  raw_last_config_ =
 | 
					  raw_last_config_ =
 | 
				
			||||||
      td::actor::create_actor<LastConfig>(td::actor::ActorOptions().with_name("LastConfig").with_poll(false),
 | 
					      td::actor::create_actor<LastConfig>(td::actor::ActorOptions().with_name("LastConfig").with_poll(false),
 | 
				
			||||||
                                          get_client_ref(), td::make_unique<Callback>(td::actor::actor_shared(this)));
 | 
					                                          get_client_ref());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TonlibClient::on_result(td::uint64 id, tonlib_api::object_ptr<tonlib_api::Object> response) {
 | 
					void TonlibClient::on_result(td::uint64 id, tonlib_api::object_ptr<tonlib_api::Object> response) {
 | 
				
			||||||
| 
						 | 
					@ -4198,6 +4190,32 @@ auto to_lite_api(const tonlib_api::ton_blockIdExt& blk) -> td::Result<lite_api_p
 | 
				
			||||||
      blk.workchain_, blk.shard_, blk.seqno_, root_hash, file_hash);
 | 
					      blk.workchain_, blk.shard_, blk.seqno_, root_hash, file_hash);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					td::Status TonlibClient::do_request(const tonlib_api::getConfigParam& request,
 | 
				
			||||||
 | 
					                        td::Promise<object_ptr<tonlib_api::configInfo>>&& promise) {
 | 
				
			||||||
 | 
					  TRY_RESULT(lite_block, to_lite_api(*request.id_))
 | 
				
			||||||
 | 
					  auto block = create_block_id(std::move(lite_block));
 | 
				
			||||||
 | 
					  auto param = request.param_;
 | 
				
			||||||
 | 
					  std::vector<int32_t> params = { param };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  client_.send_query(ton::lite_api::liteServer_getConfigParams(0, std::move(lite_block), std::move(params)),
 | 
				
			||||||
 | 
					                     promise.wrap([block, param](auto r_config) { 
 | 
				
			||||||
 | 
					    auto state = block::check_extract_state_proof(block, r_config->state_proof_.as_slice(),
 | 
				
			||||||
 | 
					                                                  r_config->config_proof_.as_slice());
 | 
				
			||||||
 | 
					    if (state.is_error()) {
 | 
				
			||||||
 | 
					      LOG(ERROR) << "block::check_extract_state_proof failed: " << state.error();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    auto config = block::Config::extract_from_state(std::move(state.move_as_ok()), 0);
 | 
				
			||||||
 | 
					    if (config.is_error()) {
 | 
				
			||||||
 | 
					      LOG(ERROR) << "block::Config::extract_from_state failed: " << config.error();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    tonlib_api::configInfo config_result;
 | 
				
			||||||
 | 
					    config_result.config_ = tonlib_api::make_object<tonlib_api::tvm_cell>(to_bytes(config.move_as_ok()->get_config_param(param)));
 | 
				
			||||||
 | 
					    return tonlib_api::make_object<tonlib_api::configInfo>(std::move(config_result));
 | 
				
			||||||
 | 
					  }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return td::Status::OK();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
td::Status TonlibClient::do_request(const tonlib_api::blocks_getMasterchainInfo& masterchain_info,
 | 
					td::Status TonlibClient::do_request(const tonlib_api::blocks_getMasterchainInfo& masterchain_info,
 | 
				
			||||||
                        td::Promise<object_ptr<tonlib_api::blocks_masterchainInfo>>&& promise) {
 | 
					                        td::Promise<object_ptr<tonlib_api::blocks_masterchainInfo>>&& promise) {
 | 
				
			||||||
  client_.send_query(ton::lite_api::liteServer_getMasterchainInfo(),
 | 
					  client_.send_query(ton::lite_api::liteServer_getMasterchainInfo(),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -357,6 +357,9 @@ class TonlibClient : public td::actor::Actor {
 | 
				
			||||||
  td::Status do_request(const tonlib_api::blocks_getBlockHeader& request,
 | 
					  td::Status do_request(const tonlib_api::blocks_getBlockHeader& request,
 | 
				
			||||||
                        td::Promise<object_ptr<tonlib_api::blocks_header>>&& promise);
 | 
					                        td::Promise<object_ptr<tonlib_api::blocks_header>>&& promise);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  td::Status do_request(const tonlib_api::getConfigParam& request,
 | 
				
			||||||
 | 
					                        td::Promise<object_ptr<tonlib_api::configInfo>>&& promise);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void proxy_request(td::int64 query_id, std::string data);
 | 
					  void proxy_request(td::int64 query_id, std::string data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void load_libs_from_disk();
 | 
					  void load_libs_from_disk();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue