From b83f7159a9dd635a7a6f12d479e8704f6d7ae4b2 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Sun, 28 Feb 2021 16:53:21 +0100 Subject: [PATCH] bech32: around 5% speedup for bech32_decode useful for lnaddr.lndecode --- electrum/segwit_addr.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/electrum/segwit_addr.py b/electrum/segwit_addr.py index 07b3ec42a..8dcc4e6a7 100644 --- a/electrum/segwit_addr.py +++ b/electrum/segwit_addr.py @@ -23,6 +23,7 @@ CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l" +_CHARSET_INVERSE = {x: CHARSET.find(x) for x in CHARSET} def bech32_polymod(values): @@ -72,7 +73,7 @@ def bech32_decode(bech, ignore_long_length=False): if not all(x in CHARSET for x in bech[pos+1:]): return (None, None) hrp = bech[:pos] - data = [CHARSET.find(x) for x in bech[pos+1:]] + data = [_CHARSET_INVERSE[x] for x in bech[pos+1:]] if not bech32_verify_checksum(hrp, data): return (None, None) return (hrp, data[:-6])