core/ethereum: store tokens as a decision tree

pull/165/head
Jan Pochyla 5 years ago
parent 94de0aa9cb
commit 875579867e

File diff suppressed because it is too large Load Diff

@ -1,21 +1,31 @@
# generated from tokens.py.mako
# do not edit manually!
<%
from collections import defaultdict
def token_by_chain_address(chain_id, address):
for token in tokens:
if chain_id == token[0] and address == token[1]:
return token
return UNKNOWN_TOKEN
def group_tokens(tokens):
r = defaultdict(list)
for t in tokens:
r[t.chain_id].append(t)
return r
%>
UNKNOWN_TOKEN = (None, None, None, None)
# fmt: off
tokens = [
% for t in supported_on("trezor2", erc20):
(${t.chain_id}, ${black_repr(t.address_bytes)}, ${black_repr(t.symbol)}, ${t.decimals}), # ${t.chain} / ${t.name.strip()}
def token_by_chain_address(chain_id, address):
if False:
pass
# fmt: off
% for token_chain_id, tokens in group_tokens(supported_on("trezor2", erc20)).items():
elif chain_id == ${token_chain_id}:
if False:
pass
% for t in tokens:
elif address == ${black_repr(t.address_bytes)}:
return (${t.chain_id}, ${black_repr(t.address_bytes)}, ${black_repr(t.symbol)}, ${t.decimals}) # ${t.chain} / ${t.name.strip()}
% endfor
% endfor
]
# fmt: on
# fmt: on
return UNKNOWN_TOKEN

Loading…
Cancel
Save