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/core/src/apps/common/coininfo.py

1694 lines
65 KiB

# generated from coininfo.py.mako
# (by running `make templates` in `core`)
# do not edit manually!
# NOTE: using positional arguments saves 4500 bytes of flash size
from typing import Any
from trezor import utils
from trezor.crypto.base58 import blake256d_32, groestl512d_32, keccak_32, sha256d_32
from trezor.crypto.scripts import blake256_ripemd160, sha256_ripemd160
# flake8: noqa
class CoinInfo:
def __init__(
self,
coin_name: str,
coin_shortcut: str,
decimals: int,
address_type: int,
address_type_p2sh: int,
maxfee_kb: int,
signed_message_header: str,
xpub_magic: int,
xpub_magic_segwit_p2sh: int | None,
xpub_magic_segwit_native: int | None,
xpub_magic_multisig_segwit_p2sh: int | None,
xpub_magic_multisig_segwit_native: int | None,
bech32_prefix: str | None,
cashaddr_prefix: str | None,
slip44: int,
segwit: bool,
taproot: bool,
fork_id: int | None,
force_bip143: bool,
decred: bool,
negative_fee: bool,
curve_name: str,
extra_data: bool,
timestamp: bool,
overwintered: bool,
confidential_assets: dict[str, Any] | None,
) -> None:
self.coin_name = coin_name
self.coin_shortcut = coin_shortcut
self.decimals = decimals
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.xpub_magic_segwit_p2sh = xpub_magic_segwit_p2sh
self.xpub_magic_segwit_native = xpub_magic_segwit_native
self.xpub_magic_multisig_segwit_p2sh = xpub_magic_multisig_segwit_p2sh
self.xpub_magic_multisig_segwit_native = xpub_magic_multisig_segwit_native
self.bech32_prefix = bech32_prefix
self.cashaddr_prefix = cashaddr_prefix
self.slip44 = slip44
self.segwit = segwit
self.taproot = taproot
self.fork_id = fork_id
self.force_bip143 = force_bip143
self.decred = decred
self.negative_fee = negative_fee
self.curve_name = curve_name
self.extra_data = extra_data
self.timestamp = timestamp
self.overwintered = overwintered
self.confidential_assets = confidential_assets
if curve_name == "secp256k1-groestl":
self.b58_hash = groestl512d_32
self.sign_hash_double = False
self.script_hash: type[utils.HashContextInitable] = sha256_ripemd160
elif curve_name == "secp256k1-decred":
self.b58_hash = blake256d_32
self.sign_hash_double = False
self.script_hash = blake256_ripemd160
elif curve_name == "secp256k1-smart":
self.b58_hash = keccak_32
self.sign_hash_double = False
self.script_hash = sha256_ripemd160
else:
self.b58_hash = sha256d_32
self.sign_hash_double = True
self.script_hash = sha256_ripemd160
def __eq__(self, other: Any) -> bool:
if not isinstance(other, CoinInfo):
return NotImplemented
return self.coin_name == other.coin_name
# fmt: off
def by_name(name: str) -> CoinInfo:
if name == "Bitcoin":
return CoinInfo(
name, # coin_name
"BTC", # coin_shortcut
8, # decimals
0, # address_type
5, # address_type_p2sh
2000000, # maxfee_kb
"Bitcoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0295b43f, # xpub_magic_multisig_segwit_p2sh
0x02aa7ed3, # xpub_magic_multisig_segwit_native
"bc", # bech32_prefix
None, # cashaddr_prefix
0, # slip44
True, # segwit
True, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Regtest":
return CoinInfo(
name, # coin_name
"REGTEST", # coin_shortcut
8, # decimals
111, # address_type
196, # address_type_p2sh
10000000, # maxfee_kb
"Bitcoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
0x044a5262, # xpub_magic_segwit_p2sh
0x045f1cf6, # xpub_magic_segwit_native
0x024289ef, # xpub_magic_multisig_segwit_p2sh
0x02575483, # xpub_magic_multisig_segwit_native
"bcrt", # bech32_prefix
None, # cashaddr_prefix
1, # slip44
True, # segwit
True, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Testnet":
return CoinInfo(
name, # coin_name
"TEST", # coin_shortcut
8, # decimals
111, # address_type
196, # address_type_p2sh
10000000, # maxfee_kb
"Bitcoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
0x044a5262, # xpub_magic_segwit_p2sh
0x045f1cf6, # xpub_magic_segwit_native
0x024289ef, # xpub_magic_multisig_segwit_p2sh
0x02575483, # xpub_magic_multisig_segwit_native
"tb", # bech32_prefix
None, # cashaddr_prefix
1, # slip44
True, # segwit
True, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if not utils.BITCOIN_ONLY:
if name == "Actinium":
return CoinInfo(
name, # coin_name
"ACM", # coin_shortcut
8, # decimals
53, # address_type
55, # address_type_p2sh
320000000000, # maxfee_kb
"Actinium Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"acm", # bech32_prefix
None, # cashaddr_prefix
228, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Axe":
return CoinInfo(
name, # coin_name
"AXE", # coin_shortcut
8, # decimals
55, # address_type
16, # address_type_p2sh
21000000000, # maxfee_kb
"DarkCoin Signed Message:\n", # signed_message_header
0x02fe52cc, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
4242, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Bcash":
return CoinInfo(
name, # coin_name
"BCH", # coin_shortcut
8, # decimals
0, # address_type
5, # address_type_p2sh
14000000, # maxfee_kb
"Bitcoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
"bitcoincash", # cashaddr_prefix
145, # slip44
False, # segwit
False, # taproot
0, # fork_id
True, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Bcash Testnet":
return CoinInfo(
name, # coin_name
"TBCH", # coin_shortcut
8, # decimals
111, # address_type
196, # address_type_p2sh
10000000, # maxfee_kb
"Bitcoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
"bchtest", # cashaddr_prefix
1, # slip44
False, # segwit
False, # taproot
0, # fork_id
True, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Bgold":
return CoinInfo(
name, # coin_name
"BTG", # coin_shortcut
8, # decimals
38, # address_type
23, # address_type_p2sh
380000000, # maxfee_kb
"Bitcoin Gold Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"btg", # bech32_prefix
None, # cashaddr_prefix
156, # slip44
True, # segwit
False, # taproot
79, # fork_id
True, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Bgold Testnet":
return CoinInfo(
name, # coin_name
"TBTG", # coin_shortcut
8, # decimals
111, # address_type
196, # address_type_p2sh
500000, # maxfee_kb
"Bitcoin Gold Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
0x044a5262, # xpub_magic_segwit_p2sh
0x045f1cf6, # xpub_magic_segwit_native
0x043587cf, # xpub_magic_multisig_segwit_p2sh
0x043587cf, # xpub_magic_multisig_segwit_native
"tbtg", # bech32_prefix
None, # cashaddr_prefix
1, # slip44
True, # segwit
False, # taproot
79, # fork_id
True, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Bprivate":
return CoinInfo(
name, # coin_name
"BTCP", # coin_shortcut
8, # decimals
4901, # address_type
5039, # address_type_p2sh
32000000000, # maxfee_kb
"BitcoinPrivate Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
183, # slip44
False, # segwit
False, # taproot
42, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Bitcore":
return CoinInfo(
name, # coin_name
"BTX", # coin_shortcut
8, # decimals
3, # address_type
125, # address_type_p2sh
14000000000, # maxfee_kb
"BitCore Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"btx", # bech32_prefix
None, # cashaddr_prefix
160, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "CPUchain":
return CoinInfo(
name, # coin_name
"CPU", # coin_shortcut
8, # decimals
28, # address_type
30, # address_type_p2sh
8700000000000, # maxfee_kb
"CPUchain Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"cpu", # bech32_prefix
None, # cashaddr_prefix
363, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Crown":
return CoinInfo(
name, # coin_name
"CRW", # coin_shortcut
8, # decimals
95495, # address_type
95473, # address_type_p2sh
52000000000, # maxfee_kb
"Crown Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
72, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Dash":
return CoinInfo(
name, # coin_name
"DASH", # coin_shortcut
8, # decimals
76, # address_type
16, # address_type_p2sh
45000000, # maxfee_kb
"DarkCoin Signed Message:\n", # signed_message_header
0x02fe52cc, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
5, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Dash Testnet":
return CoinInfo(
name, # coin_name
"tDASH", # coin_shortcut
8, # decimals
140, # address_type
19, # address_type_p2sh
100000, # maxfee_kb
"DarkCoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
1, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Decred":
return CoinInfo(
name, # coin_name
"DCR", # coin_shortcut
8, # decimals
1855, # address_type
1818, # address_type_p2sh
220000000, # maxfee_kb
"Decred Signed Message:\n", # signed_message_header
0x02fda926, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
42, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
True, # decred
False, # negative_fee
'secp256k1-decred', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Decred Testnet":
return CoinInfo(
name, # coin_name
"TDCR", # coin_shortcut
8, # decimals
3873, # address_type
3836, # address_type_p2sh
10000000, # maxfee_kb
"Decred Signed Message:\n", # signed_message_header
0x043587d1, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
1, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
True, # decred
False, # negative_fee
'secp256k1-decred', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "DigiByte":
return CoinInfo(
name, # coin_name
"DGB", # coin_shortcut
8, # decimals
30, # address_type
63, # address_type_p2sh
130000000000, # maxfee_kb
"DigiByte Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"dgb", # bech32_prefix
None, # cashaddr_prefix
20, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Dogecoin":
return CoinInfo(
name, # coin_name
"DOGE", # coin_shortcut
8, # decimals
30, # address_type
22, # address_type_p2sh
1200000000000, # maxfee_kb
"Dogecoin Signed Message:\n", # signed_message_header
0x02facafd, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
3, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Elements":
return CoinInfo(
name, # coin_name
"ELEMENTS", # coin_shortcut
8, # decimals
235, # address_type
75, # address_type_p2sh
10000000, # maxfee_kb
"Bitcoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
0x044a5262, # xpub_magic_segwit_p2sh
0x045f1cf6, # xpub_magic_segwit_native
0x043587cf, # xpub_magic_multisig_segwit_p2sh
0x043587cf, # xpub_magic_multisig_segwit_native
"ert", # bech32_prefix
None, # cashaddr_prefix
1, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
{'address_prefix': 4, 'blech32_prefix': 'el'}, # confidential_assets
)
if name == "Feathercoin":
return CoinInfo(
name, # coin_name
"FTC", # coin_shortcut
8, # decimals
14, # address_type
5, # address_type_p2sh
390000000000, # maxfee_kb
"Feathercoin Signed Message:\n", # signed_message_header
0x0488bc26, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488bc26, # xpub_magic_multisig_segwit_p2sh
0x0488bc26, # xpub_magic_multisig_segwit_native
"fc", # bech32_prefix
None, # cashaddr_prefix
8, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Firo":
return CoinInfo(
name, # coin_name
"FIRO", # coin_shortcut
8, # decimals
82, # address_type
7, # address_type_p2sh
640000000, # maxfee_kb
"Zcoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
136, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Firo Testnet":
return CoinInfo(
name, # coin_name
"tFIRO", # coin_shortcut
8, # decimals
65, # address_type
178, # address_type_p2sh
1000000, # maxfee_kb
"Zcoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
1, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Florincoin":
return CoinInfo(
name, # coin_name
"FLO", # coin_shortcut
8, # decimals
35, # address_type
94, # address_type_p2sh
78000000000, # maxfee_kb
"Florincoin Signed Message:\n", # signed_message_header
0x00174921, # xpub_magic
0x01b26ef6, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x00174921, # xpub_magic_multisig_segwit_p2sh
0x00174921, # xpub_magic_multisig_segwit_native
"flo", # bech32_prefix
None, # cashaddr_prefix
216, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Fujicoin":
return CoinInfo(
name, # coin_name
"FJC", # coin_shortcut
8, # decimals
36, # address_type
16, # address_type_p2sh
35000000000000, # maxfee_kb
"FujiCoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0295b43f, # xpub_magic_multisig_segwit_p2sh
0x02aa7ed3, # xpub_magic_multisig_segwit_native
"fc", # bech32_prefix
None, # cashaddr_prefix
75, # slip44
True, # segwit
True, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Groestlcoin":
return CoinInfo(
name, # coin_name
"GRS", # coin_shortcut
8, # decimals
36, # address_type
5, # address_type_p2sh
16000000000, # maxfee_kb
"GroestlCoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"grs", # bech32_prefix
None, # cashaddr_prefix
17, # slip44
True, # segwit
True, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1-groestl', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Groestlcoin Testnet":
return CoinInfo(
name, # coin_name
"tGRS", # coin_shortcut
8, # decimals
111, # address_type
196, # address_type_p2sh
100000, # maxfee_kb
"GroestlCoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
0x044a5262, # xpub_magic_segwit_p2sh
0x045f1cf6, # xpub_magic_segwit_native
0x043587cf, # xpub_magic_multisig_segwit_p2sh
0x043587cf, # xpub_magic_multisig_segwit_native
"tgrs", # bech32_prefix
None, # cashaddr_prefix
1, # slip44
True, # segwit
True, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1-groestl', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Komodo":
return CoinInfo(
name, # coin_name
"KMD", # coin_shortcut
8, # decimals
60, # address_type
85, # address_type_p2sh
4800000000, # maxfee_kb
"Komodo Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
141, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
True, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
True, # overwintered
None, # confidential_assets
)
if name == "Koto":
return CoinInfo(
name, # coin_name
"KOTO", # coin_shortcut
8, # decimals
6198, # address_type
6203, # address_type_p2sh
1000000, # maxfee_kb
"Koto Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
510, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
True, # overwintered
None, # confidential_assets
)
if name == "Litecoin":
return CoinInfo(
name, # coin_name
"LTC", # coin_shortcut
8, # decimals
48, # address_type
50, # address_type_p2sh
67000000, # maxfee_kb
"Litecoin Signed Message:\n", # signed_message_header
0x019da462, # xpub_magic
0x01b26ef6, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x019da462, # xpub_magic_multisig_segwit_p2sh
0x019da462, # xpub_magic_multisig_segwit_native
"ltc", # bech32_prefix
None, # cashaddr_prefix
2, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Litecoin Testnet":
return CoinInfo(
name, # coin_name
"tLTC", # coin_shortcut
8, # decimals
111, # address_type
58, # address_type_p2sh
40000000, # maxfee_kb
"Litecoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
0x044a5262, # xpub_magic_segwit_p2sh
0x045f1cf6, # xpub_magic_segwit_native
0x043587cf, # xpub_magic_multisig_segwit_p2sh
0x043587cf, # xpub_magic_multisig_segwit_native
"tltc", # bech32_prefix
None, # cashaddr_prefix
1, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Monacoin":
return CoinInfo(
name, # coin_name
"MONA", # coin_shortcut
8, # decimals
50, # address_type
55, # address_type_p2sh
2100000000, # maxfee_kb
"Monacoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"mona", # bech32_prefix
None, # cashaddr_prefix
22, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "MonetaryUnit":
return CoinInfo(
name, # coin_name
"MUE", # coin_shortcut
8, # decimals
16, # address_type
76, # address_type_p2sh
600000000000, # maxfee_kb
"MonetaryUnit Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
31, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Namecoin":
return CoinInfo(
name, # coin_name
"NMC", # coin_shortcut
8, # decimals
52, # address_type
5, # address_type_p2sh
8700000000, # maxfee_kb
"Namecoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
7, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Peercoin":
return CoinInfo(
name, # coin_name
"PPC", # coin_shortcut
6, # decimals
55, # address_type
117, # address_type_p2sh
13000000000, # maxfee_kb
"Peercoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"pc", # bech32_prefix
None, # cashaddr_prefix
6, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
True, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Peercoin Testnet":
return CoinInfo(
name, # coin_name
"tPPC", # coin_shortcut
6, # decimals
111, # address_type
196, # address_type_p2sh
2000000, # maxfee_kb
"Peercoin Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
0x044a5262, # xpub_magic_segwit_p2sh
0x045f1cf6, # xpub_magic_segwit_native
0x043587cf, # xpub_magic_multisig_segwit_p2sh
0x043587cf, # xpub_magic_multisig_segwit_native
"tpc", # bech32_prefix
None, # cashaddr_prefix
1, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
True, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Primecoin":
return CoinInfo(
name, # coin_name
"XPM", # coin_shortcut
8, # decimals
23, # address_type
83, # address_type_p2sh
89000000000, # maxfee_kb
"Primecoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
24, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Qtum":
return CoinInfo(
name, # coin_name
"QTUM", # coin_shortcut
8, # decimals
58, # address_type
50, # address_type_p2sh
1000000000, # maxfee_kb
"Qtum Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"qc", # bech32_prefix
None, # cashaddr_prefix
2301, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Qtum Testnet":
return CoinInfo(
name, # coin_name
"tQTUM", # coin_shortcut
8, # decimals
120, # address_type
110, # address_type_p2sh
40000000, # maxfee_kb
"Qtum Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
0x044a5262, # xpub_magic_segwit_p2sh
0x045f1cf6, # xpub_magic_segwit_native
0x043587cf, # xpub_magic_multisig_segwit_p2sh
0x043587cf, # xpub_magic_multisig_segwit_native
"tq", # bech32_prefix
None, # cashaddr_prefix
1, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Ravencoin":
return CoinInfo(
name, # coin_name
"RVN", # coin_shortcut
8, # decimals
60, # address_type
122, # address_type_p2sh
170000000000, # maxfee_kb
"Raven Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
175, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Ravencoin Testnet":
return CoinInfo(
name, # coin_name
"tRVN", # coin_shortcut
8, # decimals
111, # address_type
196, # address_type_p2sh
170000000000, # maxfee_kb
"Raven Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
1, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Ritocoin":
return CoinInfo(
name, # coin_name
"RITO", # coin_shortcut
8, # decimals
25, # address_type
105, # address_type_p2sh
39000000000000, # maxfee_kb
"Rito Signed Message:\n", # signed_message_header
0x0534e7ca, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
19169, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "SmartCash":
return CoinInfo(
name, # coin_name
"SMART", # coin_shortcut
8, # decimals
63, # address_type
18, # address_type_p2sh
780000000000, # maxfee_kb
"SmartCash Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
224, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1-smart', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "SmartCash Testnet":
return CoinInfo(
name, # coin_name
"tSMART", # coin_shortcut
8, # decimals
65, # address_type
21, # address_type_p2sh
1000000, # maxfee_kb
"SmartCash Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
1, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1-smart', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Stakenet":
return CoinInfo(
name, # coin_name
"XSN", # coin_shortcut
8, # decimals
76, # address_type
16, # address_type_p2sh
11000000000, # maxfee_kb
"DarkCoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"xc", # bech32_prefix
None, # cashaddr_prefix
199, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Syscoin":
return CoinInfo(
name, # coin_name
"SYS", # coin_shortcut
8, # decimals
63, # address_type
5, # address_type_p2sh
42000000000, # maxfee_kb
"Syscoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"sys", # bech32_prefix
None, # cashaddr_prefix
57, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Unobtanium":
return CoinInfo(
name, # coin_name
"UNO", # coin_shortcut
8, # decimals
130, # address_type
30, # address_type_p2sh
53000000, # maxfee_kb
"Unobtanium Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
92, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "VIPSTARCOIN":
return CoinInfo(
name, # coin_name
"VIPS", # coin_shortcut
8, # decimals
70, # address_type
50, # address_type_p2sh
140000000000000, # maxfee_kb
"VIPSTARCOIN Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"vips", # bech32_prefix
None, # cashaddr_prefix
1919, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Verge":
return CoinInfo(
name, # coin_name
"XVG", # coin_shortcut
6, # decimals
30, # address_type
33, # address_type_p2sh
550000000000, # maxfee_kb
"Name: Dogecoin Dark\n", # signed_message_header
0x022d2533, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
77, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
True, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Vertcoin":
return CoinInfo(
name, # coin_name
"VTC", # coin_shortcut
8, # decimals
71, # address_type
5, # address_type_p2sh
13000000000, # maxfee_kb
"Vertcoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"vtc", # bech32_prefix
None, # cashaddr_prefix
28, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Viacoin":
return CoinInfo(
name, # coin_name
"VIA", # coin_shortcut
8, # decimals
71, # address_type
33, # address_type_p2sh
14000000000, # maxfee_kb
"Viacoin Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
0x049d7cb2, # xpub_magic_segwit_p2sh
0x04b24746, # xpub_magic_segwit_native
0x0488b21e, # xpub_magic_multisig_segwit_p2sh
0x0488b21e, # xpub_magic_multisig_segwit_native
"via", # bech32_prefix
None, # cashaddr_prefix
14, # slip44
True, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "ZCore":
return CoinInfo(
name, # coin_name
"ZCR", # coin_shortcut
8, # decimals
142, # address_type
145, # address_type_p2sh
170000000000, # maxfee_kb
"DarkNet Signed Message:\n", # signed_message_header
0x04b24746, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
428, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
if name == "Zcash":
return CoinInfo(
name, # coin_name
"ZEC", # coin_shortcut
8, # decimals
7352, # address_type
7357, # address_type_p2sh
51000000, # maxfee_kb
"Zcash Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
133, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
True, # overwintered
None, # confidential_assets
)
if name == "Zcash Testnet":
return CoinInfo(
name, # coin_name
"TAZ", # coin_shortcut
8, # decimals
7461, # address_type
7354, # address_type_p2sh
10000000, # maxfee_kb
"Zcash Signed Message:\n", # signed_message_header
0x043587cf, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
1, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
True, # extra_data
False, # timestamp
True, # overwintered
None, # confidential_assets
)
if name == "Brhodium":
return CoinInfo(
name, # coin_name
"XRC", # coin_shortcut
8, # decimals
61, # address_type
123, # address_type_p2sh
1000000000, # maxfee_kb
"BitCoin Rhodium Signed Message:\n", # signed_message_header
0x0488b21e, # xpub_magic
None, # xpub_magic_segwit_p2sh
None, # xpub_magic_segwit_native
None, # xpub_magic_multisig_segwit_p2sh
None, # xpub_magic_multisig_segwit_native
None, # bech32_prefix
None, # cashaddr_prefix
10291, # slip44
False, # segwit
False, # taproot
None, # fork_id
False, # force_bip143
False, # decred
False, # negative_fee
'secp256k1', # curve_name
False, # extra_data
False, # timestamp
False, # overwintered
None, # confidential_assets
)
raise ValueError # Unknown coin name