X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git;a=blobdiff_plain;f=src%2Fjs%2Findex.js;h=83221154ab90543c487aa3e00de51baf6e549891;hp=afa743dc924eb5cc35228e8b4f22c3093f085bb8;hb=acf4c9b588c6abcc275b4e46df54248a2c913366;hpb=29c30bf33ae079c55007d8738d077d10d40bca2b diff --git a/src/js/index.js b/src/js/index.js index afa743d..8322115 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -23,6 +23,7 @@ var generationProcesses = []; var DOM = {}; + DOM.privacyScreenToggle = $(".privacy-screen-toggle"); DOM.network = $(".network"); DOM.bip32Client = $("#bip32-client"); DOM.phraseNetwork = $("#network-phrase"); @@ -77,6 +78,8 @@ DOM.bip49accountXprv = $("#bip49 .account-xprv"); DOM.bip49accountXpub = $("#bip49 .account-xpub"); DOM.bip49change = $("#bip49 .change"); + DOM.bip84unavailable = $("#bip84 .unavailable"); + DOM.bip84available = $("#bip84 .available"); DOM.bip84path = $("#bip84-path"); DOM.bip84purpose = $("#bip84 .purpose"); DOM.bip84coin = $("#bip84 .coin"); @@ -116,6 +119,7 @@ function init() { // Events + DOM.privacyScreenToggle.on("change", privacyScreenToggled); DOM.generatedStrength.on("change", generatedStrengthChanged); DOM.network.on("change", networkChanged); DOM.bip32Client.on("change", bip32ClientChanged); @@ -176,13 +180,7 @@ var networkIndex = e.target.value; var network = networks[networkIndex]; network.onSelect(); - if (network.segwitAvailable) { - adjustNetworkForSegwit(); - showSegwitAvailable(); - } - else { - showSegwitUnavailable(); - } + adjustNetworkForSegwit(); if (seed != null) { phraseChanged(); } @@ -372,8 +370,11 @@ showPending(); // Don't show segwit if it's selected but network doesn't support it if (segwitSelected() && !networkHasSegwit()) { + showSegwitUnavailable(); + hidePending(); return; } + showSegwitAvailable(); // Get the derivation path var derivationPath = getDerivationPath(); var errorText = findDerivationPathErrors(derivationPath); @@ -448,6 +449,17 @@ $("td.privkey span").toggleClass("invisible"); } + function privacyScreenToggled() { + // private-data contains elements added to DOM at runtime + // so catch all by adding visual privacy class to the root of the DOM + if (DOM.privacyScreenToggle.prop("checked")) { + $("body").addClass("visual-privacy"); + } + else { + $("body").removeClass("visual-privacy"); + } + } + // Private methods function generateRandomPhrase() { @@ -479,6 +491,37 @@ } function calcBip32RootKeyFromBase58(rootKeyBase58) { + // try parsing with various segwit network params since this extended + // key may be from any one of them. + if (networkHasSegwit()) { + var n = network; + if ("baseNetwork" in n) { + n = bitcoinjs.bitcoin.networks[n.baseNetwork]; + } + // try parsing using base network params + try { + bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n); + return; + } + catch (e) {} + // try parsing using p2wpkh params + if ("p2wpkh" in n) { + try { + bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n.p2wpkh); + return; + } + catch (e) {} + } + // try parsing using p2wpkh-in-p2sh network params + if ("p2wpkhInP2sh" in n) { + try { + bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n.p2wpkhInP2sh); + return; + } + catch (e) {} + } + } + // try the network params as currently specified bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network); } @@ -552,6 +595,37 @@ } function validateRootKey(rootKeyBase58) { + // try various segwit network params since this extended key may be from + // any one of them. + if (networkHasSegwit()) { + var n = network; + if ("baseNetwork" in n) { + n = bitcoinjs.bitcoin.networks[n.baseNetwork]; + } + // try parsing using base network params + try { + bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n); + return ""; + } + catch (e) {} + // try parsing using p2wpkh params + if ("p2wpkh" in n) { + try { + bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n.p2wpkh); + return ""; + } + catch (e) {} + } + // try parsing using p2wpkh-in-p2sh network params + if ("p2wpkhInP2sh" in n) { + try { + bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n.p2wpkhInP2sh); + return ""; + } + catch (e) {} + } + } + // try the network params as currently specified try { bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network); } @@ -836,7 +910,14 @@ indexText = indexText + "'"; } // Ethereum values are different - if (networks[DOM.network.val()].name == "ETH - Ethereum") { + if ((networks[DOM.network.val()].name == "ETH - Ethereum") + || (networks[DOM.network.val()].name == "ETC - Ethereum Classic") + || (networks[DOM.network.val()].name == "PIRL - Pirl") + || (networks[DOM.network.val()].name == "MIX - MIX") + || (networks[DOM.network.val()].name == "MUSIC - Musicoin") + || (networks[DOM.network.val()].name == "POA - Poa") + || (networks[DOM.network.val()].name == "EXP - Expanse") + || (networks[DOM.network.val()].name == "CLO - Callisto")) { var privKeyBuffer = keyPair.d.toBuffer(32); privkey = privKeyBuffer.toString('hex'); var addressBuffer = ethUtil.privateToAddress(privKeyBuffer); @@ -1391,7 +1472,20 @@ } function networkHasSegwit() { - return networks[DOM.network.val()].segwitAvailable; + var n = network; + if ("baseNetwork" in network) { + n = bitcoinjs.bitcoin.networks[network.baseNetwork]; + } + // check if only p2wpkh params are required + if (p2wpkhSelected()) { + return "p2wpkh" in n; + } + // check if only p2wpkh-in-p2sh params are required + else if (p2wpkhInP2shSelected()) { + return "p2wpkhInP2sh" in n; + } + // require both if it's unclear which params are required + return "p2wpkh" in n && "p2wpkhInP2sh" in n; } function bip49TabSelected() { @@ -1415,6 +1509,8 @@ function showSegwitAvailable() { DOM.bip49unavailable.addClass("hidden"); DOM.bip49available.removeClass("hidden"); + DOM.bip84unavailable.addClass("hidden"); + DOM.bip84available.removeClass("hidden"); DOM.bip141unavailable.addClass("hidden"); DOM.bip141available.removeClass("hidden"); } @@ -1422,6 +1518,8 @@ function showSegwitUnavailable() { DOM.bip49available.addClass("hidden"); DOM.bip49unavailable.removeClass("hidden"); + DOM.bip84available.addClass("hidden"); + DOM.bip84unavailable.removeClass("hidden"); DOM.bip141available.addClass("hidden"); DOM.bip141unavailable.removeClass("hidden"); } @@ -1536,7 +1634,6 @@ var networks = [ { name: "AC - Asiacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.asiacoin; setHdCoin(51); @@ -1544,7 +1641,6 @@ }, { name: "ACC - Adcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.adcoin; setHdCoin(161); @@ -1552,7 +1648,6 @@ }, { name: "AUR - Auroracoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.auroracoin; setHdCoin(85); @@ -1560,15 +1655,20 @@ }, { name: "AXE - Axe", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.axe; setHdCoin(4242); }, + }, + { + name: "ANON - ANON", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.anon; + setHdCoin(220); + }, }, { name: "BCA - Bitcoin Atom", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.atom; setHdCoin(185); @@ -1576,7 +1676,6 @@ }, { name: "BCH - Bitcoin Cash", - segwitAvailable: false, onSelect: function() { DOM.bitcoinCashAddressTypeContainer.removeClass("hidden"); setHdCoin(145); @@ -1584,7 +1683,6 @@ }, { name: "BEET - Beetlecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.beetlecoin; setHdCoin(800); @@ -1592,7 +1690,6 @@ }, { name: "BELA - Belacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.belacoin; setHdCoin(73); @@ -1600,15 +1697,27 @@ }, { name: "BLK - BlackCoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.blackcoin; setHdCoin(10); }, }, + { + name: "BND - Blocknode", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.blocknode; + setHdCoin(2941); + }, + }, + { + name: "tBND - Blocknode Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.blocknode_testnet; + setHdCoin(1); + }, + }, { name: "BRIT - Britcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.britcoin; setHdCoin(70); @@ -1616,7 +1725,6 @@ }, { name: "BSD - Bitsend", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitsend; setHdCoin(91); @@ -1624,7 +1732,6 @@ }, { name: "BTA - Bata", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.bata; setHdCoin(89); @@ -1632,7 +1739,6 @@ }, { name: "BTC - Bitcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoin; setHdCoin(0); @@ -1640,15 +1746,20 @@ }, { name: "BTC - Bitcoin Testnet", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.testnet; setHdCoin(1); }, + }, + { + name: "BITG - Bitcoin Green", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoingreen; + setHdCoin(222); + }, }, { name: "BTCP - Bitcoin Private", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoinprivate; setHdCoin(183); @@ -1656,15 +1767,20 @@ }, { name: "BTCZ - Bitcoinz", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoinz; setHdCoin(177); }, }, + { + name: "BTDX - BitCloud", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcloud; + setHdCoin(218); + }, + }, { name: "BTG - Bitcoin Gold", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bgold; setHdCoin(156); @@ -1672,7 +1788,6 @@ }, { name: "BTX - Bitcore", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcore; setHdCoin(160); @@ -1680,15 +1795,20 @@ }, { name: "CCN - Cannacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.cannacoin; setHdCoin(19); }, }, + { + name: "CESC - Cryptoescudo", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.cannacoin; + setHdCoin(111); + }, + }, { name: "CDN - Canadaecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.canadaecoin; setHdCoin(34); @@ -1696,15 +1816,21 @@ }, { name: "CLAM - Clams", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.clam; setHdCoin(23); }, }, { - name: "CLUB - Clubcoin", + name: "CLO - Callisto", segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(820); + }, + }, + { + name: "CLUB - Clubcoin", onSelect: function() { network = bitcoinjs.bitcoin.networks.clubcoin; setHdCoin(79); @@ -1712,7 +1838,6 @@ }, { name: "CMP - Compcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.compcoin; setHdCoin(71); @@ -1720,7 +1845,6 @@ }, { name: "CRAVE - Crave", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.crave; setHdCoin(186); @@ -1728,7 +1852,6 @@ }, { name: "CRW - Crown", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.crown; setHdCoin(72); @@ -1736,7 +1859,6 @@ }, { name: "DASH - Dash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dash; setHdCoin(5); @@ -1744,7 +1866,6 @@ }, { name: "DASH - Dash Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dashtn; setHdCoin(1); @@ -1752,7 +1873,6 @@ }, { name: "DFC - Defcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.defcoin; setHdCoin(1337); @@ -1760,7 +1880,6 @@ }, { name: "DGB - Digibyte", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.digibyte; setHdCoin(20); @@ -1768,7 +1887,6 @@ }, { name: "DGC - Digitalcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.digitalcoin; setHdCoin(18); @@ -1776,7 +1894,6 @@ }, { name: "DMD - Diamond", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.diamond; setHdCoin(152); @@ -1784,7 +1901,6 @@ }, { name: "DNR - Denarius", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.denarius; setHdCoin(116); @@ -1792,7 +1908,6 @@ }, { name: "DOGE - Dogecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dogecoin; setHdCoin(3); @@ -1800,7 +1915,6 @@ }, { name: "ECN - Ecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.ecoin; setHdCoin(115); @@ -1808,7 +1922,6 @@ }, { name: "EDRC - Edrcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.edrcoin; setHdCoin(56); @@ -1816,7 +1929,6 @@ }, { name: "EFL - Egulden", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.egulden; setHdCoin(78); @@ -1824,7 +1936,6 @@ }, { name: "EMC2 - Einsteinium", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.einsteinium; setHdCoin(41); @@ -1832,15 +1943,21 @@ }, { name: "ERC - Europecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.europecoin; setHdCoin(151); }, }, { - name: "ETH - Ethereum", + name: "ETC - Ethereum Classic", segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(61); + }, + }, + { + name: "ETH - Ethereum", onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoin; setHdCoin(60); @@ -1848,15 +1965,28 @@ }, { name: "EXCL - Exclusivecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.exclusivecoin; setHdCoin(190); }, }, + { + name: "EXCC - ExchangeCoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.exchangecoin; + setHdCoin(0); + }, + }, + { + name: "EXP - Expanse", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(40); + }, + }, { name: "FJC - Fujicoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.fujicoin; setHdCoin(75); @@ -1864,7 +1994,6 @@ }, { name: "FLASH - Flashcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.flashcoin; setHdCoin(120); @@ -1872,7 +2001,6 @@ }, { name: "FRST - Firstcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.firstcoin; setHdCoin(167); @@ -1880,7 +2008,6 @@ }, { name: "FTC - Feathercoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.feathercoin; setHdCoin(8); @@ -1888,7 +2015,6 @@ }, { name: "GAME - GameCredits", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.game; setHdCoin(101); @@ -1896,7 +2022,6 @@ }, { name: "GBX - Gobyte", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.gobyte; setHdCoin(176); @@ -1904,7 +2029,6 @@ }, { name: "GCR - GCRCoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.gcr; setHdCoin(79); @@ -1912,7 +2036,6 @@ }, { name: "GRC - Gridcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.gridcoin; setHdCoin(84); @@ -1920,15 +2043,20 @@ }, { name: "HNC - Helleniccoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.helleniccoin; setHdCoin(168); }, + }, + { + name: "HUSH - Hush", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.hush; + setHdCoin(197); + }, }, { name: "INSN - Insane", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.insane; setHdCoin(68); @@ -1936,7 +2064,6 @@ }, { name: "IOP - Iop", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.iop; setHdCoin(66); @@ -1944,7 +2071,6 @@ }, { name: "IXC - Ixcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.ixcoin; setHdCoin(86); @@ -1952,7 +2078,6 @@ }, { name: "JBS - Jumbucks", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.jumbucks; setHdCoin(26); @@ -1976,7 +2101,6 @@ }, { name: "LBC - Library Credits", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.lbry; setHdCoin(140); @@ -1984,7 +2108,6 @@ }, { name: "LCC - Litecoincash", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.litecoincash; setHdCoin(192); @@ -1992,7 +2115,6 @@ }, { name: "LDCN - Landcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.landcoin; setHdCoin(63); @@ -2000,7 +2122,6 @@ }, { name: "LINX - Linx", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.linx; setHdCoin(114); @@ -2008,7 +2129,6 @@ }, { name: "LTC - Litecoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.litecoin; setHdCoin(2); @@ -2017,7 +2137,6 @@ }, { name: "LYNX - Lynx", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.lynx; setHdCoin(191); @@ -2025,15 +2144,28 @@ }, { name: "MAZA - Maza", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.maza; setHdCoin(13); }, }, + { + name: "MEC - Megacoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.megacoin; + setHdCoin(217); + }, + }, + { + name: "MIX - MIX", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(76); + }, + }, { name: "MNX - Minexcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.minexcoin; setHdCoin(182); @@ -2041,15 +2173,21 @@ }, { name: "MONA - Monacoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.monacoin, setHdCoin(22); }, }, + { + name: "MUSIC - Musicoin", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(184); + }, + }, { name: "NAV - Navcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.navcoin; setHdCoin(130); @@ -2057,7 +2195,6 @@ }, { name: "NEBL - Neblio", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.neblio; setHdCoin(146); @@ -2065,7 +2202,6 @@ }, { name: "NEOS - Neoscoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.neoscoin; setHdCoin(25); @@ -2073,7 +2209,6 @@ }, { name: "NLG - Gulden", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.gulden; setHdCoin(87); @@ -2081,7 +2216,6 @@ }, { name: "NMC - Namecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.namecoin; setHdCoin(7); @@ -2089,7 +2223,6 @@ }, { name: "NRG - Energi", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.energi; setHdCoin(204); @@ -2097,7 +2230,6 @@ }, { name: "NRO - Neurocoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.neurocoin; setHdCoin(110); @@ -2105,7 +2237,6 @@ }, { name: "NSR - Nushares", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.nushares; setHdCoin(11); @@ -2113,7 +2244,6 @@ }, { name: "NYC - Newyorkc", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.newyorkc; setHdCoin(179); @@ -2121,7 +2251,6 @@ }, { name: "NVC - Novacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.novacoin; setHdCoin(50); @@ -2129,7 +2258,6 @@ }, { name: "OK - Okcash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.okcash; setHdCoin(69); @@ -2137,7 +2265,6 @@ }, { name: "OMNI - Omnicore", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.omnicore; setHdCoin(200); @@ -2145,23 +2272,35 @@ }, { name: "ONX - Onixcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.onixcoin; setHdCoin(174); }, + }, + { + name: "PHR - Phore", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.phore; + setHdCoin(444); + }, }, { name: "PINK - Pinkcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.pinkcoin; setHdCoin(117); }, }, { - name: "PIVX - PIVX", + name: "PIRL - Pirl", segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(164); + }, + }, + { + name: "PIVX - PIVX", onSelect: function() { network = bitcoinjs.bitcoin.networks.pivx; setHdCoin(119); @@ -2169,15 +2308,21 @@ }, { name: "PIVX - PIVX Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.pivxtestnet; setHdCoin(1); }, }, { - name: "POSW - POSWcoin", + name: "POA - Poa", segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(178); + }, + }, + { + name: "POSW - POSWcoin", onSelect: function() { network = bitcoinjs.bitcoin.networks.poswcoin; setHdCoin(47); @@ -2185,7 +2330,6 @@ }, { name: "POT - Potcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.potcoin; setHdCoin(81); @@ -2193,15 +2337,20 @@ }, { name: "PPC - Peercoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.peercoin; setHdCoin(6); }, + }, + { + name: "PRJ - ProjectCoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.projectcoin; + setHdCoin(533); + }, }, { name: "PSB - Pesobit", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.pesobit; setHdCoin(62); @@ -2209,15 +2358,20 @@ }, { name: "PUT - Putincoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.putincoin; setHdCoin(122); }, }, + { + name: "RVN - Ravencoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.ravencoin; + setHdCoin(175); + }, + }, { name: "RBY - Rubycoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.rubycoin; setHdCoin(16); @@ -2225,23 +2379,34 @@ }, { name: "RDD - Reddcoin", - segwitAvailable: false, onSelect: function() { - network = bitcoinjs.bitcoin.networks.reddoin; + network = bitcoinjs.bitcoin.networks.reddcoin; setHdCoin(4); }, }, { name: "RVR - RevolutionVR", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.revolutionvr; setHdCoin(129); }, }, + { + name: "SAFE - Safecoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.safecoin; + setHdCoin(19165); + }, + }, + { + name: "SLS - Salus", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.salus; + setHdCoin(63); + }, + }, { name: "SDC - ShadowCash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.shadow; setHdCoin(35); @@ -2249,7 +2414,6 @@ }, { name: "SDC - ShadowCash Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.shadowtn; setHdCoin(1); @@ -2257,7 +2421,6 @@ }, { name: "SLM - Slimcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.slimcoin; setHdCoin(63); @@ -2265,7 +2428,6 @@ }, { name: "SLM - Slimcoin Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.slimcointn; setHdCoin(111); @@ -2273,7 +2435,6 @@ }, { name: "SLR - Solarcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.solarcoin; setHdCoin(58); @@ -2281,23 +2442,41 @@ }, { name: "SMLY - Smileycoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.smileycoin; setHdCoin(59); }, }, + { + name: "STASH - Stash", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.stash; + setHdCoin(0xC0C0); + }, + }, + { + name: "STASH - Stash Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.stashtn; + setHdCoin(0xCAFE); + }, + }, { name: "STRAT - Stratis", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.stratis; setHdCoin(105); }, }, + { + name: "TSTRAT - Stratis Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.stratistest; + setHdCoin(105); + }, + }, { name: "SYS - Syscoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.syscoin; setHdCoin(57); @@ -2305,7 +2484,6 @@ }, { name: "THC - Hempcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.hempcoin; setHdCoin(113); @@ -2313,7 +2491,6 @@ }, { name: "TOA - Toa", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.toa; setHdCoin(159); @@ -2321,7 +2498,6 @@ }, { name: "USC - Ultimatesecurecash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.ultimatesecurecash; setHdCoin(112); @@ -2329,7 +2505,6 @@ }, { name: "USNBT - NuBits", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.nubits; setHdCoin(12); @@ -2337,7 +2512,6 @@ }, { name: "UNO - Unobtanium", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.unobtanium; setHdCoin(92); @@ -2345,7 +2519,6 @@ }, { name: "VASH - Vpncoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.vpncoin; setHdCoin(33); @@ -2353,7 +2526,6 @@ }, { name: "VIA - Viacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.viacoin; setHdCoin(14); @@ -2361,7 +2533,6 @@ }, { name: "VIA - Viacoin Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.viacointestnet; setHdCoin(1); @@ -2369,7 +2540,6 @@ }, { name: "VIVO - Vivo", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.vivo; setHdCoin(166); @@ -2377,7 +2547,6 @@ }, { name: "VTC - Vertcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.vertcoin; setHdCoin(28); @@ -2385,15 +2554,20 @@ }, { name: "WC - Wincoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.wincoin; setHdCoin(181); }, + }, + { + name: "XAX - Artax", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.artax; + setHdCoin(219); + }, }, { name: "XBC - Bitcoinplus", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoinplus; setHdCoin(65); @@ -2401,7 +2575,6 @@ }, { name: "XMY - Myriadcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.myriadcoin; setHdCoin(90); @@ -2409,7 +2582,6 @@ }, { name: "XRP - Ripple", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoin; setHdCoin(144); @@ -2417,7 +2589,6 @@ }, { name: "XVC - Vcash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.vcash; setHdCoin(127); @@ -2425,15 +2596,21 @@ }, { name: "XVG - Verge", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.verge; setHdCoin(77); }, }, { - name: "XWC - Whitecoin", + name: "XUEZ - Xuez", segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.xuez; + setHdCoin(225); + }, + }, + { + name: "XWC - Whitecoin", onSelect: function() { network = bitcoinjs.bitcoin.networks.whitecoin; setHdCoin(155); @@ -2441,7 +2618,6 @@ }, { name: "XZC - Zcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.zcoin; setHdCoin(136); @@ -2449,7 +2625,6 @@ }, { name: "ZCL - Zclassic", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.zclassic; setHdCoin(147); @@ -2457,23 +2632,13 @@ }, { name: "ZEC - Zcash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.zcash; setHdCoin(133); }, }, - { - name: "XUEZ - Xuez", - segwitAvailable: false, - onSelect: function() { - network = bitcoinjs.bitcoin.networks.xuez; - setHdCoin(225); - }, - }, { name: "ZEN - Zencash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.zencash; setHdCoin(121); @@ -2502,6 +2667,13 @@ DOM.bip32path.val("m/0'/0"); DOM.hardenedAddresses.prop('checked', false); }, + }, + { + name: "Coinomi, Ledger", + onSelect: function() { + DOM.bip32path.val("m/44'/"+DOM.bip44coin.val()+"'/0'"); + DOM.hardenedAddresses.prop('checked', false); + }, } ]