@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
75 lines • 6.94 kB
JavaScript
;
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