UNPKG

@ton-keychain/trx

Version:

SDK for creating multi account mnemonics, plugin for tron

114 lines (107 loc) 3.95 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { KeychainTrxAccount: () => KeychainTrxAccount, KeychainTrxAccountsProvider: () => KeychainTrxAccountsProvider, TronAddressUtils: () => TronAddress, getNthAccountTrx: () => getNthAccountTrx }); module.exports = __toCommonJS(src_exports); var import_core = require("@ton-keychain/core"); // src/keychain-trx-accounts-provider.ts var import_bip39 = require("@scure/bip39"); var import_english = require("@scure/bip39/wordlists/english"); var import_hmac = require("@noble/hashes/hmac"); var import_sha256 = require("@noble/hashes/sha256"); // src/utils.ts var import_ethers = require("ethers"); var TronAddress = { hexToBase58(address) { const tronAddressPayload = "0x41" + address.slice(2); const checkSumTail = (0, import_ethers.sha256)((0, import_ethers.sha256)(tronAddressPayload)).slice(2, 10); return (0, import_ethers.encodeBase58)(tronAddressPayload + checkSumTail); }, base58ToHex(address) { const decoded = (0, import_ethers.decodeBase58)(address).toString(16); return "0x" + decoded.slice(2, -8); } }; // src/keychain-trx-account.ts var KeychainTrxAccount = class { constructor(hdAccount) { this.hdAccount = hdAccount; this.address = TronAddress.hexToBase58(this.hexAddress); } get hexAddress() { return this.hdAccount.address; } get privateKey() { return this.hdAccount.privateKey; } get publicKey() { return this.hdAccount.publicKey; } address; }; // src/keychain-trx-accounts-provider.ts var import_ethers2 = require("ethers"); var KeychainTrxAccountsProvider = class _KeychainTrxAccountsProvider { constructor(mnemonics, hdAccount) { this.mnemonics = mnemonics; this.hdAccount = hdAccount; } static MNEMONICS_WORDS_NUMBER = 12; static CHECKSUM_BITS = 4; static BASE_DERIVATION_PATH = "m/44'/195'/0'/0"; static NETWORK_LABEL = "trx-0x2b6653dc_root"; static fromEntropy(entropy) { const networkEntropy = this.patchEntropy(entropy); const mnemonics = (0, import_bip39.entropyToMnemonic)(networkEntropy, import_english.wordlist); const hdAccount = import_ethers2.ethers.HDNodeWallet.fromPhrase( mnemonics, void 0, this.BASE_DERIVATION_PATH ); return new _KeychainTrxAccountsProvider(mnemonics.split(" "), hdAccount); } static patchEntropy(seed) { return (0, import_hmac.hmac)(import_sha256.sha256, this.NETWORK_LABEL, seed).subarray( 0, (_KeychainTrxAccountsProvider.MNEMONICS_WORDS_NUMBER * 11 - _KeychainTrxAccountsProvider.CHECKSUM_BITS) / 8 ); } getAccount(index = 0) { return new KeychainTrxAccount(this.hdAccount.deriveChild(index)); } }; // src/index.ts async function getNthAccountTrx(rootMnemonic, childIndex) { const tonAccount = await (0, import_core.getNthAccountTon)(rootMnemonic, childIndex); const trxProvider = KeychainTrxAccountsProvider.fromEntropy(tonAccount.entropy); return trxProvider.getAccount(); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { KeychainTrxAccount, KeychainTrxAccountsProvider, TronAddressUtils, getNthAccountTrx });