UNPKG

@terra-money/core

Version:

This package provides Terra Blockchain client side APIs to support building transaction, singing, or querying chain data.

203 lines 5.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const SHA256 = require("crypto-js/sha256"); function normalizeDecimal(decimalNumber) { const num = decimalNumber.split('.'); let result = decimalNumber; if (num.length === 1) { result += '000000000000000000'; } else { const decimalPart = num[1]; for (let i = 18; i > decimalPart.length; i -= 1) { result += '0'; } } return result; } function generateVoteHash(salt, exchangeRate, denom, voter) { const proof = `${salt}:${normalizeDecimal(exchangeRate)}:${denom}:${voter}`; const hash = SHA256(proof).toString(); // hex string return hash.slice(0, 40); // 20 prefix bytes } exports.generateVoteHash = generateVoteHash; function buildStdTx(msg, fee, memo) { fee.amount.sort((a, b) => { if (a.denom < b.denom) return -1; return 1; }); return { type: 'core/StdTx', value: { fee, memo, msg, signatures: [] } }; } exports.buildStdTx = buildStdTx; function buildExchangeRatePrevote(hash, denom, feeder, validator) { return { type: 'oracle/MsgExchangeRatePrevote', value: { hash, denom, feeder, validator } }; } exports.buildExchangeRatePrevote = buildExchangeRatePrevote; function buildExchangeRateVote(exchangeRate, salt, denom, feeder, validator) { return { type: 'oracle/MsgExchangeRateVote', value: { exchange_rate: exchangeRate, salt, denom, feeder, validator } }; } exports.buildExchangeRateVote = buildExchangeRateVote; function buildSend(amount, fromAddress, toAddress) { // Sort coins before building msg amount.sort((a, b) => { if (a.denom < b.denom) return -1; return 1; }); return { type: 'bank/MsgSend', value: { amount, from_address: fromAddress, to_address: toAddress } }; } exports.buildSend = buildSend; function buildMultiSend(inputs, outputs) { // Sort coins before building msg inputs.forEach(o => { o.coins.sort((a, b) => { if (a < b) return -1; return 1; }); }); outputs.forEach(o => { o.coins.sort((a, b) => { if (a < b) return -1; return 1; }); }); return { type: 'bank/MsgMultiSend', value: { inputs, outputs } }; } exports.buildMultiSend = buildMultiSend; function buildSwap(trader, offerCoin, askDenom) { return { type: 'market/MsgSwap', value: { trader, offer_coin: offerCoin, ask_denom: askDenom } }; } exports.buildSwap = buildSwap; function buildSetWithdrawAddress(delegatorAddress, withdrawAddress) { return { type: 'distribution/MsgModifyWithdrawAddress', value: { delegator_address: delegatorAddress, withdraw_address: withdrawAddress } }; } exports.buildSetWithdrawAddress = buildSetWithdrawAddress; function buildWithdrawDelegatorReward(delegatorAddress, validatorAddress) { return { type: 'distribution/MsgWithdrawDelegationReward', value: { delegator_address: delegatorAddress, validator_address: validatorAddress } }; } exports.buildWithdrawDelegatorReward = buildWithdrawDelegatorReward; function buildDelegate(delegatorAddress, validatorAddress, amount) { return { type: 'staking/MsgDelegate', value: { delegator_address: delegatorAddress, validator_address: validatorAddress, amount } }; } exports.buildDelegate = buildDelegate; function buildRedelegate(delegatorAddress, validatorSrcAddress, validatorDstAddress, amount) { return { type: 'staking/MsgBeginRedelegate', value: { delegator_address: delegatorAddress, validator_src_address: validatorSrcAddress, validator_dst_address: validatorDstAddress, amount } }; } exports.buildRedelegate = buildRedelegate; function buildUndelegate(delegatorAddress, validatorAddress, amount) { return { type: 'staking/MsgUndelegate', value: { delegator_address: delegatorAddress, validator_address: validatorAddress, amount } }; } exports.buildUndelegate = buildUndelegate; function buildDeposit(proposalID, depositor, amount) { return { type: 'gov/MsgDeposit', value: { proposal_id: proposalID, depositor, amount } }; } exports.buildDeposit = buildDeposit; var VoteOption; (function (VoteOption) { VoteOption[VoteOption["OptionEmpty"] = 0] = "OptionEmpty"; VoteOption[VoteOption["OptionYes"] = 1] = "OptionYes"; VoteOption[VoteOption["OptionAbstain"] = 2] = "OptionAbstain"; VoteOption[VoteOption["OptionNo"] = 3] = "OptionNo"; VoteOption[VoteOption["OptionNoWithVeto"] = 4] = "OptionNoWithVeto"; })(VoteOption = exports.VoteOption || (exports.VoteOption = {})); function buildVote(proposalID, voter, option) { return { type: 'gov/MsgVote', value: { proposal_id: proposalID, voter, option } }; } exports.buildVote = buildVote; //# sourceMappingURL=msgUtils.js.map