@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
85 lines • 7.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.sendDogecoinTransaction = exports.prepareDogecoinSignedTransaction = exports.signDogecoinKMSTransaction = void 0;
const bignumber_js_1 = __importDefault(require("bignumber.js"));
// @ts-ignore
const bitcore_lib_doge_1 = require("bitcore-lib-doge");
const blockchain_1 = require("../blockchain");
const tatum_1 = require("../connector/tatum");
const model_1 = require("../model");
/**
* Prepare a signed Doge transaction with the private key locally. Nothing is broadcasted to the blockchain.
* @returns raw transaction data in hex, to be broadcasted to blockchain.
*/
const prepareSignedTransaction = async (body) => {
await tatum_1.validateBody(body, model_1.TransferDogeBlockchain);
const { fromUTXO, to, fee, changeAddress } = body;
const tx = new bitcore_lib_doge_1.Transaction();
const privateKeysToSign = [];
for (const item of fromUTXO) {
tx.from({
txId: item.txHash,
outputIndex: item.index,
script: bitcore_lib_doge_1.Script.fromAddress(item.address).toString(),
satoshis: Number(new bignumber_js_1.default(item.value).multipliedBy(100000000).toFixed(8, bignumber_js_1.default.ROUND_FLOOR)),
});
privateKeysToSign.push(item.signatureId || item.privateKey);
}
for (const item of to) {
tx.to(item.address, Number(new bignumber_js_1.default(item.value).multipliedBy(100000000).toFixed(8, bignumber_js_1.default.ROUND_FLOOR)));
}
if (changeAddress && fee) {
tx.fee(Number(new bignumber_js_1.default(fee).multipliedBy(100000000).toFixed(8, bignumber_js_1.default.ROUND_FLOOR)));
tx.change(changeAddress);
}
if (fromUTXO[0].signatureId) {
return JSON.stringify({ txData: JSON.stringify(tx), privateKeysToSign });
}
for (const pk of privateKeysToSign) {
tx.sign(bitcore_lib_doge_1.PrivateKey.fromWIF(pk));
}
return tx.serialize({
disableDustOutputs: true,
});
};
/**
* Sign Dogecoin pending transaction from Tatum KMS
* @param tx pending transaction from KMS
* @param privateKeys private keys to sign transaction with.
* @param testnet mainnet or testnet version
* @returns transaction data to be broadcast to blockchain.
*/
const signDogecoinKMSTransaction = async (tx, privateKeys, testnet) => {
if (tx.chain !== model_1.Currency.DOGE) {
throw Error('Unsupported chain.');
}
const builder = new bitcore_lib_doge_1.Transaction(JSON.parse(tx.serializedTransaction));
for (const privateKey of privateKeys) {
builder.sign(bitcore_lib_doge_1.PrivateKey.fromWIF(privateKey));
}
return builder.serialize();
};
exports.signDogecoinKMSTransaction = signDogecoinKMSTransaction;
/**
* Sign Dogecoin transaction with private keys locally. Nothing is broadcast to the blockchain.
* @param body content of the transaction to broadcast
* @returns transaction data to be broadcast to blockchain.
*/
const prepareDogecoinSignedTransaction = async (body) => {
return prepareSignedTransaction(body);
};
exports.prepareDogecoinSignedTransaction = prepareDogecoinSignedTransaction;
/**
* Send Dogecoin transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
* This operation is irreversible.
* @param body content of the transaction to broadcast
* @returns transaction id of the transaction in the blockchain
*/
const sendDogecoinTransaction = async (body) => {
return blockchain_1.dogeBroadcast(await exports.prepareDogecoinSignedTransaction(body));
};
exports.sendDogecoinTransaction = sendDogecoinTransaction;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9nZWNvaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZG9nZWNvaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQW9DO0FBQ3BDLGFBQWE7QUFDYix1REFBa0U7QUFDbEUsOENBQTZDO0FBQzdDLDhDQUFpRDtBQUNqRCxvQ0FBMkU7QUFFM0U7OztHQUdHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLEVBQUUsSUFBNEIsRUFBRSxFQUFFO0lBQ3RFLE1BQU0sb0JBQVksQ0FBQyxJQUFJLEVBQUUsOEJBQXNCLENBQUMsQ0FBQTtJQUNoRCxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFBO0lBQ2pELE1BQU0sRUFBRSxHQUFHLElBQUksOEJBQVcsRUFBRSxDQUFBO0lBRTVCLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFBO0lBQzVCLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFO1FBQzNCLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ3ZCLE1BQU0sRUFBRSx5QkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ25ELFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxzQkFBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxzQkFBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RHLENBQUMsQ0FBQTtRQUNGLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtLQUM1RDtJQUNELEtBQUssTUFB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