You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/firmware/coins-gen.py

52 lines
2.0 KiB

#!/usr/bin/env python3
import json
coins = json.load(open('../vendor/trezor-common/coins.json', 'r'))
fields = []
for c in coins:
if c['firmware']:
fields.append([
'true' if c['coin_name'] is not None else 'false',
'"%s"' % c['coin_name'] if c['coin_name'] is not None else 'NULL',
'true' if c['coin_shortcut'] is not None else 'false',
'" %s"' % c['coin_shortcut'] if c['coin_shortcut'] is not None else 'NULL',
'true' if c['address_type'] is not None else 'false',
'%d' % c['address_type'] if c['address_type'] is not None else '0',
'true' if c['maxfee_kb'] is not None else 'false',
'%d' % c['maxfee_kb'] if c['maxfee_kb'] is not None else '0',
'true' if c['address_type_p2sh'] is not None else 'false',
'%d' % c['address_type_p2sh'] if c['address_type_p2sh'] is not None else '0',
'true' if c['signed_message_header'] is not None else 'false',
'"\\x%02x" "%s"' % (len(c['signed_message_header']), c['signed_message_header'].replace('\n', '\\n')) if c['signed_message_header'] is not None else 'NULL',
'true' if c['xpub_magic'] is not None else 'false',
'0x%s' % c['xpub_magic'] if c['xpub_magic'] is not None else '00000000',
'true' if c['xprv_magic'] is not None else 'false',
'0x%s' % c['xprv_magic'] if c['xprv_magic'] is not None else '00000000',
'true' if c['segwit'] is not None else 'false',
'true' if c['segwit'] else 'false',
'true' if c['forkid'] is not None else 'false',
'%d' % c['forkid'] if c['forkid'] else '0'
])
for j in range(len(fields[0])):
l = max([len(x[j]) for x in fields]) + 1
for i in range(len(fields)):
if fields[i][j][0] in '0123456789':
fields[i][j] = (fields[i][j] + ',').rjust(l)
else:
fields[i][j] = (fields[i][j] + ',').ljust(l)
for row in fields:
print('\t{' + ' '.join(row) + ' },')