diff --git a/modules/utxo-bin/src/commands.ts b/modules/utxo-bin/src/commands.ts index 306f664d04..0e3f82341f 100644 --- a/modules/utxo-bin/src/commands.ts +++ b/modules/utxo-bin/src/commands.ts @@ -333,8 +333,11 @@ export const cmdGenerateAddress = { return b .option('network', { alias: 'n', type: 'string' }) .option('userKey', { type: 'string', demandOption: true }) + .option('userKeyPrefix', { type: 'string', default: '0/0' }) .option('backupKey', { type: 'string', demandOption: true }) + .option('backupKeyPrefix', { type: 'string', default: '0/0' }) .option('bitgoKey', { type: 'string', demandOption: true }) + .option('bitgoKeyPrefix', { type: 'string', default: '0/0' }) .option('format', { type: 'string', default: '%p0\t%a', diff --git a/modules/utxo-bin/src/generateAddress.ts b/modules/utxo-bin/src/generateAddress.ts index 48f73e55bb..f7de37bc7a 100644 --- a/modules/utxo-bin/src/generateAddress.ts +++ b/modules/utxo-bin/src/generateAddress.ts @@ -111,15 +111,22 @@ export function parseIndexRange(ranges: string[]): number[] { export function* generateAddress(argv: { network?: utxolib.Network; userKey: string; + userKeyPrefix?: string; backupKey: string; + backupKeyPrefix?: string; bitgoKey: string; + bitgoKeyPrefix?: string; chain?: number[]; format: string; index: number[]; }): Generator { const xpubs = [argv.userKey, argv.backupKey, argv.bitgoKey].map((k) => utxolib.bip32.fromBase58(k)); assert(utxolib.bitgo.isTriple(xpubs)); - const rootXpubs = new utxolib.bitgo.RootWalletKeys(xpubs); + const rootXpubs = new utxolib.bitgo.RootWalletKeys(xpubs, [ + argv.userKeyPrefix ?? utxolib.bitgo.RootWalletKeys.defaultPrefix, + argv.backupKeyPrefix ?? utxolib.bitgo.RootWalletKeys.defaultPrefix, + argv.bitgoKeyPrefix ?? utxolib.bitgo.RootWalletKeys.defaultPrefix, + ]); const chains = argv.chain ?? getDefaultChainCodes(); for (const i of argv.index) { for (const chain of chains) {