UNPKG

@tatumio/tatum-v1

Version:

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

75 lines 6.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareVetSignedTransaction = exports.signVetKMSTransaction = exports.sendVetTransaction = void 0; const thorify_1 = require("thorify"); const web3_1 = __importDefault(require("web3")); const blockchain_1 = require("../blockchain"); const tatum_1 = require("../connector/tatum"); const constants_1 = require("../constants"); const model_1 = require("../model"); /** * Send VeChain 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 * @param provider url of the VeChain Server to connect to. If not set, default public server will be used. * @returns transaction id of the transaction in the blockchain */ const sendVetTransaction = async (testnet, body, provider) => { return blockchain_1.vetBroadcast(await exports.prepareVetSignedTransaction(testnet, body, provider)); }; exports.sendVetTransaction = sendVetTransaction; /** * Sign VeChain pending transaction from Tatum KMS * @param tx pending transaction from KMS * @param fromPrivateKey private key to sign transaction with. * @param testnet mainnet or testnet version * @param provider url of the VeChain Server to connect to. If not set, default public server will be used. * @returns transaction data to be broadcast to blockchain. */ const signVetKMSTransaction = async (tx, fromPrivateKey, testnet, provider) => { if (tx.chain !== model_1.Currency.VET) { throw Error('Unsupported chain.'); } const client = thorify_1.thorify(new web3_1.default(), provider || (testnet ? constants_1.TEST_VET_URL : constants_1.VET_URL)); client.eth.accounts.wallet.clear(); client.eth.accounts.wallet.add(fromPrivateKey); client.eth.defaultAccount = client.eth.accounts.wallet[0].address; const transactionConfig = JSON.parse(tx.serializedTransaction); transactionConfig.gas = await client.eth.estimateGas(transactionConfig); return (await client.eth.accounts.signTransaction(transactionConfig, fromPrivateKey)).rawTransaction; }; exports.signVetKMSTransaction = signVetKMSTransaction; /** * Sign VeChain 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 * @param provider url of the VeChain Server to connect to. If not set, default public server will be used. * @returns transaction data to be broadcast to blockchain. */ const prepareVetSignedTransaction = async (testnet, body, provider) => { await tatum_1.validateBody(body, model_1.TransferVet); const { fromPrivateKey, to, amount, data, fee, } = body; const client = thorify_1.thorify(new web3_1.default(), provider || (testnet ? constants_1.TEST_VET_URL : constants_1.VET_URL)); client.eth.accounts.wallet.clear(); client.eth.accounts.wallet.add(fromPrivateKey); client.eth.defaultAccount = client.eth.accounts.wallet[0].address; const tx = { from: 0, to: to.trim(), data: data ? client.utils.toHex(data) : undefined, value: client.utils.toWei(`${amount}`, 'ether'), }; if (fee) { tx.gas = fee.gasLimit; } else { tx.gas = await client.eth.estimateGas(tx); } return (await client.eth.accounts.signTransaction(tx, fromPrivateKey)).rawTransaction; }; exports.prepareVetSignedTransaction = prepareVetSignedTransaction; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3ZldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQ0FBK0I7QUFDL0IsZ0RBQXVCO0FBRXZCLDhDQUEwQztBQUMxQyw4Q0FBaUQ7QUFDakQsNENBQWtEO0FBQ2xELG9DQUE4RDtBQUU5RDs7Ozs7OztHQU9HO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsT0FBZ0IsRUFBRSxJQUFpQixFQUFFLFFBQWlCLEVBQUUsRUFBRTtJQUMvRixPQUFPLHlCQUFZLENBQUMsTUFBTSxtQ0FBMkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7QUFDbkYsQ0FBQyxDQUFBO0FBRlksUUFBQSxrQkFBa0Isc0JBRTlCO0FBRUQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUFFLEVBQWtCLEVBQUUsY0FBc0IsRUFBRSxPQUFnQixFQUFFLFFBQWlCLEVBQUUsRUFBRTtJQUMzSCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssZ0JBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDM0IsTUFBTSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtLQUNwQztJQUNELE1BQU0sTUFBTSxHQUFHLGlCQUFPLENBQUMsSUFBSSxjQUFJLEVBQUUsRUFBRSxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHdCQUFZLENBQUMsQ0FBQyxDQUFDLG1CQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ2xGLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQzlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7SUFDakUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQzlELGlCQUFpQixDQUFDLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDdkUsT0FBTyxDQUFDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFBO0FBQ3hHLENBQUMsQ0FBQTtBQVhZLFFBQUEscUJBQXFCLHlCQVdqQztBQUVEOzs7Ozs7R0FNRztBQUNJLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUFFLE9BQWdCLEVBQUUsSUFBaUIsRUFBRSxRQUFpQixFQUFFLEVBQUU7SUFDeEcsTUFBTSxvQkFBWSxDQUFDLElBQUksRUFBRSxtQkFBVyxDQUFDLENBQUE7SUFDckMsTUFBTSxFQUNGLGNBQWMsRUFDZCxFQUFFLEVBQ0YsTUFBTSxFQUNOLElBQUksRUFDSixHQUFHLEdBQ04sR0FBRyxJQUFJLENBQUE7SUFFUixNQUFNLE1BQU0sR0FBRyxpQkFBTyxDQUFDLElBQUksY0FBSSxFQUFFLEVBQUUsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx3QkFBWSxDQUFDLENBQUMsQ0FBQyxtQkFBTyxDQUFDLENBQUMsQ0FBQTtJQUNsRixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUM5QyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO0lBRWpFLE1BQU0sRUFBRSxHQUFzQjtRQUMxQixJQUFJLEVBQUUsQ0FBQztRQUNQLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFO1FBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDO0tBQ2xELENBQUE7SUFFRCxJQUFJLEdBQUcsRUFBRTtRQUNMLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQTtLQUN4QjtTQUFNO1FBQ0gsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0tBQzVDO0lBQ0QsT0FBTyxDQUFDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQTtBQUN6RixDQUFDLENBQUE7QUE1QlksUUFBQSwyQkFBMkIsK0JBNEJ2QyJ9