tprotocol: Convert scripthash status encoding and parting into functions. - obelisk - Electrum server using libbitcoin as its backend HTML git clone https://git.parazyd.org/obelisk DIR Log DIR Files DIR Refs DIR README DIR LICENSE --- DIR commit b9f545ba5ccef32b51b7cc5e32f95891716d0aa2 DIR parent cfe0a0a83174c3c6630a321b8932c253119fade4 HTML Author: parazyd <parazyd@dyne.org> Date: Mon, 19 Apr 2021 11:42:24 +0200 protocol: Convert scripthash status encoding and parting into functions. Diffstat: M obelisk/protocol.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) --- DIR diff --git a/obelisk/protocol.py b/obelisk/protocol.py t@@ -107,6 +107,7 @@ class ElectrumProtocol(asyncio.Protocol): # pylint: disable=R0904,R0902 async def stop(self): """Destructor function""" self.log.debug("ElectrumProtocol.stop()") + self.stopped = True if self.bx: unsub_pool = [] for i in self.sh_subscriptions: # pragma: no cover t@@ -122,8 +123,6 @@ class ElectrumProtocol(asyncio.Protocol): # pylint: disable=R0904,R0902 # for i in idxs: # del self.tasks[i] - self.stopped = True - async def recv(self, reader, writer): """Loop ran upon a connection which acts as a JSON-RPC handler""" recv_buf = bytearray() t@@ -458,6 +457,12 @@ class ElectrumProtocol(asyncio.Protocol): # pylint: disable=R0904,R0902 return {"result": None} # TODO: Check how history4 acts for mempool/unconfirmed + status = ElectrumProtocol.__scripthash_status_from_history(history) + self.sh_subscriptions[scripthash]["status"] = status + return {"result": ElectrumProtocol.__scripthash_status_encode(status)} + + @staticmethod + def __scripthash_status_from_history(history): status = [] for i in history: if "received" in i: t@@ -470,12 +475,10 @@ class ElectrumProtocol(asyncio.Protocol): # pylint: disable=R0904,R0902 hash_to_hex_str(i["spent"]["hash"]), i["spent"]["height"], )) - - self.sh_subscriptions[scripthash]["status"] = status - return {"result": ElectrumProtocol.__scripthash_status(status)} + return status @staticmethod - def __scripthash_status(status): + def __scripthash_status_encode(status): concat = "" for txid, height in status: concat += txid + ":%d:" % height