Skip to content

Instantly share code, notes, and snippets.

@christroutner
Created January 31, 2021 15:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save christroutner/e0bbd27755cf18b0f2a55252efce60cb to your computer and use it in GitHub Desktop.
Save christroutner/e0bbd27755cf18b0f2a55252efce60cb to your computer and use it in GitHub Desktop.
HD Wallets
/*
Exploring HD wallets.
This script explores the ability to use the tree structure of HD wallets to
generate nested key pairs.
*/
const BCHJS = require("@psf/bch-js");
const bchjs = new BCHJS();
const lang = "english"; // Set the language of the wallet.
async function startTest() {
try {
let outStr = "";
const outObj = {};
// create 256 bit BIP39 mnemonic
const mnemonic = bchjs.Mnemonic.generate(
128,
bchjs.Mnemonic.wordLists()[lang]
);
console.log("BIP44 $BCH Wallet");
outStr += "BIP44 $BCH Wallet\n";
console.log(`128 bit ${lang} BIP39 Mnemonic: `, mnemonic);
outStr += `\n128 bit ${lang} BIP32 Mnemonic:\n${mnemonic}\n\n`;
outObj.mnemonic = mnemonic;
// root seed buffer
const rootSeed = await bchjs.Mnemonic.toSeed(mnemonic);
const masterHDNode = bchjs.HDNode.fromSeed(rootSeed);
// console.log("masterHDNode: ", masterHDNode);
for (let i = 0; i < 10; i++) {
const childNode = masterHDNode.derivePath(`m/44'/${i}`);
console.log(
`m/44'/${i}: ${bchjs.HDNode.toCashAddress(childNode)}`
);
}
for (let i = 0; i < 10; i++) {
const childNode = masterHDNode.derivePath(`m/44'/0/${i}`);
console.log(
`m/44'/0/${i}: ${bchjs.HDNode.toCashAddress(childNode)}`
);
}
for (let i = 0; i < 10; i++) {
const childNode = masterHDNode.derivePath(`m/44'/0/0/0/${i}`);
console.log(
`m/44'/0/0/0/${i}: ${bchjs.HDNode.toCashAddress(childNode)}`
);
}
for (let i = 0; i < 10; i++) {
const childNode = masterHDNode.derivePath(`m/44'/0/0/0/0/${i}`);
console.log(
`m/44'/0/0/0/0/${i}: ${bchjs.HDNode.toCashAddress(childNode)}`
);
}
} catch (err) {
console.error("Error in startTest(): ", err);
}
}
startTest();
BIP44 $BCH Wallet
128 bit english BIP39 Mnemonic: sentence topple present pioneer lemon table orchard voice rain icon clap feed
m/44'/0: bitcoincash:qz53uuxn4fnc2pwc5yht5zjda2u5uta455lhzphyv3
m/44'/1: bitcoincash:qqntwt2j70npdpf43w8uzyedtwn7usx6eqlflze36c
m/44'/2: bitcoincash:qrr5spuwy4sg0rrdeyn5f78uemc332t9qugk33ddr7
m/44'/3: bitcoincash:qrxs8c8xdgjsnzhwqammacd5gm8xlm2hfygn4tq082
m/44'/4: bitcoincash:qrqeedutpm7ltfavsh9lwpp5mqhp6vvmr5u3alzssx
m/44'/5: bitcoincash:qr6h5ts5ckq8mv2m3ayzchc74qtfty98eqjvdd0anr
m/44'/6: bitcoincash:qz49qlgrccjurmn9n7q0sg50hwsq2040v5vj6wlr0t
m/44'/7: bitcoincash:qry9s7u49ar5cunuldw08nxfnmtkuwg9uvzhgnjgw2
m/44'/8: bitcoincash:qqvzdf32lp2w9l9uc3yld6fex0lq02fuayjhh6506r
m/44'/9: bitcoincash:qp4ecxn3a74ud8nvjz6rravaxv44jsp5gv4mz9enml
m/44'/0/0: bitcoincash:qzzjkyw6ecwq4c2rtfltljju2dryj4xzgqy95ffwdg
m/44'/0/1: bitcoincash:qz9ja9vs8m04qyspusmlmfd499sqtjrvpumapepz3k
m/44'/0/2: bitcoincash:qragjv9jux3rlug35ve2jxk5y3ej62atzcu65hpnew
m/44'/0/3: bitcoincash:qqe94um2f70p0f8p46xmg4wml4n4ml4x3qng66ylfv
m/44'/0/4: bitcoincash:qr0dprcenwyfny5z8dtxepjg6kdqrgsh0u3sx7t4pq
m/44'/0/5: bitcoincash:qzt40zel2h5fzw5337lfzqr3c2etw3jjhupg792pee
m/44'/0/6: bitcoincash:qznv059t9mf5vguy8gcw32287skm6xt4xs0z77z09m
m/44'/0/7: bitcoincash:qrh5eaevg70rtv7sjtkdq4exemaf89a36scuckee6d
m/44'/0/8: bitcoincash:qql656pehrr8sswh6z7xy40ap8frcdpzfy4339j9qp
m/44'/0/9: bitcoincash:qzxn0z7ewktte2k3q4wz8rhp3vusxxf5ju97y5xnyl
m/44'/0/0/0/0: bitcoincash:qzrcjsfn4at8s38l0w8rhyjmy6rjrc3ancamw8vqkw
m/44'/0/0/0/1: bitcoincash:qplwgpvnyn0gchruttzsx0ycpsphsmyx5vul4n0re5
m/44'/0/0/0/2: bitcoincash:qz4y03hj5kr4rjdz9dt4xqa2rh7h22a0vq00zdsvjn
m/44'/0/0/0/3: bitcoincash:qq22p23zyavjsk8yz8kg0mpcs0y3cf0lquargjtk62
m/44'/0/0/0/4: bitcoincash:qrqrxen5wm8kuktf8scurzayksh437xcfcvula7j6m
m/44'/0/0/0/5: bitcoincash:qzmv4s4vfvsh8ww6lwrcz8g68ztdg82xyvfjgce8qg
m/44'/0/0/0/6: bitcoincash:qqrcvyquregf0yfxq5vcwsf2llyy2cy8w5xs325wcq
m/44'/0/0/0/7: bitcoincash:qrg6700a0ygdvk9qa4a0x5hh4razy36txgxjhuef96
m/44'/0/0/0/8: bitcoincash:qq4haxm9slukrddne5uws3cleg87lfhknc06dp58wh
m/44'/0/0/0/9: bitcoincash:qrscqrg50mq78sqqmrqkpsjdp8j9dye6nsrw360sx6
m/44'/0/0/0/0/0: bitcoincash:qp5u0dwq9yg4nmlz2esjmcefya83jnuaau580qkq5c
m/44'/0/0/0/0/1: bitcoincash:qrr37r85w477u6pkp2he4fqullgwqhlh3ymwv2ywy7
m/44'/0/0/0/0/2: bitcoincash:qqlw5hje4dmfcu8my2pruxfwquuwm9vthsp36ax82a
m/44'/0/0/0/0/3: bitcoincash:qzyx959zlrankkvk3ujm9g43z00wuetrmswyx66g6p
m/44'/0/0/0/0/4: bitcoincash:qrcpg5wqapclqc60f4a0lc7d3n54qs9skyr806wdpr
m/44'/0/0/0/0/5: bitcoincash:qq7gsk8ckreh4qlzvxpysusf2n3gnxcnuy5j29es0z
m/44'/0/0/0/0/6: bitcoincash:qpwqenw576q4a893gxqvfsrufxmhy82yhceet65dx0
m/44'/0/0/0/0/7: bitcoincash:qqqpzhmwhyt00f0t0um79wnjwulz9zzk0cgwx7l4tf
m/44'/0/0/0/0/8: bitcoincash:qpjxvp7mrydx4z6hff5nstuequ2yxpu57c4m7dzxxq
m/44'/0/0/0/0/9: bitcoincash:qrmvsjd4d673c36p427flrremkau635hjs2y93dx52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment