diff --git a/src/dev_arweave_common.erl b/src/dev_arweave_common.erl index 808b41dfc..13173924e 100644 --- a/src/dev_arweave_common.erl +++ b/src/dev_arweave_common.erl @@ -81,7 +81,13 @@ generate_id(TX, unsigned) -> generate_signature_data_segment(TX#tx{ owner = ?DEFAULT_OWNER })). generate_signature_data_segment(TX = #tx{ format = ans104 }) -> - ar_bundles:data_item_signature_data(TX); + try ar_bundles:data_item_signature_data(TX) catch + Class:Error:Stack -> + ?event(error, {invalid_tx, {class, Class}, + {error, Error}, + {stack, Stack}}), + <<>> + end; generate_signature_data_segment(TX) -> ar_tx:generate_signature_data_segment(TX). @@ -193,4 +199,16 @@ normalize_data_root(Item = #tx{data = Bin, format = 2}) Item#tx{data_root = ar_tx:data_root(Bin)}; normalize_data_root(Item) -> Item. - +%% Tests + +do_not_crash_with_unsupported_signature_type_test() -> + SignatureType = unsupported_tx_signature_type, + TX = #tx{ + format = ans104, + signature = <<0:256>>, + signature_type = SignatureType, + owner = <<0:256>>, + data_size = 3, + data = <<0, 1, 2>> + }, + ?assert(is_record(reset_ids(TX), tx)).