Skip to content

Commit cbe79eb

Browse files
authored
feat: add prev blocks info param to emscripten tx emulator (#1726)
1 parent 75a75eb commit cbe79eb

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

emulator/emulator-emscripten.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)