UNPKG

@tomo-inc/ledger-bitcoin-babylon

Version:

Ledger Hardware Wallet Babylon Application Client

94 lines 7.58 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 (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLeafHash = exports.getTaprootScript = void 0; const crypto = __importStar(require("crypto")); const bitcoinjs_lib_1 = require("bitcoinjs-lib"); function getTaprootScript(base64PSBT) { const psbtBuffer = Buffer.from(base64PSBT, 'base64'); const psbt = bitcoinjs_lib_1.Psbt.fromBuffer(psbtBuffer); for (const input of psbt.data.inputs) { // console.log(input); if (input.tapLeafScript && input.tapLeafScript.length > 0) { for (const leafScript of input.tapLeafScript) { return leafScript.script; } } } return undefined; } exports.getTaprootScript = getTaprootScript; // BIP341 Tagged Hash function taggedHash(tag, data) { const tagHash = crypto.createHash('sha256').update(tag).digest(); return crypto .createHash('sha256') .update(Buffer.concat([tagHash, tagHash, data])) .digest(); } function encodeVarint(n) { if (n < 0xfd) { return Buffer.from([n]); } else if (n <= 0xffff) { const buf = Buffer.alloc(3); buf.writeUInt8(0xfd, 0); buf.writeUInt16LE(n, 1); return buf; } else if (n <= 0xffffffff) { const buf = Buffer.alloc(5); buf.writeUInt8(0xfe, 0); buf.writeUInt32LE(n, 1); return buf; } else { const buf = Buffer.alloc(9); buf.writeUInt8(0xff, 0); buf.writeUInt32LE(n, 1); buf.writeBigUInt64LE(BigInt(n), 5); return buf; } } function getLeafHash(scriptBytes) { const leafVersion = Buffer.from([0xc0]); const scriptLen = scriptBytes.length; // console.log('script_len =', scriptLen); const varintLen = encodeVarint(scriptLen); const toHash = Buffer.concat([leafVersion, varintLen, scriptBytes]); const leafHash = taggedHash(Buffer.from('TapLeaf'), toHash); // console.log('leaf_hash =', leafHash.toString('hex')); return leafHash; } exports.getLeafHash = getLeafHash; // const base64PSBT= 'cHNidP8BAH0CAAAAAe5Zu8YR8si9c+Pj2ZU0zXSRmAG8/Qxcee9e7BpsVHtOAAAAAAD/////AsQJAAAAAAAAFgAUW+EmJNCKK0JAldfAciHDNFDRS/EEpgAAAAAAACJRICyVutUKY9E6qBjfjktoZBga2/RyCoiq+OPBI1ugik2fAAAAAAABAStQwwAAAAAAACJRIEOj7UvRXfRV9er0SUNeReHNqaiqtOoEhmW60JCFUoUyQhXAUJKbdMGgSVS3i0tgNel6XgeKWg8o7JbVR7/ums6AOsCJtgX5iDHD5SbZ6yF5ZRRSk4qMD/f16u7MthJR1dRt6/15ASDcjS+e/wxPTb3gcKSOMw78kItip2ZWjZHmWPKEsyS4eK0gH5MjVzLmTKwzVprRw9vwQTgsO3dPz7BTO5sx1MKna/mtIAruBQmxbbccmZI4pIJ9uUVSaFmxPJVIerRnJTV8mp8lrCARPDoyqdMgtyGQoEoCCg2zl27zaXJnMljpo4o2Tz3DsLogF5Ic8VbMtOc9Qo+ZbtEbJFMT434nyXisTSzCHspGcuS6IDu5PfyLYYh9dx82MOmmPpfLr8/MeFVqR034OjGg74mcuiBAr69HxP+lbehkENjke6ortvBLYE9OokMjc33cP+CS37ogeacf/XHFA+8uL5G8z8j82nlG9GU87w2fPd4geV7zufC6INIfr3jGdRoNOOa9gCi5B/8H6ahppD/IN9az+N/2EZo2uiD1GZ764/KLuCR2Fjp+RYx61EXZv/sGgtENO9sstB+Ojrog+p2ILUX0BgvbgEIYOCjNh1RPHqmXOA5YbKt31f1phze6VpzAARcgUJKbdMGgSVS3i0tgNel6XgeKWg8o7JbVR7/ums6AOsAAAAA='; // // const base64PSBT = "cHNidP8BAJ0CA7QhBO4F0lYcG2E6FzH5dNRhKK2s2m1nCOjM6eOMi7n9gGF1fRqaG8y6pg8o4hKTvNmOwYMKHkjZMbXl52yBTI3LHGXQ2TAJdF2EBnGZcTy6GfTZ2EwxoIbgq9h7Fe8LZYkL8P1zUyf+RwfklPyhxSJe6q8VHJ9lKNcsS/xHf0zTbXy9Bln5N4bfnYlLMX6kZaGdDzoLVgXN4zYZY+YhfzvXX9aWIrHkYQ9H6FS4u6IyzTn91PqOhP+YXGb4nA3F6mZcpe7MnI2br7ddh9v+qCTpgUKXXhFxq0NlwCjAxg0jN5d3Fq+mcLRg=="; // const taprootScript = getTaprootScript(base64PSBT).toString('hex'); // if (taprootScript) { // console.log("Found Taproot script:", taprootScript); // } else { // console.log("No Taproot script found."); // } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYmFieWxvbi9wc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBRWpDLGlEQUFxQztBQUVyQyxTQUFnQixnQkFBZ0IsQ0FBQyxVQUFrQjtJQUNqRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVyRCxNQUFNLElBQUksR0FBRyxvQkFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV6QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ3BDLHNCQUFzQjtRQUN0QixJQUFJLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELEtBQUssTUFBTSxVQUFVLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtnQkFDNUMsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDO2FBQzFCO1NBQ0Y7S0FDRjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFmRCw0Q0FlQztBQUVELHFCQUFxQjtBQUNyQixTQUFTLFVBQVUsQ0FBQyxHQUFXLEVBQUUsSUFBWTtJQUMzQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqRSxPQUFPLE1BQU07U0FDVixVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQy9DLE1BQU0sRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQUdELFNBQVMsWUFBWSxDQUFDLENBQVM7SUFDN0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFO1FBQ1osT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6QjtTQUFNLElBQUksQ0FBQyxJQUFJLE1BQU0sRUFBRTtRQUN0QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7U0FBTSxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUU7UUFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixPQUFPLEdBQUcsQ0FBQztLQUNaO1NBQU07UUFDTCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsT0FBTyxHQUFHLENBQUM7S0FDWjtBQUNILENBQUM7QUFFRCxTQUFnQixXQUFXLENBQUMsV0FBbUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFeEMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUNyQyw0Q0FBNEM7SUFFNUMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFcEUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFNUQsMERBQTBEO0lBQzFELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFkRCxrQ0FjQztBQUVELGc1QkFBZzVCO0FBQ2g1QixrV0FBa1c7QUFFbFcsc0VBQXNFO0FBRXRFLHVCQUF1QjtBQUN2Qix5REFBeUQ7QUFDekQsV0FBVztBQUNYLDZDQUE2QztBQUM3QyxJQUFJIn0=