PHP WebShell
Текущая директория: /opt/BitGoJS/modules/unspents/dist/bin
Просмотр файла: generate_tables.js
"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 fs = __importStar(require("fs/promises"));
const utxolib = __importStar(require("@bitgo/utxo-lib"));
const src_1 = require("../src");
const headers = [
'Script Type',
'Chain Codes',
'Spend Type',
'Input Size (Virtual Bytes)',
'Relative Size (p2trMusig2 = 1.00)',
];
const relativeCostRef = src_1.Dimensions.fromScriptType('taprootKeyPathSpend').getInputsVSize();
function formatMarkdownTable(headers, rows) {
return [headers, headers.map(() => '---'), ...rows].map((row) => `| ${row.join(' | ')} |`).join('\n');
}
function generateRowsForScriptType(headers, t, params) {
const chainCode = utxolib.bitgo.toChainPair(t);
if (!params) {
if (t === 'p2tr') {
return [
...generateRowsForScriptType(headers, t, {
spendTypeName: 'Script Path, Level 2 (Backup/User, Backup/BitGo)',
scriptTypeParams: { scriptPathLevel: 2 },
}),
...generateRowsForScriptType(headers, t, {
spendTypeName: 'Script Path, Level 1 (User/BitGo)',
scriptTypeParams: { scriptPathLevel: 1 },
}),
];
}
if (t === 'p2trMusig2') {
return [
...generateRowsForScriptType(headers, t, {
spendTypeName: 'Script Path (Backup/User, Backup/BitGo)',
scriptTypeParams: { scriptPathLevel: 1 },
}),
...generateRowsForScriptType(headers, t, {
spendTypeName: 'Key Path (User/BitGo)',
scriptTypeParams: { scriptPathLevel: undefined },
}),
];
}
}
const inputVSize = src_1.Dimensions.fromScriptType(t, params?.scriptTypeParams).getInputsVSize();
const row = [
t,
chainCode.join(`/`),
params?.spendTypeName ?? 'all',
inputVSize.toString(),
(inputVSize / relativeCostRef).toFixed(2),
];
return [row];
}
function generateTables() {
const scriptTypes = [...utxolib.bitgo.outputScripts.scriptTypes2Of3];
return formatMarkdownTable(headers, scriptTypes.flatMap((s) => generateRowsForScriptType(headers, s)));
}
function generateDocument() {
return [
'# Input Costs',
'This document contains the worst-case input costs for various script types and spend types.',
'The input costs are calculated using the `Dimensions` class from `@bitgo/unspents`.',
'',
generateTables(),
].join('\n');
}
if (require.main === module) {
const outfile = 'docs/input-costs.md';
fs.writeFile(outfile, generateDocument())
.then(() => console.log('wrote to', outfile))
.catch((e) => console.error(e));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdGFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmluL2dlbmVyYXRlX3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUFrQztBQUNsQyx5REFBMkM7QUFFM0MsZ0NBQW9DO0FBRXBDLE1BQU0sT0FBTyxHQUFHO0lBQ2QsYUFBYTtJQUNiLGFBQWE7SUFDYixZQUFZO0lBQ1osNEJBQTRCO0lBQzVCLG1DQUFtQztDQUNwQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsZ0JBQVUsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUkxRixTQUFTLG1CQUFtQixDQUFDLE9BQWlCLEVBQUUsSUFBZ0I7SUFDOUQsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FDaEMsT0FBaUIsRUFDakIsQ0FBNkMsRUFDN0MsTUFHQztJQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRS9DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE9BQU87Z0JBQ0wsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUsa0RBQWtEO29CQUNqRSxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7aUJBQ3pDLENBQUM7Z0JBQ0YsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUsbUNBQW1DO29CQUNsRCxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7aUJBQ3pDLENBQUM7YUFDSCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE9BQU87Z0JBQ0wsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUseUNBQXlDO29CQUN4RCxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7aUJBQ3pDLENBQUM7Z0JBQ0YsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUsdUJBQXVCO29CQUN0QyxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUU7aUJBQ2pELENBQUM7YUFDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxnQkFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0YsTUFBTSxHQUFHLEdBQVE7UUFDZixDQUFDO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsTUFBTSxFQUFFLGFBQWEsSUFBSSxLQUFLO1FBQzlCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7UUFDckIsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztLQUMxQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsY0FBYztJQUNyQixNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDckUsT0FBTyxtQkFBbUIsQ0FDeEIsT0FBTyxFQUNQLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNsRSxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU87UUFDTCxlQUFlO1FBQ2YsNkZBQTZGO1FBQzdGLHFGQUFxRjtRQUNyRixFQUFFO1FBQ0YsY0FBYyxFQUFFO0tBQ2pCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUM1QixNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQztJQUN0QyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM1QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQgeyBEaW1lbnNpb25zIH0gZnJvbSAnLi4vc3JjJztcblxuY29uc3QgaGVhZGVycyA9IFtcbiAgJ1NjcmlwdCBUeXBlJyxcbiAgJ0NoYWluIENvZGVzJyxcbiAgJ1NwZW5kIFR5cGUnLFxuICAnSW5wdXQgU2l6ZSAoVmlydHVhbCBCeXRlcyknLFxuICAnUmVsYXRpdmUgU2l6ZSAocDJ0ck11c2lnMiA9IDEuMDApJyxcbl07XG5cbmNvbnN0IHJlbGF0aXZlQ29zdFJlZiA9IERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUoJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKS5nZXRJbnB1dHNWU2l6ZSgpO1xuXG50eXBlIFJvdyA9IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZ107XG5cbmZ1bmN0aW9uIGZvcm1hdE1hcmtkb3duVGFibGUoaGVhZGVyczogc3RyaW5nW10sIHJvd3M6IHN0cmluZ1tdW10pOiBzdHJpbmcge1xuICByZXR1cm4gW2hlYWRlcnMsIGhlYWRlcnMubWFwKCgpID0+ICctLS0nKSwgLi4ucm93c10ubWFwKChyb3cpID0+IGB8ICR7cm93LmpvaW4oJyB8ICcpfSB8YCkuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoXG4gIGhlYWRlcnM6IHN0cmluZ1tdLFxuICB0OiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjMsXG4gIHBhcmFtcz86IHtcbiAgICBzcGVuZFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXIgfTtcbiAgfVxuKTogUm93W10ge1xuICBjb25zdCBjaGFpbkNvZGUgPSB1dHhvbGliLmJpdGdvLnRvQ2hhaW5QYWlyKHQpO1xuXG4gIGlmICghcGFyYW1zKSB7XG4gICAgaWYgKHQgPT09ICdwMnRyJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCB0LCB7XG4gICAgICAgICAgc3BlbmRUeXBlTmFtZTogJ1NjcmlwdCBQYXRoLCBMZXZlbCAyIChCYWNrdXAvVXNlciwgQmFja3VwL0JpdEdvKScsXG4gICAgICAgICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw6IDIgfSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLmdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoaGVhZGVycywgdCwge1xuICAgICAgICAgIHNwZW5kVHlwZU5hbWU6ICdTY3JpcHQgUGF0aCwgTGV2ZWwgMSAoVXNlci9CaXRHbyknLFxuICAgICAgICAgIHNjcmlwdFR5cGVQYXJhbXM6IHsgc2NyaXB0UGF0aExldmVsOiAxIH0sXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAodCA9PT0gJ3AydHJNdXNpZzInKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5nZW5lcmF0ZVJvd3NGb3JTY3JpcHRUeXBlKGhlYWRlcnMsIHQsIHtcbiAgICAgICAgICBzcGVuZFR5cGVOYW1lOiAnU2NyaXB0IFBhdGggKEJhY2t1cC9Vc2VyLCBCYWNrdXAvQml0R28pJyxcbiAgICAgICAgICBzY3JpcHRUeXBlUGFyYW1zOiB7IHNjcmlwdFBhdGhMZXZlbDogMSB9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCB0LCB7XG4gICAgICAgICAgc3BlbmRUeXBlTmFtZTogJ0tleSBQYXRoIChVc2VyL0JpdEdvKScsXG4gICAgICAgICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw6IHVuZGVmaW5lZCB9LFxuICAgICAgICB9KSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW5wdXRWU2l6ZSA9IERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUodCwgcGFyYW1zPy5zY3JpcHRUeXBlUGFyYW1zKS5nZXRJbnB1dHNWU2l6ZSgpO1xuICBjb25zdCByb3c6IFJvdyA9IFtcbiAgICB0LFxuICAgIGNoYWluQ29kZS5qb2luKGAvYCksXG4gICAgcGFyYW1zPy5zcGVuZFR5cGVOYW1lID8/ICdhbGwnLFxuICAgIGlucHV0VlNpemUudG9TdHJpbmcoKSxcbiAgICAoaW5wdXRWU2l6ZSAvIHJlbGF0aXZlQ29zdFJlZikudG9GaXhlZCgyKSxcbiAgXTtcbiAgcmV0dXJuIFtyb3ddO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVRhYmxlcygpIHtcbiAgY29uc3Qgc2NyaXB0VHlwZXMgPSBbLi4udXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLnNjcmlwdFR5cGVzMk9mM107XG4gIHJldHVybiBmb3JtYXRNYXJrZG93blRhYmxlKFxuICAgIGhlYWRlcnMsXG4gICAgc2NyaXB0VHlwZXMuZmxhdE1hcCgocykgPT4gZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCBzKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVEb2N1bWVudCgpIHtcbiAgcmV0dXJuIFtcbiAgICAnIyBJbnB1dCBDb3N0cycsXG4gICAgJ1RoaXMgZG9jdW1lbnQgY29udGFpbnMgdGhlIHdvcnN0LWNhc2UgaW5wdXQgY29zdHMgZm9yIHZhcmlvdXMgc2NyaXB0IHR5cGVzIGFuZCBzcGVuZCB0eXBlcy4nLFxuICAgICdUaGUgaW5wdXQgY29zdHMgYXJlIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIGBEaW1lbnNpb25zYCBjbGFzcyBmcm9tIGBAYml0Z28vdW5zcGVudHNgLicsXG4gICAgJycsXG4gICAgZ2VuZXJhdGVUYWJsZXMoKSxcbiAgXS5qb2luKCdcXG4nKTtcbn1cblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IG91dGZpbGUgPSAnZG9jcy9pbnB1dC1jb3N0cy5tZCc7XG4gIGZzLndyaXRlRmlsZShvdXRmaWxlLCBnZW5lcmF0ZURvY3VtZW50KCkpXG4gICAgLnRoZW4oKCkgPT4gY29uc29sZS5sb2coJ3dyb3RlIHRvJywgb3V0ZmlsZSkpXG4gICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKGUpKTtcbn1cbiJdfQ==Выполнить команду
Для локальной разработки. Не используйте в интернете!