UNPKG

@okxweb3/coin-bitcoin

Version:

@okxweb3/coin-bitcoin is a Bitcoin SDK for building Web3 wallets and applications. It supports BTC, BSV, DOGE, LTC, and TBTC, enabling private key management, transaction signing, address generation, and inscriptions like BRC-20, Runes, CAT, and Atomicals

46 lines 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.encode = exports.decode = exports.encodeRaw = exports.decodeRaw = void 0; const coin_base_1 = require("@okxweb3/coin-base"); function decodeRaw(buffer, version) { if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version'); if (buffer.length === 33) { return { version: buffer[0], privateKey: buffer.slice(1, 33), compressed: false }; } if (buffer.length !== 34) throw new Error('Invalid WIF length'); if (buffer[33] !== 0x01) throw new Error('Invalid compression flag'); return { version: buffer[0], privateKey: buffer.slice(1, 33), compressed: true }; } exports.decodeRaw = decodeRaw; function encodeRaw(version, privateKey, compressed) { const result = Buffer.alloc(compressed ? 34 : 33); result.writeUInt8(version, 0); privateKey.copy(result, 1); if (compressed) { result[33] = 0x01; } return result; } exports.encodeRaw = encodeRaw; function decode(str, version) { return decodeRaw(coin_base_1.base.fromBase58Check(str), version); } exports.decode = decode; function encode(version, privateKey, compressed) { if (typeof version === 'number') return coin_base_1.base.toBase58Check(encodeRaw(version, privateKey, compressed)); return coin_base_1.base.toBase58Check(encodeRaw(version.version, version.privateKey, version.compressed)); } exports.encode = encode; //# sourceMappingURL=wif.js.map