@bitgo/utxo-bin
Version:
Command-line utility for BitGo UTXO transactions
72 lines • 6.93 kB
JavaScript
;
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 });
exports.parseHollowSegwitSpend = parseHollowSegwitSpend;
exports.getHollowSpendMessage = getHollowSpendMessage;
const utxolib = __importStar(require("@bitgo/utxo-lib"));
/**
* @return HollowSegwitSpend if spend is a
*/
function parseHollowSegwitSpend(input, network) {
if (utxolib.getMainnet(network) !== utxolib.networks.bitcoincash &&
utxolib.getMainnet(network) !== utxolib.networks.bitcoinsv) {
// this can only happen on the BCH/BSV forks
return;
}
const type = utxolib.classify.input(input.script, true);
if (type !== 'scripthash') {
// this can only happen for p2sh spends
return;
}
const bufs = utxolib.script.decompile(input.script);
if (!bufs || bufs.length !== 1) {
return;
}
const buf = bufs[0];
if (typeof buf === 'number') {
return;
}
const [a, b] = buf;
if (a === 0x00 && b === 0x14 && buf.length === 22) {
return { scriptType: 'p2shP2wpkhHollow' };
}
if (a === 0x00 && b === 0x20 && buf.length === 34) {
return { scriptType: 'p2shP2wshHollow' };
}
}
function getHollowSpendMessage() {
return `This output was likely claimed by a miner. See https://bitcoin.stackexchange.com/a/115850/137601 for details.`;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sbG93U2Vnd2l0U3BlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9sbG93U2Vnd2l0U3BlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkEsd0RBb0NDO0FBRUQsc0RBRUM7QUE3REQseURBQTJDO0FBa0IzQzs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxLQUFzQixFQUN0QixPQUF3QjtJQUV4QixJQUNFLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO1FBQzVELE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQzFELENBQUM7UUFDRCw0Q0FBNEM7UUFDNUMsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELElBQUksSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQzFCLHVDQUF1QztRQUN2QyxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0IsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ25CLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHFCQUFxQjtJQUNuQyxPQUFPLCtHQUErRyxDQUFDO0FBQ3pILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbi8qKlxuICogVXNlcnMgY2FuIG1pc3Rha2VubHkgY3JlYXRlIHdyYXBwZWQgc2Vnd2l0IG91dHB1dHMgb24gY2hhaW5zIHRoYXQgZG8gbm90IHN1cHBvcnQgaXQgKGJpdGNvaW5jYXNoLCBiaXRjb2luU1YpLlxuICpcbiAqIFRoZXNlIGZ1bmRzIGNhbiBiZSBjbGFpbWVkIGJ5IG1pbmVycyB0aGF0IGxlYXJuIHRoZSBoYXNoIHByZWltYWdlLCB0eXBpY2FsbHkgYnkgb2JzZXJ2aW5nIGEgc3BlbmQgb24gdGhlIGJpdGNvaW5cbiAqIGNoYWluLlxuICpcbiAqIFNpbmNlIHRoZSB0cmFuc2FjdGlvbiBkb2VzIG5vdCBoYXZlIGEgZnVsbCBpbm5lciBzY3JpcHQsIGxldCdzIGNhbGwgdGhlbSBcImhvbGxvd1wiLlxuICpcbiAqIFNlZSBodHRwczovL2JpdGNvaW4uc3RhY2tleGNoYW5nZS5jb20vYS8xMTU4NTAvMTM3NjAxIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbmV4cG9ydCB0eXBlIEhvbGxvd1NlZ3dpdFNwZW5kID1cbiAgLyoqIFdyYXBwZWQgU2Vnd2l0IFBheS1Uby1XaXRuZXNzLVNjcmlwdC1IYXNoICovXG4gIHwgeyBzY3JpcHRUeXBlOiAncDJzaFAyd3NoSG9sbG93JyB9XG4gIC8qKiBXcmFwcGVkIFNlZ3dpdCBQYXktVG8tUHVia2V5LUhhc2ggKi9cbiAgfCB7IHNjcmlwdFR5cGU6ICdwMnNoUDJ3cGtoSG9sbG93JyB9O1xuXG4vKipcbiAqIEByZXR1cm4gSG9sbG93U2Vnd2l0U3BlbmQgaWYgc3BlbmQgaXMgYVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIb2xsb3dTZWd3aXRTcGVuZChcbiAgaW5wdXQ6IHV0eG9saWIuVHhJbnB1dCxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBIb2xsb3dTZWd3aXRTcGVuZCB8IHVuZGVmaW5lZCB7XG4gIGlmIChcbiAgICB1dHhvbGliLmdldE1haW5uZXQobmV0d29yaykgIT09IHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2ggJiZcbiAgICB1dHhvbGliLmdldE1haW5uZXQobmV0d29yaykgIT09IHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2XG4gICkge1xuICAgIC8vIHRoaXMgY2FuIG9ubHkgaGFwcGVuIG9uIHRoZSBCQ0gvQlNWIGZvcmtzXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdHlwZSA9IHV0eG9saWIuY2xhc3NpZnkuaW5wdXQoaW5wdXQuc2NyaXB0LCB0cnVlKTtcbiAgaWYgKHR5cGUgIT09ICdzY3JpcHRoYXNoJykge1xuICAgIC8vIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGZvciBwMnNoIHNwZW5kc1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGJ1ZnMgPSB1dHhvbGliLnNjcmlwdC5kZWNvbXBpbGUoaW5wdXQuc2NyaXB0KTtcbiAgaWYgKCFidWZzIHx8IGJ1ZnMubGVuZ3RoICE9PSAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYnVmID0gYnVmc1swXTtcbiAgaWYgKHR5cGVvZiBidWYgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgW2EsIGJdID0gYnVmO1xuICBpZiAoYSA9PT0gMHgwMCAmJiBiID09PSAweDE0ICYmIGJ1Zi5sZW5ndGggPT09IDIyKSB7XG4gICAgcmV0dXJuIHsgc2NyaXB0VHlwZTogJ3Ayc2hQMndwa2hIb2xsb3cnIH07XG4gIH1cblxuICBpZiAoYSA9PT0gMHgwMCAmJiBiID09PSAweDIwICYmIGJ1Zi5sZW5ndGggPT09IDM0KSB7XG4gICAgcmV0dXJuIHsgc2NyaXB0VHlwZTogJ3Ayc2hQMndzaEhvbGxvdycgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SG9sbG93U3BlbmRNZXNzYWdlKCk6IHN0cmluZyB7XG4gIHJldHVybiBgVGhpcyBvdXRwdXQgd2FzIGxpa2VseSBjbGFpbWVkIGJ5IGEgbWluZXIuIFNlZSBodHRwczovL2JpdGNvaW4uc3RhY2tleGNoYW5nZS5jb20vYS8xMTU4NTAvMTM3NjAxIGZvciBkZXRhaWxzLmA7XG59XG4iXX0=