UNPKG

ecash-quicksend

Version:

A unified transaction manager for eCash (XEC), SLP, and ALP token transactions

91 lines 3.7 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 }); exports.deriveBuyerKey = deriveBuyerKey; exports.validateMnemonic = validateMnemonic; const ecash_lib_1 = require("ecash-lib"); const wif = __importStar(require("wif")); const ecashaddrjs_1 = require("ecashaddrjs"); /** * 从助记词派生出WIF格式的私钥和地址 * @param mnemonic - 助记词 * @param addressIndex - 地址索引,默认为0(第0个地址) * @param derivationPath - 派生路径基础部分,默认为 "m/44'/1899'/0'/0" * @returns 包含 wif 和 address 的对象 */ function deriveBuyerKey(mnemonic, addressIndex = 0, derivationPath = "m/44'/1899'/0'/0") { console.log(`从助记词派生密钥...(地址索引: ${addressIndex})`); // 将助记词转换为种子 const seed = (0, ecash_lib_1.mnemonicToSeed)(mnemonic); // 从种子生成根 HD 节点 const hdRoot = ecash_lib_1.HdNode.fromSeed(seed); // 构建完整的派生路径,包含地址索引 const fullDerivationPath = `${derivationPath}/${addressIndex}`; // 使用路径派生子节点 const childNode = hdRoot.derivePath(fullDerivationPath); // 获取公钥并创建 eCash 地址 const pubkey = childNode.pubkey(); const pubkeyHash = (0, ecash_lib_1.shaRmd160)(pubkey); const ecashAddress = (0, ecashaddrjs_1.encodeCashAddress)('ecash', 'p2pkh', pubkeyHash); // 提取私钥缓冲区 const privateKeyBuffer = childNode.seckey(); // 将私钥转换为 WIF (0x80 是比特币主网的前缀) const buyerWIF = wif.encode({ version: 0x80, privateKey: Buffer.from(privateKeyBuffer), compressed: true }); console.log(`密钥派生完成,地址索引 ${addressIndex}:`, ecashAddress); return { wif: buyerWIF, address: ecashAddress, addressIndex: addressIndex, derivationPath: fullDerivationPath }; } /** * 验证助记词格式 * @param mnemonic - 助记词 * @returns 是否为有效助记词 */ function validateMnemonic(mnemonic) { if (!mnemonic || typeof mnemonic !== 'string') { return false; } const words = mnemonic.trim().split(/\s+/); // 助记词通常是12, 15, 18, 21, 24个单词 return [12, 15, 18, 21, 24].includes(words.length); } //# sourceMappingURL=mnemonic-utils.js.map