diff --git a/common/defs/bitcoin/actinium.json b/common/defs/bitcoin/actinium.json index 66f7747c2..6408a3812 100644 --- a/common/defs/bitcoin/actinium.json +++ b/common/defs/bitcoin/actinium.json @@ -6,6 +6,7 @@ "github": "https://github.com/Actinium-project/Actinium", "maintainer": "Harris Brakmic ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 53, "address_type_p2sh": 55, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/axe.json b/common/defs/bitcoin/axe.json index f01cd9b0d..4462b44de 100644 --- a/common/defs/bitcoin/axe.json +++ b/common/defs/bitcoin/axe.json @@ -6,6 +6,7 @@ "github": "https://github.com/axerunners/axe", "maintainer": "Kirill Orlov ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 55, "address_type_p2sh": 16, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/bcash.json b/common/defs/bitcoin/bcash.json index 1a647036b..3a6342403 100644 --- a/common/defs/bitcoin/bcash.json +++ b/common/defs/bitcoin/bcash.json @@ -6,6 +6,7 @@ "github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 500000, diff --git a/common/defs/bitcoin/bcash_testnet.json b/common/defs/bitcoin/bcash_testnet.json index 661163f16..3076f8c23 100644 --- a/common/defs/bitcoin/bcash_testnet.json +++ b/common/defs/bitcoin/bcash_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/bellcoin.json b/common/defs/bitcoin/bellcoin.json index 2c27acad7..7275f468a 100644 --- a/common/defs/bitcoin/bellcoin.json +++ b/common/defs/bitcoin/bellcoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/bellcoin-org/bellcoin", "maintainer": "ilmango-doge ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 25, "address_type_p2sh": 85, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/bgold.json b/common/defs/bitcoin/bgold.json index 0910f6d5c..fc06a5515 100644 --- a/common/defs/bitcoin/bgold.json +++ b/common/defs/bitcoin/bgold.json @@ -6,6 +6,7 @@ "github": "https://github.com/BTCGPU/BTCGPU", "maintainer": "Saleem Rashid ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 38, "address_type_p2sh": 23, "maxfee_kb": 500000, diff --git a/common/defs/bitcoin/bgold_testnet.json b/common/defs/bitcoin/bgold_testnet.json index 45e6c1db7..9f77dc17b 100644 --- a/common/defs/bitcoin/bgold_testnet.json +++ b/common/defs/bitcoin/bgold_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/BTCGPU/BTCGPU", "maintainer": "The Bitcoin Gold Developers ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 500000, diff --git a/common/defs/bitcoin/bitcoin.json b/common/defs/bitcoin/bitcoin.json index 9bde42a7f..d611cf00f 100644 --- a/common/defs/bitcoin/bitcoin.json +++ b/common/defs/bitcoin/bitcoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/bitcoin/bitcoin", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/bitcoin_regtest.json b/common/defs/bitcoin/bitcoin_regtest.json index 12e1961b5..c1a8860c7 100644 --- a/common/defs/bitcoin/bitcoin_regtest.json +++ b/common/defs/bitcoin/bitcoin_regtest.json @@ -6,6 +6,7 @@ "github": "https://github.com/bitcoin/bitcoin", "maintainer": "Thomas Kerin ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/bitcoin_testnet.json b/common/defs/bitcoin/bitcoin_testnet.json index 19401bb2a..b9520e2d0 100644 --- a/common/defs/bitcoin/bitcoin_testnet.json +++ b/common/defs/bitcoin/bitcoin_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/bitcoin/bitcoin", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/bitcore.json b/common/defs/bitcoin/bitcore.json index 3dc0a7422..c30a5c907 100644 --- a/common/defs/bitcoin/bitcore.json +++ b/common/defs/bitcoin/bitcore.json @@ -6,6 +6,7 @@ "github": "https://github.com/LIMXTEC/BitCore", "maintainer": "limxdev ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 3, "address_type_p2sh": 125, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/bitgreen.json b/common/defs/bitcoin/bitgreen.json index a67567ee2..ebb70f9b3 100644 --- a/common/defs/bitcoin/bitgreen.json +++ b/common/defs/bitcoin/bitgreen.json @@ -6,6 +6,7 @@ "github": "https://github.com/bitgreen/bitgreen", "maintainer": "Dennis R ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 38, "address_type_p2sh": 6, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/bitzeny.json b/common/defs/bitcoin/bitzeny.json index 6426d49a2..a8a928097 100644 --- a/common/defs/bitcoin/bitzeny.json +++ b/common/defs/bitcoin/bitzeny.json @@ -6,6 +6,7 @@ "github": "https://github.com/BitzenyCoreDevelopers/bitzeny", "maintainer": "y-chan ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 81, "address_type_p2sh": 5, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/blockstamp.json b/common/defs/bitcoin/blockstamp.json index b72ccc597..d733c9a5f 100644 --- a/common/defs/bitcoin/blockstamp.json +++ b/common/defs/bitcoin/blockstamp.json @@ -6,6 +6,7 @@ "github": "https://github.com/BlockStamp/bst", "maintainer": "Krzysztof Kuchta ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 26, "address_type_p2sh": 5, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/bprivate.json b/common/defs/bitcoin/bprivate.json index 2bae87900..fe71c5181 100644 --- a/common/defs/bitcoin/bprivate.json +++ b/common/defs/bitcoin/bprivate.json @@ -6,6 +6,7 @@ "github": "https://github.com/BTCPrivate/BitcoinPrivate", "maintainer": "Chris Sulmone ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 4901, "address_type_p2sh": 5039, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/brhodium.json b/common/defs/bitcoin/brhodium.json index a7cde7a25..73302a583 100644 --- a/common/defs/bitcoin/brhodium.json +++ b/common/defs/bitcoin/brhodium.json @@ -6,6 +6,7 @@ "github": "https://gitlab.com/bitcoinrh/BRhodiumNode", "maintainer": "baff5b ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 61, "address_type_p2sh": 123, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/capricoin.json b/common/defs/bitcoin/capricoin.json index b72b29371..39843bf09 100644 --- a/common/defs/bitcoin/capricoin.json +++ b/common/defs/bitcoin/capricoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/Capricoinofficial/Capricoin", "maintainer": "Jozef Knaperek ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 28, "address_type_p2sh": 35, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/cpuchain.json b/common/defs/bitcoin/cpuchain.json index 89e8ac21f..90c594cde 100644 --- a/common/defs/bitcoin/cpuchain.json +++ b/common/defs/bitcoin/cpuchain.json @@ -6,6 +6,7 @@ "github": "https://github.com/cpuchain/cpuchain", "maintainer": "Min Khang Aung ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 28, "address_type_p2sh": 30, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/crown.json b/common/defs/bitcoin/crown.json index 3591a1e9a..ff748ed19 100644 --- a/common/defs/bitcoin/crown.json +++ b/common/defs/bitcoin/crown.json @@ -6,6 +6,7 @@ "github": "https://github.com/Crowndev/crowncoin", "maintainer": "Ashot ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 95495, "address_type_p2sh": 95473, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/dash.json b/common/defs/bitcoin/dash.json index e1da435b0..5e9d0eb7c 100644 --- a/common/defs/bitcoin/dash.json +++ b/common/defs/bitcoin/dash.json @@ -6,6 +6,7 @@ "github": "https://github.com/dashpay/dash", "maintainer": "Karel Bilek ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 76, "address_type_p2sh": 16, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/dash_testnet.json b/common/defs/bitcoin/dash_testnet.json index 5f8dc22b2..09b21db66 100644 --- a/common/defs/bitcoin/dash_testnet.json +++ b/common/defs/bitcoin/dash_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/dashpay/dash", "maintainer": "Karel Bilek ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 140, "address_type_p2sh": 19, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/decred.json b/common/defs/bitcoin/decred.json index 2b337322b..65bf5e6f0 100644 --- a/common/defs/bitcoin/decred.json +++ b/common/defs/bitcoin/decred.json @@ -6,6 +6,7 @@ "github": "https://github.com/decred/dcrd", "maintainer": "Alex Yocom-Piatt ", "curve_name": "secp256k1_decred", + "divisibility": 8, "address_type": 1855, "address_type_p2sh": 1818, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/decred_testnet.json b/common/defs/bitcoin/decred_testnet.json index a236ddaac..65380fc26 100644 --- a/common/defs/bitcoin/decred_testnet.json +++ b/common/defs/bitcoin/decred_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/decred/dcrd", "maintainer": "Saleem Rashid ", "curve_name": "secp256k1_decred", + "divisibility": 8, "address_type": 3873, "address_type_p2sh": 3836, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/digibyte.json b/common/defs/bitcoin/digibyte.json index de19fcaf0..ed1a9e5ed 100644 --- a/common/defs/bitcoin/digibyte.json +++ b/common/defs/bitcoin/digibyte.json @@ -6,6 +6,7 @@ "github": "https://github.com/digibyte/digibyte", "maintainer": "DigiByte ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 30, "address_type_p2sh": 63, "maxfee_kb": 500000, diff --git a/common/defs/bitcoin/dogecoin.json b/common/defs/bitcoin/dogecoin.json index 03185e110..33f477bbb 100644 --- a/common/defs/bitcoin/dogecoin.json +++ b/common/defs/bitcoin/dogecoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/dogecoin/dogecoin", "maintainer": "Karel Bilek ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 30, "address_type_p2sh": 22, "maxfee_kb": 1000000000, diff --git a/common/defs/bitcoin/elements.json b/common/defs/bitcoin/elements.json index eca375089..82a861671 100644 --- a/common/defs/bitcoin/elements.json +++ b/common/defs/bitcoin/elements.json @@ -6,6 +6,7 @@ "github": "https://github.com/ElementsProject/elements", "maintainer": "Roman Zeyde ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 235, "address_type_p2sh": 75, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/etp.json b/common/defs/bitcoin/etp.json index a7fdc994d..5ef3c6a62 100644 --- a/common/defs/bitcoin/etp.json +++ b/common/defs/bitcoin/etp.json @@ -6,6 +6,7 @@ "github": "https://github.com/mvs-org/metaverse", "maintainer": "Sven Mutzl ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 50, "address_type_p2sh": 5, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/faircoin.json b/common/defs/bitcoin/faircoin.json index 8f0e4d20f..33f4ae459 100644 --- a/common/defs/bitcoin/faircoin.json +++ b/common/defs/bitcoin/faircoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/faircoin/faircoin", "maintainer": "Santi NoreƱa ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 95, "address_type_p2sh": 36, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/feathercoin.json b/common/defs/bitcoin/feathercoin.json index 429e39be7..dd373adc8 100644 --- a/common/defs/bitcoin/feathercoin.json +++ b/common/defs/bitcoin/feathercoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/FeatherCoin/Feathercoin", "maintainer": "Lucas Betschart ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 14, "address_type_p2sh": 5, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/florincoin.json b/common/defs/bitcoin/florincoin.json index 4873ccbd2..5ad1cb272 100644 --- a/common/defs/bitcoin/florincoin.json +++ b/common/defs/bitcoin/florincoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/floblockchain/flo", "maintainer": "Robert English ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 35, "address_type_p2sh": 94, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/fujicoin.json b/common/defs/bitcoin/fujicoin.json index 6f57bc4e8..28c4f28fd 100644 --- a/common/defs/bitcoin/fujicoin.json +++ b/common/defs/bitcoin/fujicoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/fujicoin/fujicoin", "maintainer": "motty ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 36, "address_type_p2sh": 16, "maxfee_kb": 1000000000, diff --git a/common/defs/bitcoin/gamecredits.json b/common/defs/bitcoin/gamecredits.json index 935aac065..24c5c2e6c 100644 --- a/common/defs/bitcoin/gamecredits.json +++ b/common/defs/bitcoin/gamecredits.json @@ -6,6 +6,7 @@ "github": "https://github.com/gamecredits-project/gamecredits", "maintainer": "Samad Sajanlal ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 38, "address_type_p2sh": 62, "maxfee_kb": 5000000, diff --git a/common/defs/bitcoin/gincoin.json b/common/defs/bitcoin/gincoin.json index e17adad7b..d87dc8318 100644 --- a/common/defs/bitcoin/gincoin.json +++ b/common/defs/bitcoin/gincoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/gincoin-dev/gincoin-core", "maintainer": "Dragos Badea ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 38, "address_type_p2sh": 10, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/groestlcoin.json b/common/defs/bitcoin/groestlcoin.json index 107cd4bd3..112f54596 100644 --- a/common/defs/bitcoin/groestlcoin.json +++ b/common/defs/bitcoin/groestlcoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/Groestlcoin/groestlcoin", "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1_groestl", + "divisibility": 8, "address_type": 36, "address_type_p2sh": 5, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/groestlcoin_testnet.json b/common/defs/bitcoin/groestlcoin_testnet.json index 698fa76eb..d80064f83 100644 --- a/common/defs/bitcoin/groestlcoin_testnet.json +++ b/common/defs/bitcoin/groestlcoin_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/Groestlcoin/groestlcoin", "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1_groestl", + "divisibility": 8, "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/hatch.json b/common/defs/bitcoin/hatch.json index fd9037e2b..47c55bb5f 100644 --- a/common/defs/bitcoin/hatch.json +++ b/common/defs/bitcoin/hatch.json @@ -6,6 +6,7 @@ "github": "https://github.com/hatchpay/hatch", "maintainer": "Hatch Support ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 76, "address_type_p2sh": 16, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/hatch_testnet.json b/common/defs/bitcoin/hatch_testnet.json index d1b765d50..68b666d0c 100644 --- a/common/defs/bitcoin/hatch_testnet.json +++ b/common/defs/bitcoin/hatch_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/hatchpay/hatch", "maintainer": "Hatch Support ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 140, "address_type_p2sh": 19, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/horizen.json b/common/defs/bitcoin/horizen.json index 9ca1f789c..12b8c689f 100644 --- a/common/defs/bitcoin/horizen.json +++ b/common/defs/bitcoin/horizen.json @@ -6,6 +6,7 @@ "github": "https://github.com/ZencashOfficial/zen", "maintainer": "Power_VANO ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 8329, "address_type_p2sh": 8342, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/komodo.json b/common/defs/bitcoin/komodo.json index 21ede3c1d..e6e49b277 100644 --- a/common/defs/bitcoin/komodo.json +++ b/common/defs/bitcoin/komodo.json @@ -6,6 +6,7 @@ "github": "https://github.com/komodoplatform/komodo", "maintainer": "Kadan Stadelmann ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 60, "address_type_p2sh": 85, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/koto.json b/common/defs/bitcoin/koto.json index d06958870..a83eea734 100644 --- a/common/defs/bitcoin/koto.json +++ b/common/defs/bitcoin/koto.json @@ -6,6 +6,7 @@ "github": "https://github.com/KotoDevelopers/koto", "maintainer": "WO ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 6198, "address_type_p2sh": 6203, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/litecoin.json b/common/defs/bitcoin/litecoin.json index f9805680d..cb133054f 100644 --- a/common/defs/bitcoin/litecoin.json +++ b/common/defs/bitcoin/litecoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/litecoin-project/litecoin", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 48, "address_type_p2sh": 50, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/litecoin_testnet.json b/common/defs/bitcoin/litecoin_testnet.json index 3661eb645..7fb1159f2 100644 --- a/common/defs/bitcoin/litecoin_testnet.json +++ b/common/defs/bitcoin/litecoin_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/litecoin-project/litecoin", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 111, "address_type_p2sh": 58, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/monacoin.json b/common/defs/bitcoin/monacoin.json index d711e4d57..5d06a4f11 100644 --- a/common/defs/bitcoin/monacoin.json +++ b/common/defs/bitcoin/monacoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/monacoinproject/monacoin", "maintainer": "cryptcoin-junkey ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 50, "address_type_p2sh": 55, "maxfee_kb": 5000000, diff --git a/common/defs/bitcoin/monetaryunit.json b/common/defs/bitcoin/monetaryunit.json index f3003da7f..ae6d244f2 100644 --- a/common/defs/bitcoin/monetaryunit.json +++ b/common/defs/bitcoin/monetaryunit.json @@ -6,6 +6,7 @@ "github": "https://github.com/muecoin/MUE", "maintainer": "Sotiris Blad ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 16, "address_type_p2sh": 76, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/namecoin.json b/common/defs/bitcoin/namecoin.json index 0f1eec5e9..3a1d7f7f5 100644 --- a/common/defs/bitcoin/namecoin.json +++ b/common/defs/bitcoin/namecoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/namecoin/namecoin-core", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 52, "address_type_p2sh": 5, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/nix.json b/common/defs/bitcoin/nix.json index 3eff74ac2..c8b35301e 100644 --- a/common/defs/bitcoin/nix.json +++ b/common/defs/bitcoin/nix.json @@ -6,6 +6,7 @@ "github": "https://github.com/nixplatform/nixcore", "maintainer": "mattt21 ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 38, "address_type_p2sh": 53, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/particl.json b/common/defs/bitcoin/particl.json index 42b99b68d..1f60c0b0e 100644 --- a/common/defs/bitcoin/particl.json +++ b/common/defs/bitcoin/particl.json @@ -6,6 +6,7 @@ "github": "https://github.com/particl/particl-core", "maintainer": "Ryno ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 56, "address_type_p2sh": 60, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/particl_testnet.json b/common/defs/bitcoin/particl_testnet.json index fb11f57f2..c79becc13 100644 --- a/common/defs/bitcoin/particl_testnet.json +++ b/common/defs/bitcoin/particl_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/particl/particl-core", "maintainer": "Ryno ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 118, "address_type_p2sh": 122, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/pesetacoin.json b/common/defs/bitcoin/pesetacoin.json index a6ee9cb6e..46b8b84ca 100644 --- a/common/defs/bitcoin/pesetacoin.json +++ b/common/defs/bitcoin/pesetacoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "maintainer": "Rw ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 47, "address_type_p2sh": 22, "maxfee_kb": 1000000000, diff --git a/common/defs/bitcoin/pivx.json b/common/defs/bitcoin/pivx.json index 62d5c776a..bb3394c24 100644 --- a/common/defs/bitcoin/pivx.json +++ b/common/defs/bitcoin/pivx.json @@ -6,6 +6,7 @@ "github": "https://github.com/PIVX-Project/PIVX", "maintainer": "Random Zebra ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 30, "address_type_p2sh": 13, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/pivx_testnet.json b/common/defs/bitcoin/pivx_testnet.json index 032264392..8879970f3 100644 --- a/common/defs/bitcoin/pivx_testnet.json +++ b/common/defs/bitcoin/pivx_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/PIVX-Project/PIVX", "maintainer": "Random Zebra ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 139, "address_type_p2sh": 19, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/polis.json b/common/defs/bitcoin/polis.json index e75106294..3d7402c16 100644 --- a/common/defs/bitcoin/polis.json +++ b/common/defs/bitcoin/polis.json @@ -6,6 +6,7 @@ "github": "https://github.com/polispay/polis", "maintainer": "Cronos ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 55, "address_type_p2sh": 56, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/primecoin.json b/common/defs/bitcoin/primecoin.json index e74f836a3..3939c3737 100644 --- a/common/defs/bitcoin/primecoin.json +++ b/common/defs/bitcoin/primecoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/primecoin/primecoin", "maintainer": "James Skrowvedeht ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 23, "address_type_p2sh": 83, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/qtum.json b/common/defs/bitcoin/qtum.json index 13c55c163..be2900ec4 100644 --- a/common/defs/bitcoin/qtum.json +++ b/common/defs/bitcoin/qtum.json @@ -6,6 +6,7 @@ "github": "https://github.com/qtumproject/qtum", "maintainer": "CodeFace ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 58, "address_type_p2sh": 50, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/qtum_testnet.json b/common/defs/bitcoin/qtum_testnet.json index ec7e67d7a..7f03d5be6 100644 --- a/common/defs/bitcoin/qtum_testnet.json +++ b/common/defs/bitcoin/qtum_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/qtumproject/qtum", "maintainer": "CodeFace ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 120, "address_type_p2sh": 110, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/ravencoin.json b/common/defs/bitcoin/ravencoin.json index 7641c7ddf..00b5c66f9 100644 --- a/common/defs/bitcoin/ravencoin.json +++ b/common/defs/bitcoin/ravencoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/RavenProject/Ravencoin", "maintainer": "Scotty ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 60, "address_type_p2sh": 122, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/ritocoin.json b/common/defs/bitcoin/ritocoin.json index a66987666..8539d0d29 100644 --- a/common/defs/bitcoin/ritocoin.json +++ b/common/defs/bitcoin/ritocoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/RitoProject", "maintainer": "Scotty ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 25, "address_type_p2sh": 105, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/smartcash.json b/common/defs/bitcoin/smartcash.json index 51ea8cc2a..af3043726 100644 --- a/common/defs/bitcoin/smartcash.json +++ b/common/defs/bitcoin/smartcash.json @@ -6,6 +6,7 @@ "github": "https://github.com/SmartCash/Core-Smart", "maintainer": "Leandro Reinaux ", "curve_name": "secp256k1_smart", + "divisibility": 8, "address_type": 63, "address_type_p2sh": 18, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/smartcash_testnet.json b/common/defs/bitcoin/smartcash_testnet.json index 150414629..b671fdddd 100644 --- a/common/defs/bitcoin/smartcash_testnet.json +++ b/common/defs/bitcoin/smartcash_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/SmartCash/Core-Smart", "maintainer": "Leandro Reinaux ", "curve_name": "secp256k1_smart", + "divisibility": 8, "address_type": 65, "address_type_p2sh": 21, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/stakenet.json b/common/defs/bitcoin/stakenet.json index e5b39096e..b8c586a3f 100644 --- a/common/defs/bitcoin/stakenet.json +++ b/common/defs/bitcoin/stakenet.json @@ -6,6 +6,7 @@ "github": "https://github.com/X9Developers/XSN", "maintainer": "Alexis Hernandez ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 76, "address_type_p2sh": 16, "maxfee_kb": 2000000, diff --git a/common/defs/bitcoin/syscoin.json b/common/defs/bitcoin/syscoin.json index ad5be4089..91d1c831f 100644 --- a/common/defs/bitcoin/syscoin.json +++ b/common/defs/bitcoin/syscoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/syscoin/syscoin", "maintainer": "Jagdeep Sidhu ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 63, "address_type_p2sh": 5, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/terracoin.json b/common/defs/bitcoin/terracoin.json index 84a999d5d..537a1b407 100644 --- a/common/defs/bitcoin/terracoin.json +++ b/common/defs/bitcoin/terracoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/terracoin/terracoin", "maintainer": "The Terracoin Foundation ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 100000, diff --git a/common/defs/bitcoin/unobtanium.json b/common/defs/bitcoin/unobtanium.json index dca90bf3b..376c92057 100644 --- a/common/defs/bitcoin/unobtanium.json +++ b/common/defs/bitcoin/unobtanium.json @@ -1,47 +1,48 @@ { - "coin_name": "Unobtanium", - "coin_shortcut": "UNO", - "coin_label": "Unobtanium", - "website": "https://unobtanium.uno", - "github": "https://github.com/unobtanium-official/unobtanium", - "maintainer": "choicesz ", - "curve_name": "secp256k1", - "address_type": 130, - "address_type_p2sh": 30, - "maxfee_kb": 2000000, - "minfee_kb": 1000, - "signed_message_header": "Unobtanium Signed Message:\n", - "hash_genesis_block": "000004c2fc5fffb810dccc197d603690099a68305232e552d96ccbe8e2c52b75", - "xprv_magic": 76066276, - "xpub_magic": 76067358, - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 92, - "segwit": false, - "decred": false, - "fork_id": null, - "force_bip143": false, - "default_fee_b": { - "Low": 10, - "Economy": 50, - "Normal": 100, - "High": 160 - }, - "dust_limit": 546, - "blocktime_seconds": 30, - "uri_prefix": "unobtanium", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [], - "blockbook": [ - "https://blockbook.flurbo.xyz", - "https://blockbook.unobtanium.uno" - ], - "bip115": false, - "negative_fee": false, - "cooldown": 100, - "consensus_branch_id": null, - "confidential_assets": null + "coin_name": "Unobtanium", + "coin_shortcut": "UNO", + "coin_label": "Unobtanium", + "website": "https://unobtanium.uno", + "github": "https://github.com/unobtanium-official/unobtanium", + "maintainer": "choicesz ", + "curve_name": "secp256k1", + "divisibility": 8, + "address_type": 130, + "address_type_p2sh": 30, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Unobtanium Signed Message:\n", + "hash_genesis_block": "000004c2fc5fffb810dccc197d603690099a68305232e552d96ccbe8e2c52b75", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 92, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + "Economy": 50, + "Normal": 100, + "High": 160 + }, + "dust_limit": 546, + "blocktime_seconds": 30, + "uri_prefix": "unobtanium", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [ + "https://blockbook.flurbo.xyz", + "https://blockbook.unobtanium.uno" + ], + "bip115": false, + "negative_fee": false, + "cooldown": 100, + "consensus_branch_id": null, + "confidential_assets": null } diff --git a/common/defs/bitcoin/vertcoin.json b/common/defs/bitcoin/vertcoin.json index f04957b29..be95a051a 100644 --- a/common/defs/bitcoin/vertcoin.json +++ b/common/defs/bitcoin/vertcoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/vertcoin-project/vertcoin-core", "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 71, "address_type_p2sh": 5, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/viacoin.json b/common/defs/bitcoin/viacoin.json index 69b00a920..72543bea1 100644 --- a/common/defs/bitcoin/viacoin.json +++ b/common/defs/bitcoin/viacoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/viacoin", "maintainer": "romanornr ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 71, "address_type_p2sh": 33, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/vipstarcoin.json b/common/defs/bitcoin/vipstarcoin.json index 827e073e7..5a4e0bd12 100644 --- a/common/defs/bitcoin/vipstarcoin.json +++ b/common/defs/bitcoin/vipstarcoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/VIPSTARCOIN/VIPSTARCOIN", "maintainer": "y-chan ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 70, "address_type_p2sh": 50, "maxfee_kb": 40000000, diff --git a/common/defs/bitcoin/zcash.json b/common/defs/bitcoin/zcash.json index 3cc3b718e..8a505b32b 100644 --- a/common/defs/bitcoin/zcash.json +++ b/common/defs/bitcoin/zcash.json @@ -6,6 +6,7 @@ "github": "https://github.com/zcash/zcash", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 7352, "address_type_p2sh": 7357, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/zcash_testnet.json b/common/defs/bitcoin/zcash_testnet.json index 34d8e8e8c..2e81ebf8c 100644 --- a/common/defs/bitcoin/zcash_testnet.json +++ b/common/defs/bitcoin/zcash_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/zcash/zcash", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 7461, "address_type_p2sh": 7354, "maxfee_kb": 10000000, diff --git a/common/defs/bitcoin/zcoin.json b/common/defs/bitcoin/zcoin.json index a5c885346..9f67a8ca5 100644 --- a/common/defs/bitcoin/zcoin.json +++ b/common/defs/bitcoin/zcoin.json @@ -6,6 +6,7 @@ "github": "https://github.com/zcoinofficial/zcoin", "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 82, "address_type_p2sh": 7, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/zcoin_testnet.json b/common/defs/bitcoin/zcoin_testnet.json index 37013106a..6b1444ad9 100644 --- a/common/defs/bitcoin/zcoin_testnet.json +++ b/common/defs/bitcoin/zcoin_testnet.json @@ -6,6 +6,7 @@ "github": "https://github.com/zcoinofficial/zcoin", "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 65, "address_type_p2sh": 178, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/zcore.json b/common/defs/bitcoin/zcore.json index 97b980737..9dfd3812b 100644 --- a/common/defs/bitcoin/zcore.json +++ b/common/defs/bitcoin/zcore.json @@ -6,6 +6,7 @@ "github": "https://github.com/zcore-coin/zcore-2.0", "maintainer": "Erick Costa ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 142, "address_type_p2sh": 145, "maxfee_kb": 1000000, diff --git a/common/defs/bitcoin/zelcash.json b/common/defs/bitcoin/zelcash.json index fcbf8bf38..329a7bf43 100644 --- a/common/defs/bitcoin/zelcash.json +++ b/common/defs/bitcoin/zelcash.json @@ -6,6 +6,7 @@ "github": "https://github.com/zelcash", "maintainer": "Cabecinha84 ", "curve_name": "secp256k1", + "divisibility": 8, "address_type": 7352, "address_type_p2sh": 7357, "maxfee_kb": 1000000, diff --git a/core/src/apps/common/coininfo.py b/core/src/apps/common/coininfo.py index 8851a86d3..779d64843 100644 --- a/core/src/apps/common/coininfo.py +++ b/core/src/apps/common/coininfo.py @@ -12,6 +12,7 @@ class CoinInfo: self, coin_name: str, coin_shortcut: str, + divisibility: int, address_type: int, address_type_p2sh: int, maxfee_kb: int, @@ -33,6 +34,7 @@ class CoinInfo: ): self.coin_name = coin_name self.coin_shortcut = coin_shortcut + self.divisibility = divisibility self.address_type = address_type self.address_type_p2sh = address_type_p2sh self.maxfee_kb = maxfee_kb @@ -82,6 +84,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="BTC", + divisibility=8, address_type=0, address_type_p2sh=5, maxfee_kb=2000000, @@ -105,6 +108,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="REGTEST", + divisibility=8, address_type=111, address_type_p2sh=196, maxfee_kb=10000000, @@ -128,6 +132,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="TEST", + divisibility=8, address_type=111, address_type_p2sh=196, maxfee_kb=10000000, @@ -154,6 +159,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="ACM", + divisibility=8, address_type=53, address_type_p2sh=55, maxfee_kb=40000000, @@ -177,6 +183,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="AXE", + divisibility=8, address_type=55, address_type_p2sh=16, maxfee_kb=100000, @@ -200,6 +207,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="BELL", + divisibility=8, address_type=25, address_type_p2sh=85, maxfee_kb=1000000, @@ -223,6 +231,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="BITG", + divisibility=8, address_type=38, address_type_p2sh=6, maxfee_kb=100000, @@ -246,6 +255,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="ZNY", + divisibility=8, address_type=81, address_type_p2sh=5, maxfee_kb=1000000, @@ -269,6 +279,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="BCH", + divisibility=8, address_type=0, address_type_p2sh=5, maxfee_kb=500000, @@ -292,6 +303,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="TBCH", + divisibility=8, address_type=111, address_type_p2sh=196, maxfee_kb=10000000, @@ -315,6 +327,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="BTG", + divisibility=8, address_type=38, address_type_p2sh=23, maxfee_kb=500000, @@ -338,6 +351,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="TBTG", + divisibility=8, address_type=111, address_type_p2sh=196, maxfee_kb=500000, @@ -361,6 +375,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="BTCP", + divisibility=8, address_type=4901, address_type_p2sh=5039, maxfee_kb=1000000, @@ -384,6 +399,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="XRC", + divisibility=8, address_type=61, address_type_p2sh=123, maxfee_kb=2000000, @@ -407,6 +423,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="BTX", + divisibility=8, address_type=3, address_type_p2sh=125, maxfee_kb=2000000, @@ -430,6 +447,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="BST", + divisibility=8, address_type=26, address_type_p2sh=5, maxfee_kb=2000000, @@ -453,6 +471,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="CPU", + divisibility=8, address_type=28, address_type_p2sh=30, maxfee_kb=1000000, @@ -476,6 +495,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="CPC", + divisibility=8, address_type=28, address_type_p2sh=35, maxfee_kb=2000000, @@ -499,6 +519,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="CRW", + divisibility=8, address_type=95495, address_type_p2sh=95473, maxfee_kb=2000000, @@ -522,6 +543,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="DASH", + divisibility=8, address_type=76, address_type_p2sh=16, maxfee_kb=100000, @@ -545,6 +567,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tDASH", + divisibility=8, address_type=140, address_type_p2sh=19, maxfee_kb=100000, @@ -568,6 +591,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="DCR", + divisibility=8, address_type=1855, address_type_p2sh=1818, maxfee_kb=1000000, @@ -591,6 +615,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="TDCR", + divisibility=8, address_type=3873, address_type_p2sh=3836, maxfee_kb=10000000, @@ -614,6 +639,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="DGB", + divisibility=8, address_type=30, address_type_p2sh=63, maxfee_kb=500000, @@ -637,6 +663,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="DOGE", + divisibility=8, address_type=30, address_type_p2sh=22, maxfee_kb=1000000000, @@ -660,6 +687,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="ELEMENTS", + divisibility=8, address_type=235, address_type_p2sh=75, maxfee_kb=10000000, @@ -683,6 +711,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="FAIR", + divisibility=8, address_type=95, address_type_p2sh=36, maxfee_kb=10000000, @@ -706,6 +735,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="FTC", + divisibility=8, address_type=14, address_type_p2sh=5, maxfee_kb=40000000, @@ -729,6 +759,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="FLO", + divisibility=8, address_type=35, address_type_p2sh=94, maxfee_kb=40000000, @@ -752,6 +783,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="FJC", + divisibility=8, address_type=36, address_type_p2sh=16, maxfee_kb=1000000000, @@ -775,6 +807,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="GIN", + divisibility=8, address_type=38, address_type_p2sh=10, maxfee_kb=100000, @@ -798,6 +831,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="GAME", + divisibility=8, address_type=38, address_type_p2sh=62, maxfee_kb=5000000, @@ -821,6 +855,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="GRS", + divisibility=8, address_type=36, address_type_p2sh=5, maxfee_kb=100000, @@ -844,6 +879,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tGRS", + divisibility=8, address_type=111, address_type_p2sh=196, maxfee_kb=100000, @@ -867,6 +903,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="HATCH", + divisibility=8, address_type=76, address_type_p2sh=16, maxfee_kb=100000, @@ -890,6 +927,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tHATCH", + divisibility=8, address_type=140, address_type_p2sh=19, maxfee_kb=100000, @@ -913,6 +951,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="ZEN", + divisibility=8, address_type=8329, address_type_p2sh=8342, maxfee_kb=2000000, @@ -936,6 +975,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="KMD", + divisibility=8, address_type=60, address_type_p2sh=85, maxfee_kb=1000000, @@ -959,6 +999,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="KOTO", + divisibility=8, address_type=6198, address_type_p2sh=6203, maxfee_kb=1000000, @@ -982,6 +1023,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="LTC", + divisibility=8, address_type=48, address_type_p2sh=50, maxfee_kb=40000000, @@ -1005,6 +1047,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tLTC", + divisibility=8, address_type=111, address_type_p2sh=58, maxfee_kb=40000000, @@ -1028,6 +1071,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="ETP", + divisibility=8, address_type=50, address_type_p2sh=5, maxfee_kb=2000000, @@ -1051,6 +1095,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="MONA", + divisibility=8, address_type=50, address_type_p2sh=55, maxfee_kb=5000000, @@ -1074,6 +1119,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="MUE", + divisibility=8, address_type=16, address_type_p2sh=76, maxfee_kb=100000, @@ -1097,6 +1143,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="NIX", + divisibility=8, address_type=38, address_type_p2sh=53, maxfee_kb=40000000, @@ -1120,6 +1167,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="NMC", + divisibility=8, address_type=52, address_type_p2sh=5, maxfee_kb=10000000, @@ -1143,6 +1191,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="PIVX", + divisibility=8, address_type=30, address_type_p2sh=13, maxfee_kb=100000, @@ -1166,6 +1215,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tPIVX", + divisibility=8, address_type=139, address_type_p2sh=19, maxfee_kb=100000, @@ -1189,6 +1239,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="PART", + divisibility=8, address_type=56, address_type_p2sh=60, maxfee_kb=2000000, @@ -1212,6 +1263,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tPART", + divisibility=8, address_type=118, address_type_p2sh=122, maxfee_kb=10000000, @@ -1235,6 +1287,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="PTC", + divisibility=8, address_type=47, address_type_p2sh=22, maxfee_kb=1000000000, @@ -1258,6 +1311,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="POLIS", + divisibility=8, address_type=55, address_type_p2sh=56, maxfee_kb=100000, @@ -1281,6 +1335,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="XPM", + divisibility=8, address_type=23, address_type_p2sh=83, maxfee_kb=1000000, @@ -1304,6 +1359,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="QTUM", + divisibility=8, address_type=58, address_type_p2sh=50, maxfee_kb=40000000, @@ -1327,6 +1383,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tQTUM", + divisibility=8, address_type=120, address_type_p2sh=110, maxfee_kb=40000000, @@ -1350,6 +1407,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="RVN", + divisibility=8, address_type=60, address_type_p2sh=122, maxfee_kb=2000000, @@ -1373,6 +1431,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="RITO", + divisibility=8, address_type=25, address_type_p2sh=105, maxfee_kb=2000000, @@ -1396,6 +1455,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="SMART", + divisibility=8, address_type=63, address_type_p2sh=18, maxfee_kb=1000000, @@ -1419,6 +1479,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tSMART", + divisibility=8, address_type=65, address_type_p2sh=21, maxfee_kb=1000000, @@ -1442,6 +1503,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="XSN", + divisibility=8, address_type=76, address_type_p2sh=16, maxfee_kb=2000000, @@ -1465,6 +1527,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="SYS", + divisibility=8, address_type=63, address_type_p2sh=5, maxfee_kb=10000000, @@ -1488,6 +1551,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="UNO", + divisibility=8, address_type=130, address_type_p2sh=30, maxfee_kb=2000000, @@ -1511,6 +1575,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="VIPS", + divisibility=8, address_type=70, address_type_p2sh=50, maxfee_kb=40000000, @@ -1534,6 +1599,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="VTC", + divisibility=8, address_type=71, address_type_p2sh=5, maxfee_kb=40000000, @@ -1557,6 +1623,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="VIA", + divisibility=8, address_type=71, address_type_p2sh=33, maxfee_kb=40000000, @@ -1580,6 +1647,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="ZCR", + divisibility=8, address_type=142, address_type_p2sh=145, maxfee_kb=1000000, @@ -1603,6 +1671,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="ZEC", + divisibility=8, address_type=7352, address_type_p2sh=7357, maxfee_kb=1000000, @@ -1626,6 +1695,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="TAZ", + divisibility=8, address_type=7461, address_type_p2sh=7354, maxfee_kb=10000000, @@ -1649,6 +1719,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="XZC", + divisibility=8, address_type=82, address_type_p2sh=7, maxfee_kb=1000000, @@ -1672,6 +1743,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="tXZC", + divisibility=8, address_type=65, address_type_p2sh=178, maxfee_kb=1000000, @@ -1695,6 +1767,7 @@ def by_name(name: str) -> CoinInfo: return CoinInfo( coin_name=name, coin_shortcut="ZEL", + divisibility=8, address_type=7352, address_type_p2sh=7357, maxfee_kb=1000000, diff --git a/core/src/apps/common/coininfo.py.mako b/core/src/apps/common/coininfo.py.mako index b7df1e314..97509854e 100644 --- a/core/src/apps/common/coininfo.py.mako +++ b/core/src/apps/common/coininfo.py.mako @@ -12,6 +12,7 @@ class CoinInfo: self, coin_name: str, coin_shortcut: str, + divisibility: int, address_type: int, address_type_p2sh: int, maxfee_kb: int, @@ -33,6 +34,7 @@ class CoinInfo: ): self.coin_name = coin_name self.coin_shortcut = coin_shortcut + self.divisibility = divisibility self.address_type = address_type self.address_type_p2sh = address_type_p2sh self.maxfee_kb = maxfee_kb @@ -90,6 +92,7 @@ def optional_dict(x): ATTRIBUTES = ( ("coin_name", lambda _: "name"), ("coin_shortcut", black_repr), + ("divisibility", int), ("address_type", int), ("address_type_p2sh", int), ("maxfee_kb", int), diff --git a/core/src/apps/wallet/sign_tx/layout.py b/core/src/apps/wallet/sign_tx/layout.py index 229fa9ce2..4a670b80f 100644 --- a/core/src/apps/wallet/sign_tx/layout.py +++ b/core/src/apps/wallet/sign_tx/layout.py @@ -9,7 +9,7 @@ _LOCKTIME_TIMESTAMP_MIN_VALUE = const(500000000) def format_coin_amount(amount, coin): - return "%s %s" % (format_amount(amount, 8), coin.coin_shortcut) + return "%s %s" % (format_amount(amount, coin.divisibility), coin.coin_shortcut) def split_address(address): diff --git a/legacy/firmware/coin_info.c.mako b/legacy/firmware/coin_info.c.mako index 8fb28298f..7dc8e54ac 100644 --- a/legacy/firmware/coin_info.c.mako +++ b/legacy/firmware/coin_info.c.mako @@ -29,12 +29,11 @@ const CoinInfo coins[COINS_COUNT] = { .coin_shortcut = ${c_str(" " + c.coin_shortcut)}, .maxfee_kb = ${c_int(c.maxfee_kb)}, .signed_message_header = ${signed_message_header(c.signed_message_header)}, - .has_address_type = ${defined(c.address_type)}, - .has_address_type_p2sh = ${defined(c.address_type_p2sh)}, .has_segwit = ${c_bool(c.segwit)}, .has_fork_id = ${defined(c.fork_id)}, .force_bip143 = ${c_bool(c.force_bip143)}, .decred = ${c_bool(c.decred)}, + .divisibility = ${c.divisibility}, .address_type = ${c.address_type}, .address_type_p2sh = ${c.address_type_p2sh}, .xpub_magic = ${hex(c.xpub_magic)}, diff --git a/legacy/firmware/coins.c b/legacy/firmware/coins.c index 26ceb75ce..dcd4c0de3 100644 --- a/legacy/firmware/coins.c +++ b/legacy/firmware/coins.c @@ -65,13 +65,11 @@ bool coinExtractAddressType(const CoinInfo *coin, const char *addr, bool coinExtractAddressTypeRaw(const CoinInfo *coin, const uint8_t *addr_raw, uint32_t *address_type) { - if (coin->has_address_type && - address_check_prefix(addr_raw, coin->address_type)) { + if (address_check_prefix(addr_raw, coin->address_type)) { *address_type = coin->address_type; return true; } - if (coin->has_address_type_p2sh && - address_check_prefix(addr_raw, coin->address_type_p2sh)) { + if (address_check_prefix(addr_raw, coin->address_type_p2sh)) { *address_type = coin->address_type_p2sh; return true; } diff --git a/legacy/firmware/coins.h b/legacy/firmware/coins.h index 411b7c57f..99ceb0648 100644 --- a/legacy/firmware/coins.h +++ b/legacy/firmware/coins.h @@ -31,8 +31,7 @@ typedef struct _CoinInfo { const char *coin_shortcut; uint64_t maxfee_kb; const char *signed_message_header; - bool has_address_type; - bool has_address_type_p2sh; + uint32_t divisibility; bool has_segwit; bool has_fork_id; bool force_bip143; diff --git a/legacy/firmware/fsm_msg_coin.h b/legacy/firmware/fsm_msg_coin.h index fd400cbbf..ef85f2f43 100644 --- a/legacy/firmware/fsm_msg_coin.h +++ b/legacy/firmware/fsm_msg_coin.h @@ -165,7 +165,6 @@ static bool path_mismatched(const CoinInfo *coin, const GetAddress *msg) { if (msg->address_n[0] == (0x80000000 + 49)) { mismatch |= (msg->script_type != InputScriptType_SPENDP2SHWITNESS); mismatch |= !coin->has_segwit; - mismatch |= !coin->has_address_type_p2sh; mismatch |= (msg->address_n_count != 5); mismatch |= (msg->address_n[1] != coin->coin_type); mismatch |= (msg->address_n[2] & 0x80000000) == 0; diff --git a/legacy/firmware/layout2.c b/legacy/firmware/layout2.c index 799794b1a..01aa943f7 100644 --- a/legacy/firmware/layout2.c +++ b/legacy/firmware/layout2.c @@ -35,8 +35,6 @@ #include "timer.h" #include "util.h" -#define BITCOIN_DIVISIBILITY (8) - #if !BITCOIN_ONLY static const char *slip44_extras(uint32_t coin_type) { @@ -93,12 +91,12 @@ static const char *address_n_str(const uint32_t *address_n, abbr = coin->coin_shortcut + 1; } } else if (p2sh_segwit) { - if (coin && coin->has_segwit && coin->has_address_type_p2sh) { + if (coin && coin->has_segwit) { abbr = coin->coin_shortcut + 1; } } else { if (coin) { - if (coin->has_segwit && coin->has_address_type_p2sh) { + if (coin->has_segwit) { legacy = true; } abbr = coin->coin_shortcut + 1; @@ -346,7 +344,7 @@ static void render_address_dialog(const CoinInfo *coin, const char *address, void layoutConfirmOutput(const CoinInfo *coin, const TxOutputType *out) { char str_out[32 + 3] = {0}; - bn_format_uint64(out->amount, NULL, coin->coin_shortcut, BITCOIN_DIVISIBILITY, + bn_format_uint64(out->amount, NULL, coin->coin_shortcut, coin->divisibility, 0, false, str_out, sizeof(str_out) - 3); strlcat(str_out, " to", sizeof(str_out)); const char *address = out->address; @@ -389,8 +387,8 @@ void layoutConfirmOmni(const uint8_t *data, uint32_t size) { uint64_t amount_be = 0, amount = 0; memcpy(&amount_be, data + 12, sizeof(uint64_t)); REVERSE64(amount_be, amount); - bn_format_uint64(amount, NULL, suffix, divisible ? BITCOIN_DIVISIBILITY : 0, - 0, false, str_out, sizeof(str_out)); + bn_format_uint64(amount, NULL, suffix, divisible ? 8 : 0, 0, false, str_out, + sizeof(str_out)); } else { desc = _("Unknown transaction"); str_out[0] = 0; @@ -424,10 +422,10 @@ void layoutConfirmOpReturn(const uint8_t *data, uint32_t size) { void layoutConfirmTx(const CoinInfo *coin, uint64_t amount_out, uint64_t amount_fee) { char str_out[32] = {0}, str_fee[32] = {0}; - bn_format_uint64(amount_out, NULL, coin->coin_shortcut, BITCOIN_DIVISIBILITY, - 0, false, str_out, sizeof(str_out)); - bn_format_uint64(amount_fee, NULL, coin->coin_shortcut, BITCOIN_DIVISIBILITY, - 0, false, str_fee, sizeof(str_fee)); + bn_format_uint64(amount_out, NULL, coin->coin_shortcut, coin->divisibility, 0, + false, str_out, sizeof(str_out)); + bn_format_uint64(amount_fee, NULL, coin->coin_shortcut, coin->divisibility, 0, + false, str_fee, sizeof(str_fee)); layoutDialogSwipe(&bmp_icon_question, _("Cancel"), _("Confirm"), NULL, _("Really send"), str_out, _("from your wallet?"), _("Fee included:"), str_fee, NULL); @@ -435,8 +433,8 @@ void layoutConfirmTx(const CoinInfo *coin, uint64_t amount_out, void layoutFeeOverThreshold(const CoinInfo *coin, uint64_t fee) { char str_fee[32] = {0}; - bn_format_uint64(fee, NULL, coin->coin_shortcut, BITCOIN_DIVISIBILITY, 0, - false, str_fee, sizeof(str_fee)); + bn_format_uint64(fee, NULL, coin->coin_shortcut, coin->divisibility, 0, false, + str_fee, sizeof(str_fee)); layoutDialogSwipe(&bmp_icon_question, _("Cancel"), _("Confirm"), NULL, _("Fee"), str_fee, _("is unexpectedly high."), NULL, _("Send anyway?"), NULL); diff --git a/legacy/firmware/transaction.c b/legacy/firmware/transaction.c index a3aadf086..2f212eab6 100644 --- a/legacy/firmware/transaction.c +++ b/legacy/firmware/transaction.c @@ -130,9 +130,6 @@ bool compute_address(const CoinInfo *coin, InputScriptType script_type, if (!coin->has_segwit) { return 0; } - if (!coin->has_address_type_p2sh) { - return 0; - } raw[0] = 0; // push version raw[1] = 32; // push 32 bytes memcpy(raw + 2, digest, 32); // push hash @@ -175,9 +172,6 @@ bool compute_address(const CoinInfo *coin, InputScriptType script_type, if (!coin->has_segwit) { return 0; } - if (!coin->has_address_type_p2sh) { - return 0; - } ecdsa_get_address_segwit_p2sh( node->public_key, coin->address_type_p2sh, coin->curve->hasher_pubkey, coin->curve->hasher_base58, address, MAX_ADDR_SIZE); @@ -270,9 +264,9 @@ int compile_output(const CoinInfo *coin, const HDNode *root, TxOutputType *in, addr_raw_len = base58_decode_check(in->address, coin->curve->hasher_base58, addr_raw, MAX_ADDR_RAW_SIZE); size_t prefix_len = 0; - if (coin->has_address_type // p2pkh - && addr_raw_len == - 20 + (prefix_len = address_prefix_bytes_len(coin->address_type)) && + // p2pkh + if (addr_raw_len == + 20 + (prefix_len = address_prefix_bytes_len(coin->address_type)) && address_check_prefix(addr_raw, coin->address_type)) { out->script_pubkey.bytes[0] = 0x76; // OP_DUP out->script_pubkey.bytes[1] = 0xA9; // OP_HASH_160 @@ -281,10 +275,11 @@ int compile_output(const CoinInfo *coin, const HDNode *root, TxOutputType *in, out->script_pubkey.bytes[23] = 0x88; // OP_EQUALVERIFY out->script_pubkey.bytes[24] = 0xAC; // OP_CHECKSIG out->script_pubkey.size = 25; - } else if (coin->has_address_type_p2sh // p2sh - && addr_raw_len == 20 + (prefix_len = address_prefix_bytes_len( - coin->address_type_p2sh)) && - address_check_prefix(addr_raw, coin->address_type_p2sh)) { + } else + // p2sh + if (addr_raw_len == 20 + (prefix_len = address_prefix_bytes_len( + coin->address_type_p2sh)) && + address_check_prefix(addr_raw, coin->address_type_p2sh)) { out->script_pubkey.bytes[0] = 0xA9; // OP_HASH_160 out->script_pubkey.bytes[1] = 0x14; // pushing 20 bytes memcpy(out->script_pubkey.bytes + 2, addr_raw + prefix_len, 20); @@ -880,11 +875,9 @@ uint32_t tx_output_weight(const CoinInfo *coin, const TxOutputType *txoutput) { addr_raw_len = base58_decode_check(txoutput->address, coin->curve->hasher_base58, addr_raw, MAX_ADDR_RAW_SIZE); - if (coin->has_address_type && - address_check_prefix(addr_raw, coin->address_type)) { + if (address_check_prefix(addr_raw, coin->address_type)) { output_script_size = TXSIZE_P2PKHASH; - } else if (coin->has_address_type_p2sh && - address_check_prefix(addr_raw, coin->address_type_p2sh)) { + } else if (address_check_prefix(addr_raw, coin->address_type_p2sh)) { output_script_size = TXSIZE_P2SCRIPT; } }