Add a button to remove the "change" in the derivation path for ethereum

This commit is contained in:
Ismaël Bouya
2019-02-24 09:33:14 +01:00
parent bc32c84166
commit 44e705cd31
2 changed files with 53 additions and 20 deletions

View File

@@ -273,7 +273,10 @@
<a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank">External / Internal</a> <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank">External / Internal</a>
</label> </label>
<div class="col-sm-10"> <div class="col-sm-10">
<input id="change-bip44" type="text" class="change form-control" value="0"> <div class="input-group">
<input id="change-bip44" type="text" class="change form-control" value="0">
<a class="default-bip44-change-value btn btn-primary input-group-addon" role="button">Default</a>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">

View File

@@ -15,6 +15,7 @@
var showPrivKey = true; var showPrivKey = true;
var showQr = false; var showQr = false;
var litecoinUseLtub = true; var litecoinUseLtub = true;
var isDefaultBip44ChangeValue = true;
var entropyChangeTimeoutEvent = null; var entropyChangeTimeoutEvent = null;
var phraseChangeTimeoutEvent = null; var phraseChangeTimeoutEvent = null;
@@ -69,6 +70,7 @@
DOM.bip44accountXprv = $("#bip44 .account-xprv"); DOM.bip44accountXprv = $("#bip44 .account-xprv");
DOM.bip44accountXpub = $("#bip44 .account-xpub"); DOM.bip44accountXpub = $("#bip44 .account-xpub");
DOM.bip44change = $("#bip44 .change"); DOM.bip44change = $("#bip44 .change");
DOM.defaultBip44ChangeValue = $("#bip44 .default-bip44-change-value");
DOM.bip49unavailable = $("#bip49 .unavailable"); DOM.bip49unavailable = $("#bip49 .unavailable");
DOM.bip49available = $("#bip49 .available"); DOM.bip49available = $("#bip49 .available");
DOM.bip49path = $("#bip49-path"); DOM.bip49path = $("#bip49-path");
@@ -134,7 +136,9 @@
DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged); DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
DOM.bip32path.on("input", calcForDerivationPath); DOM.bip32path.on("input", calcForDerivationPath);
DOM.bip44account.on("input", calcForDerivationPath); DOM.bip44account.on("input", calcForDerivationPath);
DOM.bip44change.on("input", modifiedDefaultBip44ChangeValue);
DOM.bip44change.on("input", calcForDerivationPath); DOM.bip44change.on("input", calcForDerivationPath);
DOM.defaultBip44ChangeValue.on("click", resetDefaultBip44ChangeValue);
DOM.bip49account.on("input", calcForDerivationPath); DOM.bip49account.on("input", calcForDerivationPath);
DOM.bip49change.on("input", calcForDerivationPath); DOM.bip49change.on("input", calcForDerivationPath);
DOM.bip84account.on("input", calcForDerivationPath); DOM.bip84account.on("input", calcForDerivationPath);
@@ -726,12 +730,14 @@
var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44); var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
var coin = parseIntNoNaN(DOM.bip44coin.val(), 0); var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
var account = parseIntNoNaN(DOM.bip44account.val(), 0); var account = parseIntNoNaN(DOM.bip44account.val(), 0);
var change = parseIntNoNaN(DOM.bip44change.val(), 0); var change = parseIntNoNaN(DOM.bip44change.val(), "");
var path = "m/"; var path = "m";
path += purpose + "'/"; path += "/" + purpose + "'";
path += coin + "'/"; path += "/" + coin + "'";
path += account + "'/"; path += "/" + account + "'";
path += change; if (change !== "") {
path += "/" + change;
}
DOM.bip44path.val(path); DOM.bip44path.val(path);
var derivationPath = DOM.bip44path.val(); var derivationPath = DOM.bip44path.val();
console.log("Using derivation path from BIP44 tab: " + derivationPath); console.log("Using derivation path from BIP44 tab: " + derivationPath);
@@ -1008,19 +1014,7 @@
indexText = indexText + "'"; indexText = indexText + "'";
} }
// Ethereum values are different // Ethereum values are different
if ((networks[DOM.network.val()].name == "ETH - Ethereum") if (networkIsEthereum()) {
|| (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")
|| (networks[DOM.network.val()].name == "VET - VeChain")
) {
var privKeyBuffer = keyPair.d.toBuffer(32); var privKeyBuffer = keyPair.d.toBuffer(32);
privkey = privKeyBuffer.toString('hex'); privkey = privKeyBuffer.toString('hex');
var addressBuffer = ethUtil.privateToAddress(privKeyBuffer); var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
@@ -1636,6 +1630,22 @@
return DOM.bip32tab.hasClass("active"); return DOM.bip32tab.hasClass("active");
} }
function networkIsEthereum() {
var name = networks[DOM.network.val()].name;
return (name == "ETH - Ethereum")
|| (name == "ETC - Ethereum Classic")
|| (name == "PIRL - Pirl")
|| (name == "MIX - MIX")
|| (name == "MUSIC - Musicoin")
|| (name == "POA - Poa")
|| (name == "EXP - Expanse")
|| (name == "CLO - Callisto")
|| (name == "DXN - DEXON")
|| (name == "ELLA - Ellaism")
|| (name == "ESN - Ethersocial Network")
|| (name == "VET - VeChain")
}
function networkHasSegwit() { function networkHasSegwit() {
var n = network; var n = network;
if ("baseNetwork" in network) { if ("baseNetwork" in network) {
@@ -1665,10 +1675,30 @@
return DOM.bip141tab.hasClass("active"); return DOM.bip141tab.hasClass("active");
} }
function setBip44ChangeValue() {
if (isDefaultBip44ChangeValue) {
if (networkIsEthereum()) {
DOM.bip44change.val("");
} else {
DOM.bip44change.val(0);
}
}
}
function modifiedDefaultBip44ChangeValue() {
isDefaultBip44ChangeValue = false;
}
function resetDefaultBip44ChangeValue() {
isDefaultBip44ChangeValue = true;
setBip44ChangeValue();
}
function setHdCoin(coinValue) { function setHdCoin(coinValue) {
DOM.bip44coin.val(coinValue); DOM.bip44coin.val(coinValue);
DOM.bip49coin.val(coinValue); DOM.bip49coin.val(coinValue);
DOM.bip84coin.val(coinValue); DOM.bip84coin.val(coinValue);
setBip44ChangeValue();
} }
function showSegwitAvailable() { function showSegwitAvailable() {