mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-22 14:28:07 +00:00
defs: update coin definitions
This commit is contained in:
parent
e0da01371b
commit
31fbb2b0a3
@ -29,7 +29,7 @@
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "bitcoincash:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "bitcoincash:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -29,7 +29,7 @@
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "bitcoingold:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -29,7 +29,7 @@
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "bitcoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "bitcoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 2.5,
|
||||
"blocktime_seconds": 150,
|
||||
"address_prefix": "bitcoinprivate:",
|
||||
"min_address_length": 35,
|
||||
"max_address_length": 95,
|
||||
|
@ -20,7 +20,7 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None)
|
||||
if types is not str:
|
||||
return False
|
||||
m = re.match(regex, val)
|
||||
if not m or m.string != val:
|
||||
if not m:
|
||||
return False
|
||||
# check choice
|
||||
if choice is not None:
|
||||
@ -34,13 +34,11 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None)
|
||||
|
||||
|
||||
def validate_coin(coin):
|
||||
assert check_type(coin['coin_name'], str)
|
||||
assert check_type(coin['coin_shortcut'], str)
|
||||
assert check_type(coin['coin_label'], str)
|
||||
assert check_type(coin['website'], str)
|
||||
assert check_type(coin['github'], str)
|
||||
assert not coin['website'].endswith('/')
|
||||
assert not coin['github'].endswith('/')
|
||||
assert check_type(coin['coin_name'], str, regex=r'^[A-Z]')
|
||||
assert check_type(coin['coin_shortcut'], str, regex=r'^[A-Zt][A-Z][A-Z]+$')
|
||||
assert check_type(coin['coin_label'], str, regex=r'^[A-Z]')
|
||||
assert check_type(coin['website'], str, regex=r'^http.*[^/]$')
|
||||
assert check_type(coin['github'], str, regex=r'^https://github.com/.*[^/]$')
|
||||
assert check_type(coin['maintainer'], str)
|
||||
assert check_type(coin['curve_name'], str, choice=['secp256k1', 'secp256k1_decred', 'secp256k1_groestl'])
|
||||
assert check_type(coin['address_type'], int)
|
||||
@ -49,10 +47,10 @@ def validate_coin(coin):
|
||||
assert check_type(coin['maxfee_kb'], int)
|
||||
assert check_type(coin['minfee_kb'], int)
|
||||
assert coin['maxfee_kb'] >= coin['minfee_kb']
|
||||
assert check_type(coin['hash_genesis_block'], str, regex=r'[0-9a-f]{64}')
|
||||
assert check_type(coin['xprv_magic'], str, regex=r'[0-9a-f]{8}')
|
||||
assert check_type(coin['xpub_magic'], str, regex=r'[0-9a-f]{8}')
|
||||
assert check_type(coin['xpub_magic_segwit_p2sh'], str, regex=r'[0-9a-f]{8}', nullable=True)
|
||||
assert check_type(coin['hash_genesis_block'], str, regex=r'^[0-9a-f]{64}$')
|
||||
assert check_type(coin['xprv_magic'], str, regex=r'^[0-9a-f]{8}$')
|
||||
assert check_type(coin['xpub_magic'], str, regex=r'^[0-9a-f]{8}$')
|
||||
assert check_type(coin['xpub_magic_segwit_p2sh'], str, regex=r'^[0-9a-f]{8}$', nullable=True)
|
||||
assert coin['xprv_magic'] != coin['xpub_magic']
|
||||
assert coin['xprv_magic'] != coin['xpub_magic_segwit_p2sh']
|
||||
assert coin['xpub_magic'] != coin['xpub_magic_segwit_p2sh']
|
||||
@ -60,11 +58,12 @@ def validate_coin(coin):
|
||||
assert check_type(coin['segwit'], bool)
|
||||
assert check_type(coin['decred'], bool)
|
||||
assert check_type(coin['forkid'], int, nullable=True)
|
||||
assert check_type(coin['force_bip143'], bool, nullable=True)
|
||||
assert check_type(coin['force_bip143'], bool)
|
||||
assert check_type(coin['default_fee_b'], dict)
|
||||
assert check_type(coin['dust_limit'], int)
|
||||
assert check_type(coin['blocktime_minutes'], [int, float])
|
||||
assert check_type(coin['blocktime_seconds'], int)
|
||||
assert check_type(coin['signed_message_header'], str)
|
||||
assert check_type(coin['address_prefix'], str, regex=r'^.*:$')
|
||||
assert check_type(coin['min_address_length'], int)
|
||||
assert check_type(coin['max_address_length'], int)
|
||||
assert coin['max_address_length'] >= coin['min_address_length']
|
||||
@ -76,8 +75,10 @@ def validate_coin(coin):
|
||||
|
||||
|
||||
def process_json(fn):
|
||||
print(fn, end=' ... ')
|
||||
j = json.load(open(fn))
|
||||
validate_coin(j)
|
||||
print('OK')
|
||||
return j
|
||||
|
||||
|
||||
@ -88,5 +89,3 @@ for fn in glob.glob('*.json'):
|
||||
coins[n] = c
|
||||
|
||||
json.dump(coins, open('../coins.json', 'w'), indent=4, sort_keys=True)
|
||||
|
||||
print('OK')
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 1,
|
||||
"blocktime_seconds": 60,
|
||||
"address_prefix": "crown:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 5460,
|
||||
"blocktime_minutes": 2.5,
|
||||
"blocktime_seconds": 150,
|
||||
"address_prefix": "dash:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 5460,
|
||||
"blocktime_minutes": 2.5,
|
||||
"blocktime_seconds": 150,
|
||||
"address_prefix": "dash:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "bitcoin:",
|
||||
"min_address_length": 35,
|
||||
"max_address_length": 35,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 54600,
|
||||
"blocktime_minutes": 0.5,
|
||||
"blocktime_seconds": 30,
|
||||
"address_prefix": "denarius:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -29,7 +29,7 @@
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 0.25,
|
||||
"blocktime_seconds": 15,
|
||||
"address_prefix": "digibyte:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 10000000,
|
||||
"blocktime_minutes": 1,
|
||||
"blocktime_seconds": 60,
|
||||
"address_prefix": "dogecoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 0
|
||||
},
|
||||
"dust_limit": 10000,
|
||||
"blocktime_minutes": 1,
|
||||
"blocktime_seconds": 60,
|
||||
"address_prefix": "flashcoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -29,7 +29,7 @@
|
||||
"High": 1000000
|
||||
},
|
||||
"dust_limit": 100000,
|
||||
"blocktime_minutes": 1.0,
|
||||
"blocktime_seconds": 60,
|
||||
"address_prefix": "fujicoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 1,
|
||||
"blocktime_seconds": 60,
|
||||
"address_prefix": "groestlcoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 1000
|
||||
},
|
||||
"dust_limit": 54600,
|
||||
"blocktime_minutes": 2.5,
|
||||
"blocktime_seconds": 150,
|
||||
"address_prefix": "litecoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 54600,
|
||||
"blocktime_minutes": 2.5,
|
||||
"blocktime_seconds": 150,
|
||||
"address_prefix": "litecoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 100000
|
||||
},
|
||||
"dust_limit": 54600,
|
||||
"blocktime_minutes": 1.5,
|
||||
"blocktime_seconds": 90,
|
||||
"address_prefix": "monacoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -29,7 +29,7 @@
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 1,
|
||||
"blocktime_seconds": 60,
|
||||
"address_prefix": "myriadcoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 2940,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "namecoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 5460,
|
||||
"blocktime_minutes": 2,
|
||||
"blocktime_seconds": 120,
|
||||
"address_prefix": "terracoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 1000
|
||||
},
|
||||
"dust_limit": 54600,
|
||||
"blocktime_minutes": 2.5,
|
||||
"blocktime_seconds": 150,
|
||||
"address_prefix": "vertcoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"coin_name": "viacoin",
|
||||
"coin_name": "Viacoin",
|
||||
"coin_shortcut": "VIA",
|
||||
"coin_label": "viacoin",
|
||||
"coin_label": "Viacoin",
|
||||
"website": "https://viacoin.org",
|
||||
"github": "https://github.com/viacoin",
|
||||
"maintainer": "romanornr <romanornr@gmail.com>",
|
||||
@ -29,7 +29,7 @@
|
||||
"High": 20000
|
||||
},
|
||||
"dust_limit": 54600,
|
||||
"blocktime_minutes": 0.4,
|
||||
"blocktime_seconds": 24,
|
||||
"address_prefix": "viacoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 2.5,
|
||||
"blocktime_seconds": 150,
|
||||
"address_prefix": "zcash:",
|
||||
"min_address_length": 35,
|
||||
"max_address_length": 95,
|
||||
|
@ -26,7 +26,7 @@
|
||||
"Normal": 10
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 2.5,
|
||||
"blocktime_seconds": 150,
|
||||
"address_prefix": "zcash:",
|
||||
"min_address_length": 35,
|
||||
"max_address_length": 95,
|
||||
|
@ -29,7 +29,7 @@
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "zcoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
|
@ -29,7 +29,7 @@
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_minutes": 10,
|
||||
"blocktime_seconds": 600,
|
||||
"address_prefix": "testzcoin:",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 35,
|
||||
|
Loading…
Reference in New Issue
Block a user