UNPKG

signum-transaction-grabber

Version:

Scans an Signum Blockchain account for transactions by custom criteria and persists the results

50 lines (43 loc) 1.43 kB
const { Address, TransactionType, TransactionPaymentSubtype } = require('@signumjs/core') const { Amount } = require('@signumjs/util') const { createApi } = require('./api') const { extractMessage } = require('./extractMessage') const { generateMasterKeys } = require('@signumjs/crypto') let api = null async function fetchTransactions (address) { const monitoredAddress = Address.create(address) const { transactions } = await api.account.getAccountTransactions({ accountId: monitoredAddress.getNumericId(), type: TransactionType.Payment, subtype: TransactionPaymentSubtype.Ordinary, includeIndirect: false }) return transactions } function filterTransactions (transactions, opts) { const regex = new RegExp(opts.message, 'gi') let decryptKey = null if (opts.phrase) { const { agreementPrivateKey } = generateMasterKeys(opts.phrase) decryptKey = agreementPrivateKey } return transactions.filter(tx => { let accept = true if (opts.message) { accept &= regex.test(extractMessage(tx, decryptKey)) } if (opts.signa) { accept &= Amount.fromPlanck(tx.amountNQT).greaterOrEqual(Amount.fromSigna(opts.signa)) } return accept }) } async function grab (opts) { const { address } = opts api = await createApi(opts.node) const transactions = await fetchTransactions(address) return filterTransactions(transactions, opts) } module.exports = { grab }