UNPKG

@bitgo/utxo-bin

Version:

Command-line utility for BitGo UTXO transactions

79 lines 7.94 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); const assert = __importStar(require("assert")); const utxolib = __importStar(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVBZGRyZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9nZW5lcmF0ZUFkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFFakMseURBQTJDO0FBRTNDLDREQU1nQztBQUVoQyw2Q0FBNEM7QUFFNUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFO0lBQzVCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUEseUJBQVksRUFBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0csdUJBQXVCO0lBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRztRQUN2QyxvQ0FBb0M7UUFDcEMsb0NBQW9DO1FBQ3BDLG9DQUFvQztRQUNwQyxvQ0FBb0M7S0FDckMsQ0FBQztJQUNGLEVBQUUsQ0FBQywyQkFBMkIsRUFBRTtRQUM5QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFBLDRDQUEwQixFQUFDO1lBQ3pDLE9BQU87WUFDUCxTQUFTO1lBQ1QsUUFBUTtZQUNSLEtBQUssRUFBRSxJQUFBLGlDQUFlLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZCxDQUFDLEVBQUUsQ0FBQztZQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBQSwwQ0FBd0IsRUFBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRTtRQUN6QyxzQ0FBc0M7UUFDdEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUEsMkNBQXlCLEVBQUM7WUFDeEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTztZQUNqQyxVQUFVLEVBQUUsY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJO1lBQzdDLEtBQUssRUFBRSxJQUFBLGlDQUFlLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsRUFBRSxDQUFDO1lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFBLHlDQUF1QixFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQge1xuICBmb3JtYXREZXNjcmlwdG9yQWRkcmVzcyxcbiAgZm9ybWF0Rml4ZWRTY3JpcHRBZGRyZXNzLFxuICBnZW5lcmF0ZURlc2NyaXB0b3JBZGRyZXNzLFxuICBnZW5lcmF0ZUZpeGVkU2NyaXB0QWRkcmVzcyxcbiAgcGFyc2VJbmRleFJhbmdlLFxufSBmcm9tICcuLi9zcmMvZ2VuZXJhdGVBZGRyZXNzJztcblxuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnLi9iaXAzMi51dGlsJztcblxuZGVzY3JpYmUoJ2dlbmVyYXRlQWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBbdXNlcktleSwgYmFja3VwS2V5LCBiaXRnb0tleV0gPSBnZXRLZXlUcmlwbGUoJ2dlbmVyYXRlQWRkcmVzcycpLm1hcCgoaykgPT4gay5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpO1xuICAvLyBhZGRyJHtjaGFpbn0ke2luZGV4fVxuICBjb25zdCBbYWRkcjAwLCBhZGRyMTAsIGFkZHIwMSwgYWRkcjExXSA9IFtcbiAgICAnMzhGSHhjVTdLWTRFMm5ERWV6RVZjS1dHdkh5OTcxN2VoRicsXG4gICAgJzM1UWcxVXFWV1NKZHRGMXlzZno5aDNLUkdkazl1SDhpWXgnLFxuICAgICczQVJuc2hzTFhFOVFmSmVtUWRvS0wya3A2VFJxR29oTER6JyxcbiAgICAnM1F4S1c5M05OOENRckthTnFrRHNBWFB5eFBzcnhmVFlNRScsXG4gIF07XG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChjb25zdCBsIG9mIGdlbmVyYXRlRml4ZWRTY3JpcHRBZGRyZXNzKHtcbiAgICAgIHVzZXJLZXksXG4gICAgICBiYWNrdXBLZXksXG4gICAgICBiaXRnb0tleSxcbiAgICAgIGluZGV4OiBwYXJzZUluZGV4UmFuZ2UoWycwLTEnXSksXG4gICAgICBmb3JtYXQ6ICclYScsXG4gICAgICBjaGFpbjogWzAsIDFdLFxuICAgIH0pKSB7XG4gICAgICBsaW5lcy5wdXNoKGZvcm1hdEZpeGVkU2NyaXB0QWRkcmVzcyhsLCAnJWEnKSk7XG4gICAgfVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGxpbmVzLmxlbmd0aCwgNCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChsaW5lcywgW2FkZHIwMCwgYWRkcjEwLCBhZGRyMDEsIGFkZHIxMV0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGRlc2NyaXB0b3IgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIG9ubHkgZ2VuZXJhdGUgYWRkcmVzc2VzIGZvciBjaGFpbiAwXG4gICAgY29uc3QgeHB1YnMgPSBbdXNlcktleSwgYmFja3VwS2V5LCBiaXRnb0tleV0ubWFwKCh4KSA9PiB4ICsgJy8wLzAvMC8qJyk7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGwgb2YgZ2VuZXJhdGVEZXNjcmlwdG9yQWRkcmVzcyh7XG4gICAgICBuZXR3b3JrOiB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4sXG4gICAgICBkZXNjcmlwdG9yOiBgc2gobXVsdGkoMiwke3hwdWJzLmpvaW4oJywnKX0pKWAsXG4gICAgICBpbmRleDogcGFyc2VJbmRleFJhbmdlKFsnMC0xJ10pLFxuICAgICAgZm9ybWF0OiAnJWQnLFxuICAgIH0pKSB7XG4gICAgICBsaW5lcy5wdXNoKGZvcm1hdERlc2NyaXB0b3JBZGRyZXNzKGwsICclYScpKTtcbiAgICB9XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChsaW5lcywgW2FkZHIwMCwgYWRkcjAxXSk7XG4gIH0pO1xufSk7XG4iXX0=