Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
bokkypoobah committed Apr 19, 2024
1 parent ef81fe1 commit 8b5d8ec
Showing 1 changed file with 42 additions and 27 deletions.
69 changes: 42 additions & 27 deletions docs/offline.html
Original file line number Diff line number Diff line change
Expand Up @@ -123,15 +123,23 @@
</b-form-group>

<b-form-group v-if="wallet.tab == 0" label="Mnemonic Passphrase:" label-for="wallet-mnemonicpassphrase" label-size="sm" label-cols-sm="2" label-align-sm="right" class="mx-0 my-2 p-0">
<!-- <b-form-input type="text" size="sm" id="wallet-mnemonicpassphrase" v-model="wallet.mnemonic.passphrase" @change="newWallet();" class="w-25"></b-form-input> -->
<b-form-input type="text" size="sm" id="wallet-mnemonicpassphrase" v-model="wallet.mnemonic.passphrase" @change="recomputeFromMnemonic();" placeholder="Optional" style="max-width: 300px;"></b-form-input>
<!-- <b-form-input type="text" size="sm" id="wallet-mnemonicpassphrase" v-model="wallet.mnemonic.passphrase" @change="recomputeFromMnemonic();" class="w-25"></b-form-input> -->
<b-form-input type="text" size="sm" id="wallet-mnemonicpassphrase" v-model="wallet.mnemonic.passphrase" @change="generateDerivedAddresses();" placeholder="Optional" style="max-width: 300px;"></b-form-input>
</b-form-group>

<b-form-group v-if="wallet.tab == 0" label="Derivation Path:" label-for="wallet-derivationpath" label-size="sm" label-cols-sm="2" label-align-sm="right" class="mx-0 my-1 p-0">
<b-form-select size="sm" id="wallet-derivationpath" v-model="wallet.derivationPath" :options="derivationPathOptions" style="max-width: 300px;"></b-form-select>
<b-form-select size="sm" id="wallet-derivationpath" v-model="wallet.derivationPath" :options="derivationPathOptions" @change="generateDerivedAddresses();" style="max-width: 300px;"></b-form-select>
</b-form-group>

<b-form-group v-if="wallet.tab == 0" label="Mnemonic Path:" label-for="wallet-mnemonicpath" label-size="sm" label-cols-sm="2" label-align-sm="right" class="mx-0 my-2 p-0">
<b-form-group v-if="wallet.tab == 0" label="Index From:" label-for="wallet-indexfrom" label-size="sm" label-cols-sm="2" label-align-sm="right" class="mx-0 my-1 p-0">
<b-form-input type="number" size="sm" id="wallet-indexfrom" v-model="wallet.indexFrom" @change="generateDerivedAddresses();" style="max-width: 100px;"></b-form-input>
</b-form-group>

<b-form-group v-if="wallet.tab == 0" label="Index To:" label-for="wallet-indexto" label-size="sm" label-cols-sm="2" label-align-sm="right" class="mx-0 my-1 p-0">
<b-form-input type="number" size="sm" id="wallet-indexto" v-model="wallet.indexTo" @change="generateDerivedAddresses();" style="max-width: 100px;"></b-form-input>
</b-form-group>

<b-form-group v-if="false && wallet.tab == 0" label="Mnemonic Path:" label-for="wallet-mnemonicpath" label-size="sm" label-cols-sm="2" label-align-sm="right" class="mx-0 my-2 p-0">
<b-form-input type="text" size="sm" :readonly="wallet.tab == 0 || wallet.tab == 3" id="wallet-mnemonicpath" v-model="wallet.mnemonic.path" @change="recomputeFromMnemonic();" class="w-50"></b-form-input>
</b-form-group>

Expand All @@ -145,7 +153,7 @@
<b-button size="sm" :disabled="!wallet.privateKey || !!wallet.privateKeyError" @click="showSavePrivateKeyToKeystoreModal()" variant="primary">Save To Keystore</b-button>
</b-form-group>

<b-form-group label="ETH Address:" label-for="output-address" label-size="sm" label-cols-sm="2" label-align-sm="right" class="mx-0 my-3 p-0">
<b-form-group v-if="wallet.tab == 1" label="ETH Address:" label-for="output-address" label-size="sm" label-cols-sm="2" label-align-sm="right" class="mx-0 my-3 p-0">
<b-form-input type="text" size="sm" readonly id="output-address" :value="wallet.address" class="w-50"></b-form-input>
</b-form-group>

Expand Down Expand Up @@ -276,7 +284,7 @@

derivationPath: "m/44'/60'/0'/0/{index}",
indexFrom: 0,
indexTo: 10,
indexTo: 9,

keystoreFile: null,
keystoreFilePassword: null,
Expand All @@ -294,6 +302,8 @@
hiddenUsername: null, // For HTML accessibility
},

addresses: [],

connected: false,
chainId: null,
coinbase: null,
Expand Down Expand Up @@ -338,7 +348,8 @@
derivationPathOptions: [
{ value: "m/44'/60'/0'/0/{index}", text: "BIP-44 m/44'/60'/0'/0/{index}" },
{ value: "m/44'/60'/0'/0/{index}", text: "Legacy (MEW/MyCrypto) m/44'/60'/0'/0/{index}" }, // TODO: Check difference in MM settings with Ledger
{ value: "m/44'/60'/0'/0/{index}/0", text: "Test m/44'/60'/0'/0/{index}/0" },
{ value: "m/44'/60'/0'/{index}/0", text: "Test-1 m/44'/60'/0'/{index}/0" },
{ value: "m/44'/60'/0'/0/{index}/0", text: "Test-2 m/44'/60'/0'/0/{index}/0" },
],
},

Expand All @@ -347,12 +358,6 @@
accountsToSearch() {
return this.settings.searchAttachedAccount ? [ this.coinbase ] : (this.settings.searchAccounts && this.settings.searchAccounts.split(/[, \t\n]+/).filter(name => name.match(/0x[0-9a-fA-F]{40}/)) || []);
},

addresses() {
return [
{ "a": "b" },
];
},
},

// --- METHODS ---
Expand All @@ -375,29 +380,39 @@
this.$bvModal.show('modal-saveprivatekeytokeystore');
},

generateDerivedAddresses() {
console.log(moment().format("HH:mm:ss") + " generateDerivedAddresses");
const results = [];
if (this.wallet.type == 'mnemonic' && this.wallet.mnemonic.phrase) {
const node = ethers.utils.HDNode.fromMnemonic(this.wallet.mnemonic.phrase, this.wallet.mnemonic.passphrase);
for (let index = this.wallet.indexFrom; index <= this.wallet.indexTo; index++) {
let path = this.wallet.derivationPath.replace(/{index}/, index);
const w = node.derivePath(path);
results.push({
index,
path,
privateKey: w.privateKey,
address: w.address,
publicKey: w.publicKey,
compressedPublicKey: ethers.utils.computePublicKey(w.publicKey, true),
});
}
}
this.addresses = results;
},

generateRandomMnemonic() {
console.log(moment().format("HH:mm:ss") + " generateRandomMnemonic - this.wallet.randomBytesLength: " + this.wallet.randomBytesLength);
try {
const randomBytes = ethers.utils.randomBytes(this.wallet.randomBytesLength);
this.wallet.mnemonic.phrase = ethers.utils.entropyToMnemonic(randomBytes);
this.wallet.mnemonic.phraseError == null;
const node = ethers.utils.HDNode.fromMnemonic(this.wallet.mnemonic.phrase, this.wallet.mnemonic.passphrase);
console.log(moment().format("HH:mm:ss") + " generateRandomMnemonic - node: " + JSON.stringify(node, null, 2));
// console.log(moment().format("HH:mm:ss") + " generateRandomMnemonic - randomBytes[" + this.wallet.randomBytesLength + "]: " + this.wallet.mnemonic.phrase);
const defaultPath = "m/44'/60'/0'/0/0";
const wallet = node.derivePath(defaultPath);

this.wallet.type = 'mnemonic';
this.wallet.wallet = wallet;

this.wallet.privateKey = wallet.privateKey;
this.wallet.address = wallet.address;
this.wallet.publicKey = wallet.publicKey;
this.wallet.compressedPublicKey = ethers.utils.computePublicKey(wallet.publicKey, true);
console.log(moment().format("HH:mm:ss") + " generateRandomMnemonic - this.wallet: " + JSON.stringify(this.wallet, null, 2));
} catch (e) {
console.log(moment().format("HH:mm:ss") + " generateRandomMnemonic ERROR: " + e.message);
this.wallet.mnemonic.phrase = null;
this.wallet.mnemonic.phraseError == e.message;
}
this.generateDerivedAddresses();
this.$bvModal.hide('modal-generatemnemonic');
},

Expand Down

0 comments on commit 8b5d8ec

Please sign in to comment.