1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-02-05 20:31:01 +00:00

core/ethereum: store tokens as a decision tree

This commit is contained in:
Jan Pochyla 2019-05-20 15:51:30 +02:00
parent 94de0aa9cb
commit 875579867e
2 changed files with 2312 additions and 1150 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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