aboutsummaryrefslogtreecommitdiffstats
path: root/routes/bitcoin
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2021-06-24 02:52:33 -0400
committerAdam Soltys <[email protected]>2021-06-24 02:52:33 -0400
commitde06cbf6141679b2e10ca01bee1e372efc356c91 (patch)
tree5363e879eecbb3425af8ff621f0c0dd03cc9694f /routes/bitcoin
parente343c8b07794a86156601efebe58b443b15b10da (diff)
downloadcoinos-server-de06cbf6141679b2e10ca01bee1e372efc356c91.tar.gz
coinos-server-de06cbf6141679b2e10ca01bee1e372efc356c91.zip
only send on-chain after db transaction
Diffstat (limited to 'routes/bitcoin')
-rw-r--r--routes/bitcoin/send.js55
1 files changed, 27 insertions, 28 deletions
diff --git a/routes/bitcoin/send.js b/routes/bitcoin/send.js
index cab79e06..470889b3 100644
--- a/routes/bitcoin/send.js
+++ b/routes/bitcoin/send.js
@@ -1,4 +1,3 @@
-const bitcoin = require("bitcoinjs-lib");
const btc = config.liquid.btcasset;
module.exports = ah(async (req, res) => {
@@ -32,10 +31,10 @@ module.exports = ah(async (req, res) => {
total = total - change + fee;
let amount = total - fee;
- let params;
+ let account, params;
try {
await db.transaction(async transaction => {
- let account = await db.Account.findOne({
+ account = await db.Account.findOne({
where: {
id: user.account_id
},
@@ -62,38 +61,38 @@ module.exports = ah(async (req, res) => {
await account.decrement({ balance: total }, { transaction });
await account.reload({ transaction });
+ });
- params = {
- amount: -amount,
- fee,
- memo,
- account_id: account.id,
- user_id: user.id,
- rate: app.get("rates")[user.currency],
- currency: user.currency,
- address,
- confirmed: true,
- received: false,
- network: "bitcoin"
- };
+ params = {
+ amount: -amount,
+ fee,
+ memo,
+ account_id: account.id,
+ user_id: user.id,
+ rate: app.get("rates")[user.currency],
+ currency: user.currency,
+ address,
+ confirmed: true,
+ received: false,
+ network: "bitcoin"
+ };
- if (config.bitcoin.walletpass)
- await bc.walletPassphrase(config.bitcoin.walletpass, 300);
+ if (config.bitcoin.walletpass)
+ await bc.walletPassphrase(config.bitcoin.walletpass, 300);
- hex = (await bc.signRawTransactionWithWallet(hex)).hex;
- params.hash = await bc.sendRawTransaction(hex);
+ hex = (await bc.signRawTransactionWithWallet(hex)).hex;
+ params.hash = await bc.sendRawTransaction(hex);
- let payment = await db.Payment.create(params, { transaction });
+ let payment = await db.Payment.create(params);
- payment = payment.get({ plain: true });
- payment.account = account.get({ plain: true });
+ payment = payment.get({ plain: true });
+ payment.account = account.get({ plain: true });
- emit(user.username, "payment", payment);
- res.send(payment);
+ emit(user.username, "payment", payment);
+ res.send(payment);
- payments.push(params.hash);
- l.info("sent bitcoin", user.username, total);
- });
+ payments.push(params.hash);
+ l.info("sent bitcoin", user.username, total);
} catch (e) {
l.error("error sending bitcoin", e.message);
return res.status(500).send(e.message);