hns-address/generate-address.js

57 lines
1.7 KiB
JavaScript

/**
* This script generates addresses given an account extended public key
* Usage: edit these fields below and run it like `node generate-address.js`
*/
const assert = require('node:assert/strict');
const HDPublicKey = require('hsd/lib/hd/public');
const Address = require('hsd/lib/primitives/address');
const minimist = require('minimist');
const args = minimist(process.argv.slice(2));
const NETWORK = 'main';
const ACCOUNT_XPUB = args.xpub || 'xpub6BvF6DnLZRV6my62FuQ8nw5TRebL8qr9Wa7u2tE1aEedHWBt4XAfSaNTmP1SM2nXErGWSzxRAHVwqstPzRrsXtA2vn1a4KzLwAVEgLNmfca';
const START = parseInt(args.start || '0');
const NUMBER = parseInt(args.number || '1000');
const END = START + NUMBER - 1;
// Toggle to display change addresses
const DISPLAY_CHANGE = args.change || false;
(() => {
const account = HDPublicKey.fromBase58(ACCOUNT_XPUB, NETWORK);
console.log('[*] Using account public key:', account.xpubkey(NETWORK));
console.log('[*] Generating addresses', START, 'to', END);
assert(END >= START);
if (DISPLAY_CHANGE) {
for (let i = START; i <= END; i++) {
/** @type {Buffer[]} */
const keys = [
account.derive(0).derive(i).publicKey, // receive
account.derive(1).derive(i).publicKey, // change
];
for (const [branch, key] of keys.entries()) {
const addr = Address.fromPubkey(key);
console.log(addr.toString());
}
}
}
else {
for (let i = START; i <= END; i++) {
/** @type {Buffer[]} */
const keys = [
account.derive(0).derive(i).publicKey, // receive
];
for (const [branch, key] of keys.entries()) {
const addr = Address.fromPubkey(key);
console.log(addr.toString());
}
}
}
})();