feat: add batch_id to cash_in_txs
feat: bitcoind sendmany request feat: check if wallet supports transaction batching
This commit is contained in:
parent
24ed69244c
commit
c8adaabf85
3 changed files with 43 additions and 0 deletions
|
|
@ -79,6 +79,22 @@ function sendCoins (account, tx, settings, operatorId, feeMultiplier) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sendCoinsBatch (account, txs, cryptoCode) {
|
||||||
|
return checkCryptoCode(cryptoCode)
|
||||||
|
.then(() => {
|
||||||
|
const txAddressAmountPairs = _.map(tx => [tx.address, tx.cryptoAtoms.shift(-unitScale).toFixed(8)], txs)
|
||||||
|
return Promise.all([JSON.stringify(_.fromPairs(txAddressAmountPairs))])
|
||||||
|
})
|
||||||
|
.then(([obj]) => fetch('sendmany', ['', obj]))
|
||||||
|
.then(res => ({
|
||||||
|
txid: res.txid
|
||||||
|
}))
|
||||||
|
.catch(err => {
|
||||||
|
if (err.code === -6) throw new E.InsufficientFundsError()
|
||||||
|
throw err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function newAddress (account, info, tx, settings, operatorId) {
|
function newAddress (account, info, tx, settings, operatorId) {
|
||||||
return checkCryptoCode(info.cryptoCode)
|
return checkCryptoCode(info.cryptoCode)
|
||||||
.then(() => fetch('getnewaddress'))
|
.then(() => fetch('getnewaddress'))
|
||||||
|
|
|
||||||
|
|
@ -210,6 +210,11 @@ function isStrictAddress (settings, cryptoCode, toAddress) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function supportsBatching (settings, cryptoCode) {
|
||||||
|
return fetchWallet(settings, cryptoCode)
|
||||||
|
.then(r => _.isFunction(r.wallet.sendCoinsBatch))
|
||||||
|
}
|
||||||
|
|
||||||
const coinFilter = ['ETH']
|
const coinFilter = ['ETH']
|
||||||
|
|
||||||
const balance = (settings, cryptoCode) => {
|
const balance = (settings, cryptoCode) => {
|
||||||
|
|
|
||||||
22
migrations/1621556014244-add-btc-tx-batching.js
Normal file
22
migrations/1621556014244-add-btc-tx-batching.js
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
var db = require('./db')
|
||||||
|
|
||||||
|
exports.up = function (next) {
|
||||||
|
var sql = [
|
||||||
|
`CREATE TYPE transaction_batch_status AS ENUM('open', 'failed', 'sent')`,
|
||||||
|
`CREATE TABLE transaction_batches (
|
||||||
|
id UUID PRIMARY KEY,
|
||||||
|
crypto_code TEXT NOT NULL,
|
||||||
|
status transaction_batch_status NOT NULL DEFAULT 'open',
|
||||||
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
|
closed_at TIMESTAMPTZ,
|
||||||
|
error_message TEXT
|
||||||
|
)`,
|
||||||
|
`ALTER TABLE cash_in_txs ADD COLUMN batch_id REFERENCES transaction_batches(id)`
|
||||||
|
]
|
||||||
|
|
||||||
|
db.multi(sql, next)
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.down = function (next) {
|
||||||
|
next()
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue