X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git;a=blobdiff_plain;f=src%2Fjs%2Findex.js;h=9578146ad891b054a3495d8a2583f81737520781;hp=9d34563cf4e0cefdf880b23f278742e3c4326a4d;hb=e2186682ac0cfa1f301c226408cdfb438f7b4d6e;hpb=f62138da711d22d9267892cb2a9f63862ee61b5b diff --git a/src/js/index.js b/src/js/index.js index 9d34563..9578146 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); } @@ -813,7 +887,7 @@ var keyPair = key.keyPair; var useUncompressed = useBip38; if (useUncompressed) { - keyPair = new bitcoinjs.bitcoin.ECPair(keyPair.d, null, { compressed: false }); + keyPair = new bitcoinjs.bitcoin.ECPair(keyPair.d, null, { network: network, compressed: false }); } // get address var address = keyPair.getAddress().toString(); @@ -821,7 +895,7 @@ var hasPrivkey = !key.isNeutered(); var privkey = "NA"; if (hasPrivkey) { - privkey = keyPair.toWIF(network); + privkey = keyPair.toWIF(); // BIP38 encode private key if required if (useBip38) { privkey = bitcoinjsBip38.encrypt(keyPair.d.toBuffer(), false, bip38password, function(p) { @@ -836,7 +910,18 @@ 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") + || (networks[DOM.network.val()].name == "DXN - DEXON") + || (networks[DOM.network.val()].name == "ELLA - Ellaism") + || (networks[DOM.network.val()].name == "ESN - Ethersocial Network") + ) { var privKeyBuffer = keyPair.d.toBuffer(32); privkey = privKeyBuffer.toString('hex'); var addressBuffer = ethUtil.privateToAddress(privKeyBuffer); @@ -846,6 +931,28 @@ privkey = ethUtil.addHexPrefix(privkey); pubkey = ethUtil.addHexPrefix(pubkey); } + + // Stellar is different + if (networks[DOM.network.val()].name == "XLM - Stellar") { + var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44); + var coin = parseIntNoNaN(DOM.bip44coin.val(), 0); + var path = "m/"; + path += purpose + "'/"; + path += coin + "'/" + index + "'"; + var keypair = stellarUtil.getKeypair(path, seed); + indexText = path; + privkey = keypair.secret(); + pubkey = address = keypair.publicKey(); + } + if ((networks[DOM.network.val()].name == "NAS - Nebulas")) { + var NasAccount = require("nebulas-account"); + var privKeyBuffer = keyPair.d.toBuffer(32); + var nebulasAccount = new NasAccount(); + nebulasAccount.setPrivateKey(privKeyBuffer); + address = nebulasAccount.getAddressString(); + privkey = nebulasAccount.getPrivateKeyString(); + pubkey = nebulasAccount.getPublicKeyString(); + } // Ripple values are different if (networks[DOM.network.val()].name == "XRP - Ripple") { privkey = convertRipplePriv(privkey); @@ -861,6 +968,13 @@ address = bchaddr.toBitpayAddress(address); } } + // Bitcoin Cash address format may vary + if (networks[DOM.network.val()].name == "SLP - Simple Ledger Protocol") { + var bchAddrType = DOM.bitcoinCashAddressType.filter(":checked").val(); + if (bchAddrType == "cashaddr") { + address = bchaddr.toSlpAddress(address); + } + } // Segwit addresses are different if (isSegwit) { if (!segwitAvailable) { @@ -879,6 +993,17 @@ address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network) } } + + if ((networks[DOM.network.val()].name == "CRW - Crown")) { + address = bitcoinjs.bitcoin.networks.crown.toNewAddress(address); + } + + if (networks[DOM.network.val()].name == "EOS - EOSIO") { + address = "" + pubkey = eosUtil.bufferToPublic(keyPair.getPublicKeyBuffer()); + privkey = eosUtil.bufferToPrivate(keyPair.d.toBuffer(32)); + } + addAddressToList(indexText, address, pubkey, privkey); if (isLast) { hidePending(); @@ -1391,7 +1516,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 +1553,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 +1562,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 +1678,6 @@ var networks = [ { name: "AC - Asiacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.asiacoin; setHdCoin(51); @@ -1544,7 +1685,6 @@ }, { name: "ACC - Adcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.adcoin; setHdCoin(161); @@ -1552,7 +1692,6 @@ }, { name: "AUR - Auroracoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.auroracoin; setHdCoin(85); @@ -1560,15 +1699,27 @@ }, { 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: "BOLI - Bolivarcoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bolivarcoin; + setHdCoin(278); + }, }, { name: "BCA - Bitcoin Atom", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.atom; setHdCoin(185); @@ -1576,7 +1727,6 @@ }, { name: "BCH - Bitcoin Cash", - segwitAvailable: false, onSelect: function() { DOM.bitcoinCashAddressTypeContainer.removeClass("hidden"); setHdCoin(145); @@ -1584,7 +1734,6 @@ }, { name: "BEET - Beetlecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.beetlecoin; setHdCoin(800); @@ -1592,7 +1741,6 @@ }, { name: "BELA - Belacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.belacoin; setHdCoin(73); @@ -1600,15 +1748,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,15 +1776,20 @@ }, { name: "BSD - Bitsend", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitsend; setHdCoin(91); }, + }, + { + name: "BST - BlockStamp", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.blockstamp; + setHdCoin(254); + }, }, { name: "BTA - Bata", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.bata; setHdCoin(89); @@ -1632,7 +1797,6 @@ }, { name: "BTC - Bitcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoin; setHdCoin(0); @@ -1640,15 +1804,41 @@ }, { 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", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoinprivate; + setHdCoin(183); + }, + }, + { + name: "BTCZ - Bitcoinz", + 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); @@ -1656,7 +1846,6 @@ }, { name: "BTX - Bitcore", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcore; setHdCoin(160); @@ -1664,15 +1853,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); @@ -1680,15 +1874,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); @@ -1696,7 +1896,6 @@ }, { name: "CMP - Compcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.compcoin; setHdCoin(71); @@ -1704,15 +1903,20 @@ }, { name: "CRAVE - Crave", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.crave; setHdCoin(186); }, }, + { + name: "CRW - Crown (Legacy)", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.crown; + setHdCoin(72); + }, + }, { name: "CRW - Crown", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.crown; setHdCoin(72); @@ -1720,7 +1924,6 @@ }, { name: "DASH - Dash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dash; setHdCoin(5); @@ -1728,7 +1931,6 @@ }, { name: "DASH - Dash Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dashtn; setHdCoin(1); @@ -1736,7 +1938,6 @@ }, { name: "DFC - Defcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.defcoin; setHdCoin(1337); @@ -1744,7 +1945,6 @@ }, { name: "DGB - Digibyte", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.digibyte; setHdCoin(20); @@ -1752,7 +1952,6 @@ }, { name: "DGC - Digitalcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.digitalcoin; setHdCoin(18); @@ -1760,7 +1959,6 @@ }, { name: "DMD - Diamond", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.diamond; setHdCoin(152); @@ -1768,7 +1966,6 @@ }, { name: "DNR - Denarius", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.denarius; setHdCoin(116); @@ -1776,15 +1973,27 @@ }, { name: "DOGE - Dogecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dogecoin; setHdCoin(3); }, }, + { + name: "DOGEt - Dogecoin Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.dogecointestnet; + setHdCoin(1); + }, + }, + { + name: "DXN - DEXON", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(237); + }, + }, { name: "ECN - Ecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.ecoin; setHdCoin(115); @@ -1792,7 +2001,6 @@ }, { name: "EDRC - Edrcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.edrcoin; setHdCoin(56); @@ -1800,15 +2008,21 @@ }, { name: "EFL - Egulden", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.egulden; setHdCoin(78); }, }, { - name: "EMC2 - Einsteinium", + name: "ELLA - Ellaism", segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(163); + }, + }, + { + name: "EMC2 - Einsteinium", onSelect: function() { network = bitcoinjs.bitcoin.networks.einsteinium; setHdCoin(41); @@ -1816,15 +2030,36 @@ }, { name: "ERC - Europecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.europecoin; setHdCoin(151); }, }, { - name: "ETH - Ethereum", + name: "EOS - EOSIO", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(194); + }, + }, + { + name: "ESN - Ethersocial Network", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(31102); + }, + }, + { + 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); @@ -1832,15 +2067,42 @@ }, { 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: "FIX - FIX", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.fix; + setHdCoin(336); + }, + }, + { + name: "FIX - FIX Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.fixtestnet; + setHdCoin(1); + }, + }, { name: "FJC - Fujicoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.fujicoin; setHdCoin(75); @@ -1848,7 +2110,6 @@ }, { name: "FLASH - Flashcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.flashcoin; setHdCoin(120); @@ -1856,7 +2117,6 @@ }, { name: "FRST - Firstcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.firstcoin; setHdCoin(167); @@ -1864,7 +2124,6 @@ }, { name: "FTC - Feathercoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.feathercoin; setHdCoin(8); @@ -1872,7 +2131,6 @@ }, { name: "GAME - GameCredits", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.game; setHdCoin(101); @@ -1880,7 +2138,6 @@ }, { name: "GBX - Gobyte", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.gobyte; setHdCoin(176); @@ -1888,7 +2145,6 @@ }, { name: "GCR - GCRCoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.gcr; setHdCoin(79); @@ -1896,7 +2152,6 @@ }, { name: "GRC - Gridcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.gridcoin; setHdCoin(84); @@ -1904,15 +2159,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); @@ -1920,7 +2180,6 @@ }, { name: "IOP - Iop", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.iop; setHdCoin(66); @@ -1928,7 +2187,6 @@ }, { name: "IXC - Ixcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.ixcoin; setHdCoin(86); @@ -1936,7 +2194,6 @@ }, { name: "JBS - Jumbucks", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.jumbucks; setHdCoin(26); @@ -1960,7 +2217,6 @@ }, { name: "LBC - Library Credits", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.lbry; setHdCoin(140); @@ -1968,7 +2224,6 @@ }, { name: "LCC - Litecoincash", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.litecoincash; setHdCoin(192); @@ -1976,7 +2231,6 @@ }, { name: "LDCN - Landcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.landcoin; setHdCoin(63); @@ -1984,24 +2238,44 @@ }, { name: "LINX - Linx", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.linx; setHdCoin(114); }, }, + { + name: "LKR - Lkrcoin", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.lkrcoin; + setHdCoin(557); + }, + }, { name: "LTC - Litecoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.litecoin; setHdCoin(2); DOM.litecoinLtubContainer.removeClass("hidden"); }, }, + { + name: "LTCt - Litecoin Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.litecointestnet; + setHdCoin(1); + DOM.litecoinLtubContainer.removeClass("hidden"); + }, + }, + { + name: "LTZ - LitecoinZ", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.litecoinz; + setHdCoin(221); + }, + }, { name: "LYNX - Lynx", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.lynx; setHdCoin(191); @@ -2009,15 +2283,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); @@ -2025,23 +2312,35 @@ }, { 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); }, }, + { + name: "NAS - Nebulas", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(2718); + }, + }, { name: "NEBL - Neblio", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.neblio; setHdCoin(146); @@ -2049,15 +2348,20 @@ }, { name: "NEOS - Neoscoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.neoscoin; setHdCoin(25); }, }, + { + name: "NIX - NIX Platform", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.nix; + setHdCoin(400); + }, + }, { name: "NLG - Gulden", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.gulden; setHdCoin(87); @@ -2065,15 +2369,20 @@ }, { name: "NMC - Namecoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.namecoin; setHdCoin(7); }, }, + { + name: "NRG - Energi", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.energi; + setHdCoin(204); + }, + }, { name: "NRO - Neurocoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.neurocoin; setHdCoin(110); @@ -2081,7 +2390,6 @@ }, { name: "NSR - Nushares", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.nushares; setHdCoin(11); @@ -2089,7 +2397,6 @@ }, { name: "NYC - Newyorkc", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.newyorkc; setHdCoin(179); @@ -2097,7 +2404,6 @@ }, { name: "NVC - Novacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.novacoin; setHdCoin(50); @@ -2105,7 +2411,6 @@ }, { name: "OK - Okcash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.okcash; setHdCoin(69); @@ -2113,31 +2418,49 @@ }, { name: "OMNI - Omnicore", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.omnicore; setHdCoin(200); }, }, + { + name: "ONION - DeepOnion", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.deeponion; + setHdCoin(305); + }, + }, { 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); @@ -2145,15 +2468,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); @@ -2161,7 +2490,6 @@ }, { name: "POT - Potcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.potcoin; setHdCoin(81); @@ -2169,15 +2497,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); @@ -2185,15 +2518,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); @@ -2201,23 +2539,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); @@ -2225,7 +2574,6 @@ }, { name: "SDC - ShadowCash Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.shadowtn; setHdCoin(1); @@ -2233,7 +2581,6 @@ }, { name: "SLM - Slimcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.slimcoin; setHdCoin(63); @@ -2241,15 +2588,20 @@ }, { name: "SLM - Slimcoin Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.slimcointn; setHdCoin(111); }, }, + { + name: "SLP - Simple Ledger Protocol", + onSelect: function() { + DOM.bitcoinCashAddressTypeContainer.removeClass("hidden"); + setHdCoin(245); + }, + }, { name: "SLR - Solarcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.solarcoin; setHdCoin(58); @@ -2257,23 +2609,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); @@ -2281,7 +2651,6 @@ }, { name: "THC - Hempcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.hempcoin; setHdCoin(113); @@ -2289,15 +2658,27 @@ }, { name: "TOA - Toa", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.toa; setHdCoin(159); }, }, + { + name: "TWINS - TWINS", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.twins; + setHdCoin(970); + }, + }, + { + name: "TWINS - TWINS Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.twinstestnet; + setHdCoin(1); + }, + }, { name: "USC - Ultimatesecurecash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.ultimatesecurecash; setHdCoin(112); @@ -2305,7 +2686,6 @@ }, { name: "USNBT - NuBits", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.nubits; setHdCoin(12); @@ -2313,7 +2693,6 @@ }, { name: "UNO - Unobtanium", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.unobtanium; setHdCoin(92); @@ -2321,7 +2700,6 @@ }, { name: "VASH - Vpncoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.vpncoin; setHdCoin(33); @@ -2329,7 +2707,6 @@ }, { name: "VIA - Viacoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.viacoin; setHdCoin(14); @@ -2337,7 +2714,6 @@ }, { name: "VIA - Viacoin Testnet", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.viacointestnet; setHdCoin(1); @@ -2345,7 +2721,6 @@ }, { name: "VIVO - Vivo", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.vivo; setHdCoin(166); @@ -2353,7 +2728,6 @@ }, { name: "VTC - Vertcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.vertcoin; setHdCoin(28); @@ -2361,23 +2735,34 @@ }, { 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); }, }, + { + name: "XLM - Stellar", + onSelect: function() { + network = stellarUtil.dummyNetwork; + setHdCoin(148); + }, + }, { name: "XMY - Myriadcoin", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.myriadcoin; setHdCoin(90); @@ -2385,7 +2770,6 @@ }, { name: "XRP - Ripple", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoin; setHdCoin(144); @@ -2393,7 +2777,6 @@ }, { name: "XVC - Vcash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.vcash; setHdCoin(127); @@ -2401,15 +2784,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); @@ -2417,26 +2806,30 @@ }, { name: "XZC - Zcoin", - segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.zcoin; setHdCoin(136); }, }, + { + name: "ZCL - Zclassic", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.zclassic; + setHdCoin(147); + }, + }, { name: "ZEC - Zcash", - segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.zcash; setHdCoin(133); }, }, { - name: "XUEZ - Xuez", - segwitAvailable: false, + name: "ZEN - Zencash", onSelect: function() { - network = bitcoinjs.bitcoin.networks.xuez; - setHdCoin(225); + network = bitcoinjs.bitcoin.networks.zencash; + setHdCoin(121); }, }, ] @@ -2462,6 +2855,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); + }, } ]