From d5f904f601e5202892104703088b2ba358cb51cf Mon Sep 17 00:00:00 2001 From: AM shadow <154503348+shadowv0vshadow@users.noreply.github.com> Date: Mon, 17 Jun 2024 20:07:57 +0800 Subject: [PATCH] Fix `first_atomical_id` during custom coloring FT (#209) --- electrumx/lib/atomicals_blueprint_builder.py | 8 +++++++- tests/lib/test_atomicals_blueprint_builder.py | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/electrumx/lib/atomicals_blueprint_builder.py b/electrumx/lib/atomicals_blueprint_builder.py index e5172826..b427ccf4 100644 --- a/electrumx/lib/atomicals_blueprint_builder.py +++ b/electrumx/lib/atomicals_blueprint_builder.py @@ -567,6 +567,7 @@ def custom_color_ft_atomicals(cls, ft_atomicals, operations_found_at_inputs, tx) output_colored_map = {} fts_burned = {} cleanly_assigned = True + first_atomical_id = None for atomical_id, atomical_info in sorted(ft_atomicals.items()): remaining_value = atomical_info.atomical_value for out_idx, txout in enumerate(tx.outputs): @@ -598,7 +599,12 @@ def custom_color_ft_atomicals(cls, ft_atomicals, operations_found_at_inputs, tx) if remaining_value > 0: cleanly_assigned = False fts_burned[atomical_id] = remaining_value - return AtomicalFtOutputBlueprintAssignmentSummary(output_colored_map, fts_burned, cleanly_assigned, None) + + if output_colored_map and len(output_colored_map.keys()): + first_atomical_id = list(list(output_colored_map.values())[0]["atomicals"].keys())[0] + return AtomicalFtOutputBlueprintAssignmentSummary( + output_colored_map, fts_burned, cleanly_assigned, first_atomical_id + ) @classmethod def color_ft_atomicals_split(cls, ft_atomicals, operations_found_at_inputs, tx, is_custom_coloring_activated): diff --git a/tests/lib/test_atomicals_blueprint_builder.py b/tests/lib/test_atomicals_blueprint_builder.py index ada4a0a2..c02dd33d 100644 --- a/tests/lib/test_atomicals_blueprint_builder.py +++ b/tests/lib/test_atomicals_blueprint_builder.py @@ -1598,6 +1598,7 @@ def mock_mint_fetcher(self, atomical_id): nft_output_blueprint = blueprint_builder.get_nft_output_blueprint() assert len(nft_output_blueprint.outputs) == 0 ft_output_blueprint = blueprint_builder.get_ft_output_blueprint() + assert ft_output_blueprint.first_atomical_id == subject_atomical_id assert ft_output_blueprint.cleanly_assigned == False assert len(ft_output_blueprint.outputs) == 2 assert ft_output_blueprint.fts_burned == {}