UNPKG

@bitgo/utxo-bin

Version:

Command-line utility for BitGo UTXO transactions

46 lines 6.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assert = require("assert"); const utxolib = require("@bitgo/utxo-lib"); const generateAddress_1 = require("../src/generateAddress"); const bip32_util_1 = require("./bip32.util"); describe('generateAddresses', function () { const [userKey, backupKey, bitgoKey] = (0, bip32_util_1.getKeyTriple)('generateAddress').map((k) => k.neutered().toBase58()); // addr${chain}${index} const [addr00, addr10, addr01, addr11] = [ '38FHxcU7KY4E2nDEezEVcKWGvHy9717ehF', '35Qg1UqVWSJdtF1ysfz9h3KRGdk9uH8iYx', '3ARnshsLXE9QfJemQdoKL2kp6TRqGohLDz', '3QxKW93NN8CQrKaNqkDsAXPyxPsrxfTYME', ]; it('should generate addresses', function () { const lines = []; for (const l of (0, generateAddress_1.generateFixedScriptAddress)({ userKey, backupKey, bitgoKey, index: (0, generateAddress_1.parseIndexRange)(['0-1']), format: '%a', chain: [0, 1], })) { lines.push((0, generateAddress_1.formatFixedScriptAddress)(l, '%a')); } assert.strictEqual(lines.length, 4); assert.deepStrictEqual(lines, [addr00, addr10, addr01, addr11]); }); it('should generate descriptor addresses', function () { // only generate addresses for chain 0 const xpubs = [userKey, backupKey, bitgoKey].map((x) => x + '/0/0/0/*'); const lines = []; for (const l of (0, generateAddress_1.generateDescriptorAddress)({ network: utxolib.networks.bitcoin, descriptor: `sh(multi(2,${xpubs.join(',')}))`, index: (0, generateAddress_1.parseIndexRange)(['0-1']), format: '%d', })) { lines.push((0, generateAddress_1.formatDescriptorAddress)(l, '%a')); } assert.deepStrictEqual(lines, [addr00, addr01]); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVBZGRyZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9nZW5lcmF0ZUFkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFFakMsMkNBQTJDO0FBRTNDLDREQU1nQztBQUVoQyw2Q0FBNEM7QUFFNUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFO0lBQzVCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUEseUJBQVksRUFBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0csdUJBQXVCO0lBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRztRQUN2QyxvQ0FBb0M7UUFDcEMsb0NBQW9DO1FBQ3BDLG9DQUFvQztRQUNwQyxvQ0FBb0M7S0FDckMsQ0FBQztJQUNGLEVBQUUsQ0FBQywyQkFBMkIsRUFBRTtRQUM5QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFBLDRDQUEwQixFQUFDO1lBQ3pDLE9BQU87WUFDUCxTQUFTO1lBQ1QsUUFBUTtZQUNSLEtBQUssRUFBRSxJQUFBLGlDQUFlLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZCxDQUFDLEVBQUUsQ0FBQztZQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBQSwwQ0FBd0IsRUFBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRTtRQUN6QyxzQ0FBc0M7UUFDdEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUEsMkNBQXlCLEVBQUM7WUFDeEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTztZQUNqQyxVQUFVLEVBQUUsY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJO1lBQzdDLEtBQUssRUFBRSxJQUFBLGlDQUFlLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsRUFBRSxDQUFDO1lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFBLHlDQUF1QixFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQge1xuICBmb3JtYXREZXNjcmlwdG9yQWRkcmVzcyxcbiAgZm9ybWF0Rml4ZWRTY3JpcHRBZGRyZXNzLFxuICBnZW5lcmF0ZURlc2NyaXB0b3JBZGRyZXNzLFxuICBnZW5lcmF0ZUZpeGVkU2NyaXB0QWRkcmVzcyxcbiAgcGFyc2VJbmRleFJhbmdlLFxufSBmcm9tICcuLi9zcmMvZ2VuZXJhdGVBZGRyZXNzJztcblxuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnLi9iaXAzMi51dGlsJztcblxuZGVzY3JpYmUoJ2dlbmVyYXRlQWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBbdXNlcktleSwgYmFja3VwS2V5LCBiaXRnb0tleV0gPSBnZXRLZXlUcmlwbGUoJ2dlbmVyYXRlQWRkcmVzcycpLm1hcCgoaykgPT4gay5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpO1xuICAvLyBhZGRyJHtjaGFpbn0ke2luZGV4fVxuICBjb25zdCBbYWRkcjAwLCBhZGRyMTAsIGFkZHIwMSwgYWRkcjExXSA9IFtcbiAgICAnMzhGSHhjVTdLWTRFMm5ERWV6RVZjS1dHdkh5OTcxN2VoRicsXG4gICAgJzM1UWcxVXFWV1NKZHRGMXlzZno5aDNLUkdkazl1SDhpWXgnLFxuICAgICczQVJuc2hzTFhFOVFmSmVtUWRvS0wya3A2VFJxR29oTER6JyxcbiAgICAnM1F4S1c5M05OOENRckthTnFrRHNBWFB5eFBzcnhmVFlNRScsXG4gIF07XG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChjb25zdCBsIG9mIGdlbmVyYXRlRml4ZWRTY3JpcHRBZGRyZXNzKHtcbiAgICAgIHVzZXJLZXksXG4gICAgICBiYWNrdXBLZXksXG4gICAgICBiaXRnb0tleSxcbiAgICAgIGluZGV4OiBwYXJzZUluZGV4UmFuZ2UoWycwLTEnXSksXG4gICAgICBmb3JtYXQ6ICclYScsXG4gICAgICBjaGFpbjogWzAsIDFdLFxuICAgIH0pKSB7XG4gICAgICBsaW5lcy5wdXNoKGZvcm1hdEZpeGVkU2NyaXB0QWRkcmVzcyhsLCAnJWEnKSk7XG4gICAgfVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGxpbmVzLmxlbmd0aCwgNCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChsaW5lcywgW2FkZHIwMCwgYWRkcjEwLCBhZGRyMDEsIGFkZHIxMV0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGRlc2NyaXB0b3IgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIG9ubHkgZ2VuZXJhdGUgYWRkcmVzc2VzIGZvciBjaGFpbiAwXG4gICAgY29uc3QgeHB1YnMgPSBbdXNlcktleSwgYmFja3VwS2V5LCBiaXRnb0tleV0ubWFwKCh4KSA9PiB4ICsgJy8wLzAvMC8qJyk7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGwgb2YgZ2VuZXJhdGVEZXNjcmlwdG9yQWRkcmVzcyh7XG4gICAgICBuZXR3b3JrOiB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4sXG4gICAgICBkZXNjcmlwdG9yOiBgc2gobXVsdGkoMiwke3hwdWJzLmpvaW4oJywnKX0pKWAsXG4gICAgICBpbmRleDogcGFyc2VJbmRleFJhbmdlKFsnMC0xJ10pLFxuICAgICAgZm9ybWF0OiAnJWQnLFxuICAgIH0pKSB7XG4gICAgICBsaW5lcy5wdXNoKGZvcm1hdERlc2NyaXB0b3JBZGRyZXNzKGwsICclYScpKTtcbiAgICB9XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChsaW5lcywgW2FkZHIwMCwgYWRkcjAxXSk7XG4gIH0pO1xufSk7XG4iXX0=