UNPKG

@tatumio/tatum-v1

Version:

Tatum API client allows browsers and Node.js clients to interact with Tatum API.

68 lines 6.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareXlmSignedTransaction = exports.signXlmKMSTransaction = exports.sendXlmTransaction = void 0; const stellar_sdk_1 = require("stellar-sdk"); const blockchain_1 = require("../blockchain"); const tatum_1 = require("../connector/tatum"); const model_1 = require("../model"); /** * Send Stellar transaction 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 * @returns transaction id of the transaction in the blockchain */ const sendXlmTransaction = async (testnet, body) => { return blockchain_1.xlmBroadcast(await exports.prepareXlmSignedTransaction(testnet, body)); }; exports.sendXlmTransaction = sendXlmTransaction; /** * Sign Stellar pending transaction from Tatum KMS * @param tx pending transaction from KMS * @param secret secret key to sign transaction with. * @param testnet mainnet or testnet version * @returns transaction data to be broadcast to blockchain. */ const signXlmKMSTransaction = async (tx, secret, testnet) => { if (tx.chain !== model_1.Currency.XLM) { throw Error('Unsupported chain.'); } const transaction = stellar_sdk_1.TransactionBuilder.fromXDR(tx.serializedTransaction, testnet ? stellar_sdk_1.Networks.TESTNET : stellar_sdk_1.Networks.PUBLIC); transaction.sign(stellar_sdk_1.Keypair.fromSecret(secret)); return transaction.toEnvelope().toXDR().toString('base64'); }; exports.signXlmKMSTransaction = signXlmKMSTransaction; /** * Sign Stellar transaction with private keys locally. Nothing is broadcast to the blockchain. * @param testnet mainnet or testnet version * @param body content of the transaction to broadcast * @returns transaction data to be broadcast to blockchain. */ const prepareXlmSignedTransaction = async (testnet, body) => { await tatum_1.validateBody(body, model_1.TransferXlm); const { fromSecret, to, amount, message, initialize, } = body; const memo = message ? message.length > 28 ? stellar_sdk_1.Memo.hash(message) : stellar_sdk_1.Memo.text(message) : undefined; const fromAccount = stellar_sdk_1.Keypair.fromSecret(fromSecret).publicKey(); const account = await blockchain_1.xlmGetAccountInfo(fromAccount); const builder = new stellar_sdk_1.TransactionBuilder(new stellar_sdk_1.Account(fromAccount, account.sequence), { fee: '100', networkPassphrase: testnet ? stellar_sdk_1.Networks.TESTNET : stellar_sdk_1.Networks.PUBLIC, memo, }).setTimeout(300); const tx = initialize ? builder.addOperation(stellar_sdk_1.Operation.createAccount({ destination: to.trim(), startingBalance: amount, })).build() : builder.addOperation(stellar_sdk_1.Operation.payment({ destination: to.trim(), asset: stellar_sdk_1.Asset.native(), amount, })) .build(); tx.sign(stellar_sdk_1.Keypair.fromSecret(fromSecret)); return tx.toEnvelope().toXDR().toString('base64'); }; exports.prepareXlmSignedTransaction = prepareXlmSignedTransaction; // TODO: add support for TrustLine //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3hsbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBa0c7QUFDbEcsOENBQTZEO0FBQzdELDhDQUFpRDtBQUNqRCxvQ0FBOEQ7QUFFOUQ7Ozs7OztHQU1HO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsT0FBZ0IsRUFBRSxJQUFpQixFQUFFLEVBQUU7SUFDNUUsT0FBTyx5QkFBWSxDQUFDLE1BQU0sbUNBQTJCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDekUsQ0FBQyxDQUFBO0FBRlksUUFBQSxrQkFBa0Isc0JBRTlCO0FBRUQ7Ozs7OztHQU1HO0FBQ0ksTUFBTSxxQkFBcUIsR0FBRyxLQUFLLEVBQUUsRUFBa0IsRUFBRSxNQUFjLEVBQUUsT0FBZ0IsRUFBRSxFQUFFO0lBQ2hHLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxnQkFBUSxDQUFDLEdBQUcsRUFBRTtRQUMzQixNQUFNLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0tBQ3BDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsZ0NBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RILFdBQVcsQ0FBQyxJQUFJLENBQUMscUJBQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUM1QyxPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDOUQsQ0FBQyxDQUFBO0FBUFksUUFBQSxxQkFBcUIseUJBT2pDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxNQUFNLDJCQUEyQixHQUFHLEtBQUssRUFBRSxPQUFnQixFQUFFLElBQWlCLEVBQUUsRUFBRTtJQUNyRixNQUFNLG9CQUFZLENBQUMsSUFBSSxFQUFFLG1CQUFXLENBQUMsQ0FBQTtJQUNyQyxNQUFNLEVBQ0YsVUFBVSxFQUNWLEVBQUUsRUFDRixNQUFNLEVBQ04sT0FBTyxFQUNQLFVBQVUsR0FDYixHQUFHLElBQUksQ0FBQTtJQUVSLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ2hHLE1BQU0sV0FBVyxHQUFHLHFCQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQzlELE1BQU0sT0FBTyxHQUFHLE1BQU0sOEJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQ0FBa0IsQ0FBQyxJQUFJLHFCQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMvRSxHQUFHLEVBQUUsS0FBSztRQUNWLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFRLENBQUMsTUFBTTtRQUMvRCxJQUFJO0tBQ1AsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQixNQUFNLEVBQUUsR0FBRyxVQUFVO1FBQ2pCLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLHVCQUFTLENBQUMsYUFBYSxDQUFDO1lBQzNDLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ3RCLGVBQWUsRUFBRSxNQUFNO1NBQzFCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtRQUNYLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLHVCQUFTLENBQUMsT0FBTyxDQUFDO1lBQ3JDLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ3RCLEtBQUssRUFBRSxtQkFBSyxDQUFDLE1BQU0sRUFBRTtZQUNyQixNQUFNO1NBQ1QsQ0FBQyxDQUFDO2FBQ0UsS0FBSyxFQUFFLENBQUE7SUFDaEIsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUNyRCxDQUFDLENBQUE7QUEvQlksUUFBQSwyQkFBMkIsK0JBK0J2QztBQUVELGtDQUFrQyJ9