@ton-keychain/trx
Version:
SDK for creating multi account mnemonics, plugin for tron
114 lines (107 loc) • 3.95 kB
JavaScript
;
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
});