From bc58fba00d376817f9fc0201f0d1f1239d8f9bf9 Mon Sep 17 00:00:00 2001 From: Gaze Date: Thu, 18 Jul 2024 00:37:02 +0700 Subject: [PATCH 1/3] feat: add get tx by hash api --- electrumx/server/session/http_unified_api.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/electrumx/server/session/http_unified_api.py b/electrumx/server/session/http_unified_api.py index a9335cd..0d8dd11 100644 --- a/electrumx/server/session/http_unified_api.py +++ b/electrumx/server/session/http_unified_api.py @@ -136,6 +136,7 @@ def mount_routes(self, router: UrlDispatcher): router.add_get("/v2/arc20/holders/{id}", self.get_arc20_holders) router.add_get("/v2/arc20/info/{id}", self.get_arc20_token) router.add_get("/v2/arc20/utxos/wallet/{wallet}", self.get_arc20_utxos) + router.add_get("/v2/arc20/transactions/hash/{hash}", self.get_arc20_transaction_by_hash) def _resolve_ticker_to_atomical_id(self, ticker: str) -> bytes | None: bp = self.session_mgr.bp @@ -735,6 +736,18 @@ async def get_arc20_transactions(self, request: "Request") -> "Response": } ) + @error_handler + async def get_arc20_transaction_by_hash(self, request: "Request") -> "Response": + hash = request.match_info.get("hash", "") + if not hash: + return format_response(None, 400, "Hash is required.") + + tx = await self._get_tx_detail(tx_hash) + if not tx: + return format_response(None, 404, "transaction not found.") + + return format_response(tx) + async def _get_arc20_holders_by_block_height(self, atomical_id: bytes, block_height: int) -> dict: utxos = await self.session_mgr.db.get_atomical_utxos_at_height_by_atomical_id(atomical_id, block_height) From d65284ee82aa764de27b7883fd69fc7f84148ea3 Mon Sep 17 00:00:00 2001 From: Gaze Date: Thu, 18 Jul 2024 00:39:49 +0700 Subject: [PATCH 2/3] fix: wrong var name --- electrumx/server/session/http_unified_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrumx/server/session/http_unified_api.py b/electrumx/server/session/http_unified_api.py index 0d8dd11..393cec2 100644 --- a/electrumx/server/session/http_unified_api.py +++ b/electrumx/server/session/http_unified_api.py @@ -738,7 +738,7 @@ async def get_arc20_transactions(self, request: "Request") -> "Response": @error_handler async def get_arc20_transaction_by_hash(self, request: "Request") -> "Response": - hash = request.match_info.get("hash", "") + tx_hash = request.match_info.get("hash", "") if not hash: return format_response(None, 400, "Hash is required.") From e58ea92268e80103f27a0a666fa4baab75423bea Mon Sep 17 00:00:00 2001 From: Gaze Date: Thu, 18 Jul 2024 00:40:58 +0700 Subject: [PATCH 3/3] fix: None syntax --- electrumx/server/session/http_unified_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrumx/server/session/http_unified_api.py b/electrumx/server/session/http_unified_api.py index 393cec2..e73274a 100644 --- a/electrumx/server/session/http_unified_api.py +++ b/electrumx/server/session/http_unified_api.py @@ -742,7 +742,7 @@ async def get_arc20_transaction_by_hash(self, request: "Request") -> "Response": if not hash: return format_response(None, 400, "Hash is required.") - tx = await self._get_tx_detail(tx_hash) + tx = await self._get_tx_detail(tx_hash, None, None) if not tx: return format_response(None, 404, "transaction not found.")