@@ -11,6 +11,7 @@ struct TransactionEmulationParams {
1111 uint32_t utime;
1212 uint64_t lt;
1313 td::optional<std::string> rand_seed_hex;
14+ td::optional<std::string> prev_blocks_info;
1415 bool ignore_chksig;
1516 bool is_tick_tock;
1617 bool is_tock;
@@ -49,6 +50,11 @@ td::Result<TransactionEmulationParams> decode_transaction_emulation_params(const
4950 TRY_RESULT (is_tock, td::get_json_object_bool_field (obj, " is_tock" , true , false ));
5051 params.is_tock = is_tock;
5152
53+ TRY_RESULT (prev_blocks_info_str, td::get_json_object_string_field (obj, " prev_blocks_info" , true ));
54+ if (prev_blocks_info_str.size () > 0 ) {
55+ params.prev_blocks_info = prev_blocks_info_str;
56+ }
57+
5258 if (is_tock && !is_tick_tock) {
5359 return td::Status::Error (" Inconsistent parameters is_tick_tock=false, is_tock=true" );
5460 }
@@ -200,12 +206,18 @@ const char *emulate_with_emulator(void* em, const char* libs, const char* accoun
200206 rand_seed_set = transaction_emulator_set_rand_seed (em, decoded_params.rand_seed_hex .unwrap ().c_str ());
201207 }
202208
209+ bool prev_blocks_set = true ;
210+ if (decoded_params.prev_blocks_info ) {
211+ prev_blocks_set = transaction_emulator_set_prev_blocks_info (em, decoded_params.prev_blocks_info .unwrap ().c_str ());
212+ }
213+
203214 if (!transaction_emulator_set_libs (em, libs) ||
204215 !transaction_emulator_set_lt (em, decoded_params.lt ) ||
205216 !transaction_emulator_set_unixtime (em, decoded_params.utime ) ||
206217 !transaction_emulator_set_ignore_chksig (em, decoded_params.ignore_chksig ) ||
207218 !transaction_emulator_set_debug_enabled (em, decoded_params.debug_enabled ) ||
208- !rand_seed_set) {
219+ !rand_seed_set ||
220+ !prev_blocks_set) {
209221 transaction_emulator_destroy (em);
210222 return strdup (R"( {"fail":true,"message":"Can't set params"})" );
211223 }
0 commit comments