diff options
| author | Adam Soltys <[email protected]> | 2020-04-24 22:46:45 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2020-04-24 22:46:45 -0700 |
| commit | 83f973224bad381df62774bcc058f76eab635f0c (patch) | |
| tree | ef231f4490b0c9d194b8683be50c05524738903e /routes/liquid | |
| parent | 306357c24d3014b55ae1cd25b954a695ea2e5cc6 (diff) | |
| download | coinos-server-assets.tar.gz coinos-server-assets.zip | |
wipassets
Diffstat (limited to 'routes/liquid')
| -rw-r--r-- | routes/liquid/receive.js | 80 | ||||
| -rw-r--r-- | routes/liquid/send.js | 1 |
2 files changed, 31 insertions, 50 deletions
diff --git a/routes/liquid/receive.js b/routes/liquid/receive.js index 24d17a35..8d2d6ca8 100644 --- a/routes/liquid/receive.js +++ b/routes/liquid/receive.js @@ -1,3 +1,4 @@ +const axios = require("axios"); const reverse = require("buffer-reverse"); const zmq = require("zeromq"); const { Op } = require("sequelize"); @@ -47,27 +48,26 @@ zmqRawTx.on("message", async (topic, message, sequence) => { let confirmed = 0; - if (asset === config.liquid.btcasset) { - user.pending += value; - } else { - const params = { - user_id: user.id, - asset, - }; + const params = { + user_id: user.id, + asset, + }; - const account = await db.Account.findOne({ - where: params - }); + const account = await db.Account.findOne({ + where: params + }); - if (account) { - account.pending += value; - await account.save(); - } else { - params.balance = 0; - params.pending = value; - l.info("creating", params); - await db.Account.create(params); - } + if (account) { + account.pending += value; + await account.save(); + } else { + let assets = await axios.get("https://assets.blockstream.info/"); + let { ticker, precision, name } = assets[asset]; + params = { ...params, ...{ticker, precision, name }}; + + params.balance = 0; + params.pending = value; + account = await db.Account.create(params); } user.confidential = await lq.getNewAddress(); @@ -81,6 +81,7 @@ zmqRawTx.on("message", async (topic, message, sequence) => { addresses[user.liquid] = user.username; const payment = await db.Payment.create({ + account_id: account.id, user_id: user.id, hash: blinded.txid, amount: value - tip, @@ -127,47 +128,26 @@ setInterval(async () => { let p = await db.Payment.findOne({ where: { hash, confirmed: 0, received: 1 } + include: { + model: db.Account, + as: "account", + }, }); - const user = await getUser(p.user_id); - p.confirmed = 1; - const asset = await db.Account.findOne({ - where: { - user_id: user.id, - asset: p.asset - } - }); - - l.info("asset", p.asset); - if (p.asset === config.liquid.btcasset) { - user.balance += p.amount + p.tip; - user.pending -= Math.min(user.pending, p.amount + p.tip); - } else { - asset.balance += p.amount + p.tip; - asset.pending -= Math.min(user.pending, p.amount + p.tip); - await asset.save(); - } + l.info("account", p.account); + p.account.balance += p.amount + p.tip; + p.account.pending -= Math.min(p.account.pending, p.amount + p.tip); + await p.account.save(); l.info("liquid confirmed", user.username, p.asset, p.amount, p.tip); - emit(user.username, "user", user); - await user.save(); await p.save(); - let payments = await db.Payment.findAll({ - where: { - user_id: user.id, - received: { - [Op.ne]: null - } - }, - order: [["id", "DESC"]], - limit: 12 - }); + user = await getUser(user.username); + emit(user.username, "user", user); - emit(user.username, "payments", payments); delete queue[hash]; } }, 1000); diff --git a/routes/liquid/send.js b/routes/liquid/send.js index e1a7e473..b0660929 100644 --- a/routes/liquid/send.js +++ b/routes/liquid/send.js @@ -15,6 +15,7 @@ module.exports = async (req, res) => { const unblinded = await lq.unblindRawTransaction(hex); tx = await lq.decodeRawTransaction(unblinded.hex); + l.info("decoded", tx); let total = 0; let change = 0; |
