ecash-quicksend
Version:
A unified transaction manager for eCash (XEC), SLP, and ALP token transactions
91 lines • 3.7 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.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