@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
91 lines • 6.88 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.sendKlaytntnOffchainTransaction = void 0;
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const web3_utils_1 = require("web3-utils");
const tatum_1 = require("../connector/tatum");
const ledger_1 = require("../ledger");
const model_1 = require("../model");
const transaction_1 = require("../transaction");
const wallet_1 = require("../wallet");
const common_1 = require("./common");
const kms_1 = require("./kms");
/**
* Send Klaytn transaction from Tatum Ledger account to the blockchain. This method broadcasts signed transaction to the blockchain.
* This operation is irreversible.
* @param testnet mainnet or testnet version
* @param body content of the transaction to broadcast
* @param provider url of the Klaytn Server to connect to. If not set, default public server will be used.
* @returns transaction id of the transaction in the blockchain or id of the withdrawal, if it was not cancelled automatically
*/
const sendKlaytntnOffchainTransaction = async (testnet, body, provider) => {
if (body.signatureId) {
return kms_1.offchainTransferKlaytnKMS(body);
}
await tatum_1.validateBody(body, model_1.TransferEthOffchain);
const { mnemonic, index, privateKey, gasLimit, gasPrice, nonce } = body, withdrawal = __rest(body, ["mnemonic", "index", "privateKey", "gasLimit", "gasPrice", "nonce"]);
const { amount, address } = withdrawal;
const fromPriv = mnemonic && index !== undefined ? await wallet_1.generatePrivateKeyFromMnemonic(model_1.Currency.KLAY, testnet, mnemonic, index) : privateKey;
const account = await ledger_1.getAccountById(withdrawal.senderAccountId);
let txData;
const fee = {
gasLimit: gasLimit || '21000',
gasPrice: gasPrice || '25',
};
if (account.currency === model_1.Currency.KLAY) {
txData = await transaction_1.prepareKlaytnSignedTransaction(testnet, {
amount,
fromPrivateKey: fromPriv,
currency: account.currency,
fee,
nonce,
to: address,
}, provider);
}
else {
fee.gasLimit = '100000';
const vc = await ledger_1.getVirtualCurrencyByName(account.currency);
txData = await transaction_1.prepareKlaytnTransferErc20SignedTransaction(testnet, {
amount,
fee,
fromPrivateKey: fromPriv,
to: address,
digits: vc.precision,
nonce,
contractAddress: vc.erc20Address,
}, provider);
}
// @ts-ignore
withdrawal.fee = web3_utils_1.fromWei(new bignumber_js_1.default(fee.gasLimit).multipliedBy(web3_utils_1.toWei(fee.gasPrice, 'gwei')).toString(), 'ether');
const { id } = await common_1.offchainStoreWithdrawal(withdrawal);
try {
return Object.assign(Object.assign({}, await common_1.offchainBroadcast({ txData, withdrawalId: id, currency: model_1.Currency.KLAY })), { id });
}
catch (e) {
console.error(e);
try {
await common_1.offchainCancelWithdrawal(id);
}
catch (e1) {
console.log(e);
return { id };
}
throw e;
}
};
exports.sendKlaytntnOffchainTransaction = sendKlaytntnOffchainTransaction;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2xheXRuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29mZmNoYWluL2tsYXl0bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUFvQztBQUNwQywyQ0FBMkM7QUFDM0MsOENBQWlEO0FBQ2pELHNDQUFvRTtBQUNwRSxvQ0FBd0Q7QUFDeEQsZ0RBQTRHO0FBQzVHLHNDQUEwRDtBQUMxRCxxQ0FBK0Y7QUFDL0YsK0JBQWlEO0FBRWpEOzs7Ozs7O0dBT0c7QUFDSSxNQUFNLCtCQUErQixHQUFHLEtBQUssRUFBRSxPQUFnQixFQUFFLElBQXlCLEVBQUUsUUFBaUIsRUFBRSxFQUFFO0lBQ3BILElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNsQixPQUFPLCtCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ3pDO0lBQ0QsTUFBTSxvQkFBWSxDQUFDLElBQUksRUFBRSwyQkFBbUIsQ0FBQyxDQUFBO0lBQzdDLE1BQU0sRUFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssS0FDdEQsSUFBSSxFQUR1RCxVQUFVLFVBQ3JFLElBQUksRUFGRixvRUFFTCxDQUFPLENBQUE7SUFDUixNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFVBQVUsQ0FBQTtJQUV0QyxNQUFNLFFBQVEsR0FBRyxRQUFRLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSx1Q0FBOEIsQ0FBQyxnQkFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFvQixDQUFBO0lBRXZKLE1BQU0sT0FBTyxHQUFHLE1BQU0sdUJBQWMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDaEUsSUFBSSxNQUFNLENBQUE7SUFDVixNQUFNLEdBQUcsR0FBRztRQUNSLFFBQVEsRUFBRSxRQUFRLElBQUksT0FBTztRQUM3QixRQUFRLEVBQUUsUUFBUSxJQUFJLElBQUk7S0FDN0IsQ0FBQTtJQUNELElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLElBQUksRUFBRTtRQUNwQyxNQUFNLEdBQUcsTUFBTSw0Q0FBOEIsQ0FBQyxPQUFPLEVBQUU7WUFDbkQsTUFBTTtZQUNOLGNBQWMsRUFBRSxRQUFRO1lBQ3hCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUMxQixHQUFHO1lBQ0gsS0FBSztZQUNMLEVBQUUsRUFBRSxPQUFPO1NBQ2QsRUFBRSxRQUFRLENBQUMsQ0FBQTtLQUNmO1NBQU07UUFDSCxHQUFHLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN2QixNQUFNLEVBQUUsR0FBRyxNQUFNLGlDQUF3QixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMzRCxNQUFNLEdBQUcsTUFBTSx5REFBMkMsQ0FBQyxPQUFPLEVBQUU7WUFDaEUsTUFBTTtZQUNOLEdBQUc7WUFDSCxjQUFjLEVBQUUsUUFBUTtZQUN4QixFQUFFLEVBQUUsT0FBTztZQUNYLE1BQU0sRUFBRSxFQUFFLENBQUMsU0FBbUI7WUFDOUIsS0FBSztZQUNMLGVBQWUsRUFBRSxFQUFFLENBQUMsWUFBc0I7U0FDN0MsRUFBRSxRQUFRLENBQUMsQ0FBQTtLQUNmO0lBQ0QsYUFBYTtJQUNiLFVBQVUsQ0FBQyxHQUFHLEdBQUcsb0JBQU8sQ0FBQyxJQUFJLHNCQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQkFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNuSCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsTUFBTSxnQ0FBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN4RCxJQUFJO1FBQ0EsdUNBQVksTUFBTSwwQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxnQkFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUUsRUFBRSxJQUFFO0tBQ25HO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hCLElBQUk7WUFDQSxNQUFNLGlDQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ3JDO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2QsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFBO1NBQ2hCO1FBQ0QsTUFBTSxDQUFDLENBQUE7S0FDVjtBQUNMLENBQUMsQ0FBQTtBQXZEWSxRQUFBLCtCQUErQixtQ0F1RDNDIn0=