From f6f29c0452389183849f537e91c1e4c7cf7c0aa7 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 27 Mar 2024 16:28:43 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20Produce=20readable=20`AtomicalsV?= =?UTF-8?q?alidationError`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electrumx/server/block_processor.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/electrumx/server/block_processor.py b/electrumx/server/block_processor.py index bcf6fee2..bcfaf19c 100644 --- a/electrumx/server/block_processor.py +++ b/electrumx/server/block_processor.py @@ -69,7 +69,8 @@ is_event_operation, encode_atomical_ids_hex, is_mint_pow_valid, - is_txid_valid_for_perpetual_bitwork + is_txid_valid_for_perpetual_bitwork, + auto_encode_bytes_items ) from electrumx.lib.atomicals_blueprint_builder import AtomicalsTransferBlueprintBuilder @@ -546,8 +547,15 @@ def validate_ft_rules_raw_tx(self, raw_tx): # Log that there were tokens burned due to not being cleanly assigned if blueprint_builder.get_are_fts_burned() or not blueprint_builder.cleanly_assigned: encoded_atomicals_spent_at_inputs = encode_atomical_ids_hex(atomicals_spent_at_inputs) - encoded_ft_output_blueprint = encode_atomical_ids_hex(ft_output_blueprint) - raise AtomicalsValidationError(f'detected invalid ft token inputs and outputs for tx_hash={hash_to_hex_str(tx_hash)}, operations_found_at_inputs={operations_found_at_inputs}, atomicals_spent_at_inputs={encoded_atomicals_spent_at_inputs}, ft_output_blueprint.outputs={encoded_ft_output_blueprint.outputs} ft_output_blueprint.fts_burned={encoded_ft_output_blueprint.fts_burned}') + encoded_ft_output_blueprint = auto_encode_bytes_items(encode_atomical_ids_hex(ft_output_blueprint)) + raise AtomicalsValidationError( + f'Invalid FT token inputs/outputs:\n' + f'tx_hash={hash_to_hex_str(tx_hash)}\n' + f'operations_found_at_inputs={operations_found_at_inputs}\n' + f'atomicals_spent_at_inputs={encoded_atomicals_spent_at_inputs}\n' + f'ft_output_blueprint.outputs={encoded_ft_output_blueprint['outputs']}\n' + f'ft_output_blueprint.fts_burned={encoded_ft_output_blueprint['fts_burned']}' + ) # Query general data including the cache def get_general_data_with_cache(self, key):