UNPKG

@tatumio/tatum-v1

Version:

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

85 lines 7.1 kB
"use strict"; 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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