1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-24 23:38:09 +00:00

build: generate code with Mako templates

This commit is contained in:
matejcik 2018-08-22 13:48:32 +02:00 committed by Pavol Rusnak
parent 92eb6b8fe1
commit 348b99b8dc
14 changed files with 1269 additions and 4530 deletions

View File

@ -84,6 +84,14 @@ black:
cstyle: ## run code style check on low-level C code
./tools/clang-format-check $(shell find embed -type f -name *.[ch])
## code generation ##
templates: ## render Mako templates (for lists of coins, tokens, etc.)
./tools/build_templates
templates_check: ## check that Mako-rendered files match their templates
./tools/build_templates --check
## build commands:
build: build_boardloader build_bootloader build_firmware build_prodtest build_unix ## build all

View File

@ -1,3 +1,5 @@
# generated from coininfo.py.mako
# do not edit manually!
from trezor.crypto.base58 import groestl512d_32, sha256d_32
@ -45,19 +47,17 @@ class CoinInfo:
self.sign_hash_double = True
# generated using tools/codegen/gen_coins.py
# do not edit manually!
# fmt: off
COINS = [
CoinInfo(
coin_name='Bitcoin',
coin_shortcut='BTC',
coin_name="Bitcoin",
coin_shortcut="BTC",
address_type=0,
address_type_p2sh=5,
maxfee_kb=2000000,
signed_message_header='Bitcoin Signed Message:\n',
signed_message_header="Bitcoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix='bc',
bech32_prefix="bc",
cashaddr_prefix=None,
slip44=0,
segwit=True,
@ -68,14 +68,14 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Testnet',
coin_shortcut='TEST',
coin_name="Testnet",
coin_shortcut="TEST",
address_type=111,
address_type_p2sh=196,
maxfee_kb=10000000,
signed_message_header='Bitcoin Signed Message:\n',
signed_message_header="Bitcoin Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix='tb',
bech32_prefix="tb",
cashaddr_prefix=None,
slip44=1,
segwit=True,
@ -86,15 +86,15 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Bcash',
coin_shortcut='BCH',
coin_name="Bcash",
coin_shortcut="BCH",
address_type=0,
address_type_p2sh=5,
maxfee_kb=500000,
signed_message_header='Bitcoin Signed Message:\n',
signed_message_header="Bitcoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix='bitcoincash',
cashaddr_prefix="bitcoincash",
slip44=145,
segwit=False,
fork_id=0,
@ -104,15 +104,15 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Bcash Testnet',
coin_shortcut='TBCH',
coin_name="Bcash Testnet",
coin_shortcut="TBCH",
address_type=111,
address_type_p2sh=196,
maxfee_kb=10000000,
signed_message_header='Bitcoin Signed Message:\n',
signed_message_header="Bitcoin Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix=None,
cashaddr_prefix='bchtest',
cashaddr_prefix="bchtest",
slip44=1,
segwit=False,
fork_id=0,
@ -122,14 +122,14 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Bgold',
coin_shortcut='BTG',
coin_name="Bgold",
coin_shortcut="BTG",
address_type=38,
address_type_p2sh=23,
maxfee_kb=500000,
signed_message_header='Bitcoin Gold Signed Message:\n',
signed_message_header="Bitcoin Gold Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix='btg',
bech32_prefix="btg",
cashaddr_prefix=None,
slip44=156,
segwit=True,
@ -140,12 +140,30 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Bprivate',
coin_shortcut='BTCP',
coin_name="Bgold Testnet",
coin_shortcut="TBTG",
address_type=111,
address_type_p2sh=196,
maxfee_kb=500000,
signed_message_header="Bitcoin Gold Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix="tbtg",
cashaddr_prefix=None,
slip44=156,
segwit=True,
fork_id=79,
force_bip143=True,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="Bprivate",
coin_shortcut="BTCP",
address_type=4901,
address_type_p2sh=5039,
maxfee_kb=1000000,
signed_message_header='BitcoinPrivate Signed Message:\n',
signed_message_header="BitcoinPrivate Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
@ -158,12 +176,12 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Dash',
coin_shortcut='DASH',
coin_name="Dash",
coin_shortcut="DASH",
address_type=76,
address_type_p2sh=16,
maxfee_kb=100000,
signed_message_header='DarkCoin Signed Message:\n',
signed_message_header="DarkCoin Signed Message:\n",
xpub_magic=0x02fe52cc,
bech32_prefix=None,
cashaddr_prefix=None,
@ -176,14 +194,50 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='DigiByte',
coin_shortcut='DGB',
coin_name="Dash Testnet",
coin_shortcut="tDASH",
address_type=140,
address_type_p2sh=19,
maxfee_kb=100000,
signed_message_header="DarkCoin Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix=None,
cashaddr_prefix=None,
slip44=1,
segwit=False,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="Denarius",
coin_shortcut="DNR",
address_type=30,
address_type_p2sh=90,
maxfee_kb=100000,
signed_message_header="Denarius Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
slip44=116,
segwit=False,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="DigiByte",
coin_shortcut="DGB",
address_type=30,
address_type_p2sh=63,
maxfee_kb=500000,
signed_message_header='DigiByte Signed Message:\n',
signed_message_header="DigiByte Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix='dgb',
bech32_prefix="dgb",
cashaddr_prefix=None,
slip44=20,
segwit=True,
@ -194,12 +248,12 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Dogecoin',
coin_shortcut='DOGE',
coin_name="Dogecoin",
coin_shortcut="DOGE",
address_type=30,
address_type_p2sh=22,
maxfee_kb=1000000000,
signed_message_header='Dogecoin Signed Message:\n',
signed_message_header="Dogecoin Signed Message:\n",
xpub_magic=0x02facafd,
bech32_prefix=None,
cashaddr_prefix=None,
@ -212,14 +266,50 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Fujicoin',
coin_shortcut='FJC',
coin_name="Feathercoin",
coin_shortcut="FTC",
address_type=14,
address_type_p2sh=5,
maxfee_kb=40000000,
signed_message_header="Feathercoin Signed Message:\n",
xpub_magic=0x0488bc26,
bech32_prefix="fc",
cashaddr_prefix=None,
slip44=8,
segwit=True,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="Flashcoin",
coin_shortcut="FLASH",
address_type=68,
address_type_p2sh=130,
maxfee_kb=4000000,
signed_message_header="Flashcoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
slip44=120,
segwit=True,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="Fujicoin",
coin_shortcut="FJC",
address_type=36,
address_type_p2sh=16,
maxfee_kb=10000000,
signed_message_header='FujiCoin Signed Message:\n',
signed_message_header="FujiCoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix='fc',
bech32_prefix="fc",
cashaddr_prefix=None,
slip44=75,
segwit=True,
@ -230,14 +320,14 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Groestlcoin',
coin_shortcut='GRS',
coin_name="Groestlcoin",
coin_shortcut="GRS",
address_type=36,
address_type_p2sh=5,
maxfee_kb=100000,
signed_message_header='GroestlCoin Signed Message:\n',
signed_message_header="GroestlCoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix='grs',
bech32_prefix="grs",
cashaddr_prefix=None,
slip44=17,
segwit=True,
@ -248,14 +338,14 @@ COINS = [
curve_name='secp256k1-groestl',
),
CoinInfo(
coin_name='Groestlcoin Testnet',
coin_shortcut='tGRS',
coin_name="Groestlcoin Testnet",
coin_shortcut="tGRS",
address_type=111,
address_type_p2sh=196,
maxfee_kb=100000,
signed_message_header='GroestlCoin Signed Message:\n',
signed_message_header="GroestlCoin Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix='tgrs',
bech32_prefix="tgrs",
cashaddr_prefix=None,
slip44=1,
segwit=True,
@ -266,14 +356,32 @@ COINS = [
curve_name='secp256k1-groestl',
),
CoinInfo(
coin_name='Litecoin',
coin_shortcut='LTC',
coin_name="Koto",
coin_shortcut="KOTO",
address_type=6198,
address_type_p2sh=6203,
maxfee_kb=1000000,
signed_message_header="Koto Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
slip44=510,
segwit=False,
fork_id=None,
force_bip143=False,
version_group_id=0x02e7d970,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="Litecoin",
coin_shortcut="LTC",
address_type=48,
address_type_p2sh=50,
maxfee_kb=40000000,
signed_message_header='Litecoin Signed Message:\n',
signed_message_header="Litecoin Signed Message:\n",
xpub_magic=0x019da462,
bech32_prefix='ltc',
bech32_prefix="ltc",
cashaddr_prefix=None,
slip44=2,
segwit=True,
@ -284,14 +392,14 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Litecoin Testnet',
coin_shortcut='TLTC',
coin_name="Litecoin Testnet",
coin_shortcut="TLTC",
address_type=111,
address_type_p2sh=58,
maxfee_kb=40000000,
signed_message_header='Litecoin Signed Message:\n',
signed_message_header="Litecoin Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix='tltc',
bech32_prefix="tltc",
cashaddr_prefix=None,
slip44=1,
segwit=True,
@ -302,14 +410,14 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Monacoin',
coin_shortcut='MONA',
coin_name="Monacoin",
coin_shortcut="MONA",
address_type=50,
address_type_p2sh=55,
maxfee_kb=5000000,
signed_message_header='Monacoin Signed Message:\n',
signed_message_header="Monacoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix='mona',
bech32_prefix="mona",
cashaddr_prefix=None,
slip44=22,
segwit=True,
@ -320,12 +428,48 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Namecoin',
coin_shortcut='NMC',
coin_name="MonetaryUnit",
coin_shortcut="MUE",
address_type=16,
address_type_p2sh=76,
maxfee_kb=100000,
signed_message_header="MonetaryUnit Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
slip44=31,
segwit=False,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="Myriad",
coin_shortcut="XMY",
address_type=50,
address_type_p2sh=9,
maxfee_kb=2000000,
signed_message_header="Myriadcoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
slip44=90,
segwit=True,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="Namecoin",
coin_shortcut="NMC",
address_type=52,
address_type_p2sh=5,
maxfee_kb=10000000,
signed_message_header='Namecoin Signed Message:\n',
signed_message_header="Namecoin Signed Message:\n",
xpub_magic=0x019da462,
bech32_prefix=None,
cashaddr_prefix=None,
@ -338,14 +482,68 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Vertcoin',
coin_shortcut='VTC',
coin_name="Pesetacoin",
coin_shortcut="PTC",
address_type=47,
address_type_p2sh=22,
maxfee_kb=1000000000,
signed_message_header="Pesetacoin Signed Message:\n",
xpub_magic=0x0488c42e,
bech32_prefix="null",
cashaddr_prefix=None,
slip44=109,
segwit=False,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="SmartCash",
coin_shortcut="SMART",
address_type=63,
address_type_p2sh=18,
maxfee_kb=1000000,
signed_message_header="SmartCash Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
slip44=224,
segwit=False,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="SmartCash Testnet",
coin_shortcut="tSMART",
address_type=65,
address_type_p2sh=21,
maxfee_kb=1000000,
signed_message_header="SmartCash Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix=None,
cashaddr_prefix=None,
slip44=224,
segwit=False,
fork_id=None,
force_bip143=False,
version_group_id=None,
bip115=False,
curve_name='secp256k1',
),
CoinInfo(
coin_name="Vertcoin",
coin_shortcut="VTC",
address_type=71,
address_type_p2sh=5,
maxfee_kb=40000000,
signed_message_header='Vertcoin Signed Message:\n',
signed_message_header="Vertcoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix='vtc',
bech32_prefix="vtc",
cashaddr_prefix=None,
slip44=28,
segwit=True,
@ -356,14 +554,14 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Viacoin',
coin_shortcut='VIA',
coin_name="Viacoin",
coin_shortcut="VIA",
address_type=71,
address_type_p2sh=33,
maxfee_kb=40000000,
signed_message_header='Viacoin Signed Message:\n',
signed_message_header="Viacoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix='via',
bech32_prefix="via",
cashaddr_prefix=None,
slip44=14,
segwit=True,
@ -374,12 +572,12 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Zcash',
coin_shortcut='ZEC',
coin_name="Zcash",
coin_shortcut="ZEC",
address_type=7352,
address_type_p2sh=7357,
maxfee_kb=1000000,
signed_message_header='Zcash Signed Message:\n',
signed_message_header="Zcash Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
@ -392,12 +590,12 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Zcash Testnet',
coin_shortcut='TAZ',
coin_name="Zcash Testnet",
coin_shortcut="TAZ",
address_type=7461,
address_type_p2sh=7354,
maxfee_kb=10000000,
signed_message_header='Zcash Signed Message:\n',
signed_message_header="Zcash Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix=None,
cashaddr_prefix=None,
@ -410,12 +608,12 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Zcoin',
coin_shortcut='XZC',
coin_name="Zcoin",
coin_shortcut="XZC",
address_type=82,
address_type_p2sh=7,
maxfee_kb=1000000,
signed_message_header='Zcoin Signed Message:\n',
signed_message_header="Zcoin Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,
@ -428,12 +626,12 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Zcoin Testnet',
coin_shortcut='tXZC',
coin_name="Zcoin Testnet",
coin_shortcut="tXZC",
address_type=65,
address_type_p2sh=178,
maxfee_kb=1000000,
signed_message_header='Zcoin Signed Message:\n',
signed_message_header="Zcoin Signed Message:\n",
xpub_magic=0x043587cf,
bech32_prefix=None,
cashaddr_prefix=None,
@ -446,12 +644,12 @@ COINS = [
curve_name='secp256k1',
),
CoinInfo(
coin_name='Zencash',
coin_shortcut='ZEN',
coin_name="Zencash",
coin_shortcut="ZEN",
address_type=8329,
address_type_p2sh=8342,
maxfee_kb=2000000,
signed_message_header='Zencash Signed Message:\n',
signed_message_header="Zencash Signed Message:\n",
xpub_magic=0x0488b21e,
bech32_prefix=None,
cashaddr_prefix=None,

View File

@ -0,0 +1,85 @@
# generated from coininfo.py.mako
# do not edit manually!
from trezor.crypto.base58 import groestl512d_32, sha256d_32
class CoinInfo:
def __init__(
self,
coin_name: str,
coin_shortcut: str,
address_type: int,
address_type_p2sh: int,
maxfee_kb: int,
signed_message_header: str,
xpub_magic: int,
bech32_prefix: str,
cashaddr_prefix: str,
slip44: int,
segwit: bool,
fork_id: int,
force_bip143: bool,
version_group_id: int,
bip115: bool,
curve_name: str,
):
self.coin_name = coin_name
self.coin_shortcut = coin_shortcut
self.address_type = address_type
self.address_type_p2sh = address_type_p2sh
self.maxfee_kb = maxfee_kb
self.signed_message_header = signed_message_header
self.xpub_magic = xpub_magic
self.bech32_prefix = bech32_prefix
self.cashaddr_prefix = cashaddr_prefix
self.slip44 = slip44
self.segwit = segwit
self.fork_id = fork_id
self.force_bip143 = force_bip143
self.version_group_id = version_group_id
self.bip115 = bip115
self.curve_name = curve_name
if curve_name == "secp256k1-groestl":
self.b58_hash = groestl512d_32
self.sign_hash_double = False
else:
self.b58_hash = sha256d_32
self.sign_hash_double = True
# fmt: off
<%
def hexfmt(x):
if x is None:
return None
else:
return "0x{:08x}".format(x)
ATTRIBUTES = (
("coin_name", black_repr),
("coin_shortcut", black_repr),
("address_type", int),
("address_type_p2sh", int),
("maxfee_kb", int),
("signed_message_header", black_repr),
("xpub_magic", hexfmt),
("bech32_prefix", black_repr),
("cashaddr_prefix", black_repr),
("slip44", int),
("segwit", bool),
("fork_id", black_repr),
("force_bip143", bool),
("version_group_id", hexfmt),
("bip115", bool),
("curve_name", lambda r: repr(r.replace("_", "-"))),
)
%>\
COINS = [
% for coin in supported_on("trezor2", bitcoin):
CoinInfo(
% for attr, func in ATTRIBUTES:
${attr}=${func(coin[attr])},
% endfor
),
% endfor
]

View File

@ -1,3 +1,7 @@
# generated from networks.py.mako
# do not edit manually!
def shortcut_by_chain_id(chain_id, tx_type=None):
if tx_type in [1, 6] and chain_id in [1, 3]:
return "WAN"
@ -31,134 +35,160 @@ class NetworkInfo:
self.rskip60 = rskip60
# generated using tools/codegen/gen_eth_networks.py
# do not edit manually!
# fmt: off
NETWORKS = [
NetworkInfo(
chain_id=1,
slip44=60,
shortcut='ETH',
name='Ethereum',
shortcut="ETH",
name="Ethereum",
rskip60=False,
),
NetworkInfo(
chain_id=2,
slip44=40,
shortcut='EXP',
name='Expanse',
shortcut="EXP",
name="Expanse",
rskip60=False,
),
NetworkInfo(
chain_id=3,
slip44=1,
shortcut='tETH',
name='Ethereum Testnet Ropsten',
shortcut="tROP",
name="Ethereum Testnet Ropsten",
rskip60=False,
),
NetworkInfo(
chain_id=4,
slip44=1,
shortcut='tETH',
name='Ethereum Testnet Rinkeby',
shortcut="tRIN",
name="Ethereum Testnet Rinkeby",
rskip60=False,
),
NetworkInfo(
chain_id=8,
slip44=108,
shortcut='UBQ',
name='UBIQ',
shortcut="UBQ",
name="Ubiq",
rskip60=False,
),
NetworkInfo(
chain_id=20,
slip44=2018,
shortcut='EOSC',
name='EOS Classic',
shortcut="EOSC",
name="EOS Classic",
rskip60=False,
),
NetworkInfo(
chain_id=28,
slip44=1128,
shortcut='ETSC',
name='Ethereum Social',
shortcut="ETSC",
name="Ethereum Social",
rskip60=False,
),
NetworkInfo(
chain_id=30,
slip44=137,
shortcut='RSK',
name='RSK',
shortcut="RSK",
name="RSK",
rskip60=True,
),
NetworkInfo(
chain_id=31,
slip44=37310,
shortcut='tRSK',
name='RSK Testnet',
shortcut="tRSK",
name="RSK Testnet",
rskip60=True,
),
NetworkInfo(
chain_id=42,
slip44=1,
shortcut='tETH',
name='Ethereum Testnet Kovan',
shortcut="tKOV",
name="Ethereum Testnet Kovan",
rskip60=False,
),
NetworkInfo(
chain_id=60,
slip44=6060,
shortcut='GO',
name='GoChain',
shortcut="GO",
name="GoChain",
rskip60=False,
),
NetworkInfo(
chain_id=61,
slip44=61,
shortcut='ETC',
name='Ethereum Classic',
shortcut="ETC",
name="Ethereum Classic",
rskip60=False,
),
NetworkInfo(
chain_id=62,
slip44=1,
shortcut='tETC',
name='Ethereum Classic Testnet',
shortcut="tETC",
name="Ethereum Classic Testnet",
rskip60=False,
),
NetworkInfo(
chain_id=64,
slip44=163,
shortcut='ELLA',
name='Ellaism',
shortcut="ELLA",
name="Ellaism",
rskip60=False,
),
NetworkInfo(
chain_id=820,
slip44=820,
shortcut='CLO',
name='Callisto',
shortcut="CLO",
name="Callisto",
rskip60=False,
),
NetworkInfo(
chain_id=1620,
slip44=1620,
shortcut="ATH",
name="Atheios",
rskip60=False,
),
NetworkInfo(
chain_id=1987,
slip44=1987,
shortcut='EGEM',
name='EtherGem',
shortcut="EGEM",
name="EtherGem",
rskip60=False,
),
NetworkInfo(
chain_id=31102,
slip44=31102,
shortcut='ESN',
name='Ethersocial Network',
shortcut="ESN",
name="Ethersocial Network",
rskip60=False,
),
NetworkInfo(
chain_id=200625,
slip44=200625,
shortcut='AKA',
name='Akroma',
shortcut="AKA",
name="Akroma",
rskip60=False,
),
NetworkInfo(
chain_id=1313114,
slip44=1313114,
shortcut="ETHO",
name="Ether-1",
rskip60=False,
),
NetworkInfo(
chain_id=7762959,
slip44=184,
shortcut="MUSIC",
name="Musicoin",
rskip60=False,
),
NetworkInfo(
chain_id=3125659152,
slip44=164,
shortcut="PIRL",
name="Pirl",
rskip60=False,
),
]

View File

@ -0,0 +1,49 @@
# generated from networks.py.mako
# do not edit manually!
def shortcut_by_chain_id(chain_id, tx_type=None):
if tx_type in [1, 6] and chain_id in [1, 3]:
return "WAN"
else:
n = by_chain_id(chain_id)
return n.shortcut if n is not None else "UNKN"
def by_chain_id(chain_id):
for n in NETWORKS:
if n.chain_id == chain_id:
return n
return None
def by_slip44(slip44):
for n in NETWORKS:
if n.slip44 == slip44:
return n
return None
class NetworkInfo:
def __init__(
self, chain_id: int, slip44: int, shortcut: str, name: str, rskip60: bool
):
self.chain_id = chain_id
self.slip44 = slip44
self.shortcut = shortcut
self.name = name
self.rskip60 = rskip60
# fmt: off
NETWORKS = [
% for n in supported_on("trezor2", eth):
NetworkInfo(
chain_id=${n.chain_id},
slip44=${n.slip44},
shortcut="${n.shortcut}",
name="${n.name}",
rskip60=${n.rskip60},
),
% endfor
]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
# generated from tokens.py.mako
# do not edit manually!
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
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()}
% endfor
]
# fmt: on

View File

@ -1,8 +1,9 @@
# generated using gen_nem_mosaics.py from trezor-common nem_mosaics.json - do not edit directly!
# generated from nem_mosaics.py.mako
# do not edit manually!
mosaics = [
{
"name": "XEM",
"name": "NEM",
"ticker": " XEM",
"namespace": "nem",
"mosaic": "xem",

View File

@ -0,0 +1,29 @@
# generated from nem_mosaics.py.mako
# do not edit manually!
<%
ATTRIBUTES = (
"name",
"ticker",
"namespace",
"mosaic",
"divisibility",
"levy",
"fee",
"levy_namespace",
"levy_mosaic",
"networks",
)
%>\
mosaics = [
% for m in supported_on("trezor2", nem):
<% m.ticker = " " + m.ticker %>\
{
% for attr in ATTRIBUTES:
% if attr in m:
"${attr}": ${black_repr(m[attr])},
% endif
% endfor
},
% endfor
]

26
tools/build_templates Executable file
View File

@ -0,0 +1,26 @@
#!/bin/sh
set -e
CWD=`dirname "$0"`
RENDER="$CWD/../vendor/trezor-common/tools/cointool.py render"
FIND_TEMPLATES="find $CWD/../src -name *.mako"
check_results() {
CHECK_FAIL=0
for filename in $($FIND_TEMPLATES); do
TMP=`mktemp`
TARGET="${filename%%.mako}"
$RENDER "$filename" -o $TMP
if ! diff -q "$TARGET" "$TMP"; then
CHECK_FAIL=1
fi
done
exit $CHECK_FAIL
}
if [ "$1" = "--check" ]; then
check_results
else
$FIND_TEMPLATES | xargs $RENDER
fi

View File

@ -1,44 +0,0 @@
#!/usr/bin/env python3
import json
fields = [
"coin_name",
"coin_shortcut",
"address_type",
"address_type_p2sh",
"maxfee_kb",
"signed_message_header",
"xpub_magic",
"bech32_prefix",
"cashaddr_prefix",
"slip44",
"segwit",
"fork_id",
"force_bip143",
"version_group_id",
"bip115",
"curve_name",
]
support = json.load(open("../../vendor/trezor-common/defs/support.json", "r"))
coins = support["trezor2"].keys()
print("COINS = [")
for c in coins:
print(" CoinInfo(")
name = c.replace(" ", "_").lower()
if name == "testnet":
name = "bitcoin_testnet"
data = json.load(open("../../vendor/trezor-common/defs/coins/%s.json" % name, "r"))
for n in fields:
if n in ["xpub_magic", "version_group_id"]:
v = "0x%08x" % data[n] if data[n] is not None else "None"
else:
v = repr(data[n])
if n == "curve_name":
v = v.replace("_", "-")
print(" %s=%s," % (n, v))
print(" ),")
print("]")

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
import json
j = json.load(open("../../vendor/trezor-common/defs/ethereum/networks.json", "r"))
print("NETWORKS = [")
for n in j:
print(" NetworkInfo(")
for f in ["chain_id", "slip44", "shortcut", "name", "rskip60"]:
print(" %s=%s," % (f, repr(n[f])))
print(" ),")
print("]")

View File

@ -1,48 +0,0 @@
#!/usr/bin/env python3
import json
def format_str(value):
return '"' + value + '"'
def format_primitive(value):
if isinstance(value, int):
return value
elif isinstance(value, str):
return format_str(value)
elif isinstance(value, list):
return value
else:
raise TypeError
fields = [
"name",
"ticker",
"namespace",
"mosaic",
"divisibility",
"levy",
"fee",
"levy_namespace",
"levy_mosaic",
"networks",
]
mosaics = json.load(open("../../vendor/trezor-common/defs/nem/nem_mosaics.json", "r"))
print(
"# generated using gen_nem_mosaics.py from trezor-common nem_mosaics.json - do not edit directly!"
)
print("")
print("mosaics = [")
for m in mosaics:
print(" {")
for name in fields:
if name in m:
print(" %s: %s," % (format_str(name), format_primitive(m[name])))
# else:
# print(' %s: None,' % format_str(name))
print(" },")
print("]")

@ -1 +1 @@
Subproject commit 3167bd63e389f1c27fe6ae07f1b87b5fbb889a61
Subproject commit 4c36e33425513402239530d24d093c47c162f97d