diff options
| -rw-r--r-- | routes/assets.js | 35 | ||||
| -rw-r--r-- | routes/swaps.js | 267 |
2 files changed, 162 insertions, 140 deletions
diff --git a/routes/assets.js b/routes/assets.js index 324acb7b..60a73063 100644 --- a/routes/assets.js +++ b/routes/assets.js @@ -29,11 +29,17 @@ app.get( Object.keys(assets).map(a => { assets[a].registered = true; assets[a].asset = assets[a].asset_id; - }); + }); - accounts.map(a => { - if (!a.asset) console.log(a.id); - if (!assets[a.asset]) assets[a.asset] = a.get({ plain: true }); + accounts.map(({ asset, name, domain, ticker, precision }) => { + if (!assets[asset]) + assets[asset] = { + asset, + name, + domain, + ticker, + precision + }; }); res.send(assets); @@ -162,7 +168,13 @@ app.post( ); emit(user.username, "account", account); - l.info("issued asset", user.username, params.asset_amount, ticker, name); + l.info( + "issued asset", + user.username, + params.asset_amount, + ticker, + name + ); const asset_payment = await db.Payment.create( { @@ -369,15 +381,16 @@ app.get( let faucet = await db.Account.findOne({ where: { asset, - user_id: null, + user_id: null } }); - if (!faucet) faucet = { - asset, - balance: 0, - ticker: 'Unknown', - }; + if (!faucet) + faucet = { + asset, + balance: 0, + ticker: "Unknown" + }; res.send(faucet); }) diff --git a/routes/swaps.js b/routes/swaps.js index e12dd450..f000d45e 100644 --- a/routes/swaps.js +++ b/routes/swaps.js @@ -832,58 +832,34 @@ app.post( }) ); -setInterval(async () => { - if (!app.get("rates")) return; - const amount = 0.0001; - const btc = config.liquid.btcasset; - const lcad = config.liquid.cadasset; - const { CAD, USD } = app.get("rates"); - const user = await db.User.findOne({ - where: { - username: "maker" - } - }); - - await db.transaction(async transaction => { - let p = await db.Order.findOne( - { - where: { - user_id: user.id, - "$acc1.asset$": btc, - "$acc2.asset$": lcad, - accepted: false - }, - include: [ - { - model: db.Account, - as: "acc1" - }, - { - model: db.Account, - as: "acc2" - } - ] - }, - { transaction } - ); - - let params = { - a1: btc, - a2: lcad, - v1: amount * SATS, - v2: Math.round(amount * SATS * (((app.get("ask") * CAD) / USD) * 1.01)) - }; +[ + { + c1: config.liquid.btcasset, + c2: config.liquid.cadasset + }, + { + c1: config.liquid.btcasset, + c2: config.liquid.usdtasset + } +].map(({ c1, c2 }) => { + setInterval(async () => { + if (!app.get("rates")) return; + const amount = 0.0001; + const { CAD, USD } = app.get("rates"); + const user = await db.User.findOne({ + where: { + username: "maker" + } + }); - if (p) { - let bestBid = await db.Order.findOne( + await db.transaction(async transaction => { + let p = await db.Order.findOne( { where: { - "$acc1.asset$": lcad, - "$acc2.asset$": btc, - accepted: false, - id: { - [Op.ne]: p.id - } + user_id: user.id, + "$acc1.asset$": c1, + "$acc2.asset$": c2, + accepted: false }, include: [ { @@ -894,73 +870,73 @@ setInterval(async () => { model: db.Account, as: "acc2" } - ], - order: [["rate", "DESC"]], - limit: 1 + ] }, { transaction } ); - if ( - !bestBid || - (params.v2 / params.v1 > bestBid.rate && p.acc2.balance >= params.v2) - ) { - p.v1 = params.v1; - p.v2 = params.v2; - await p.save(); - p = p.get({ plain: true }); - p.a1 = params.a1; - p.a2 = params.a2; - p.rate = p.v2 / p.v1; - broadcast("order", shallow(p)); - } - } else { - try { - await swap(user, params); - } catch (e) { - l.warn("Failed to make ask", e.message); - } - } + let params = { + a1: c1, + a2: c2, + v1: amount * SATS, + v2: Math.round(amount * SATS * (((app.get("ask") * CAD) / USD) * 1.01)) + }; - p = await db.Order.findOne( - { - where: { - user_id: user.id, - "$acc1.asset$": lcad, - "$acc2.asset$": btc, - accepted: false - }, - include: [ + if (p) { + let bestBid = await db.Order.findOne( { - model: db.Account, - as: "acc1" + where: { + "$acc1.asset$": c2, + "$acc2.asset$": c1, + accepted: false, + id: { + [Op.ne]: p.id + } + }, + include: [ + { + model: db.Account, + as: "acc1" + }, + { + model: db.Account, + as: "acc2" + } + ], + order: [["rate", "DESC"]], + limit: 1 }, - { - model: db.Account, - as: "acc2" - } - ] - }, - { transaction } - ); + { transaction } + ); + if ( + !bestBid || + (params.v2 / params.v1 > bestBid.rate && p.acc2.balance >= params.v2) + ) { + p.v1 = params.v1; + p.v2 = params.v2; + await p.save(); + p = p.get({ plain: true }); + p.a1 = params.a1; + p.a2 = params.a2; + p.rate = p.v2 / p.v1; - params = { - a1: lcad, - a2: btc, - v1: Math.round(amount * SATS * ((app.get("bid") * CAD) / USD) * 0.99), - v2: amount * SATS - }; + broadcast("order", shallow(p)); + } + } else { + try { + await swap(user, params); + } catch (e) { + l.warn("Failed to make ask", e.message); + } + } - if (p) { - let bestAsk = await db.Order.findOne( + p = await db.Order.findOne( { where: { - "$acc1.asset$": btc, - "$acc2.asset$": lcad, - accepted: false, - id: { - [Op.ne]: p.id - } + user_id: user.id, + "$acc1.asset$": c2, + "$acc2.asset$": c1, + accepted: false }, include: [ { @@ -971,33 +947,66 @@ setInterval(async () => { model: db.Account, as: "acc2" } - ], - order: [["rate", "ASC"]], - limit: 1 + ] }, { transaction } ); - if ( - !bestAsk || - (params.v1 / params.v2 < bestAsk.rate && p.acc1.balance >= params.v1) - ) { - p.v1 = params.v1; - p.v2 = params.v2; - await p.save(); - p = p.get({ plain: true }); - p.a1 = params.a1; - p.a2 = params.a2; - p.rate = p.v2 / p.v1; + params = { + a1: c2, + a2: c1, + v1: Math.round(amount * SATS * ((app.get("bid") * CAD) / USD) * 0.99), + v2: amount * SATS + }; - broadcast("order", shallow(p)); - } - } else { - try { - await swap(user, params); - } catch (e) { - l.warn("Failed to make bid", e.message); + if (p) { + let bestAsk = await db.Order.findOne( + { + where: { + "$acc1.asset$": c1, + "$acc2.asset$": c2, + accepted: false, + id: { + [Op.ne]: p.id + } + }, + include: [ + { + model: db.Account, + as: "acc1" + }, + { + model: db.Account, + as: "acc2" + } + ], + order: [["rate", "ASC"]], + limit: 1 + }, + { transaction } + ); + + if ( + !bestAsk || + (params.v1 / params.v2 < bestAsk.rate && p.acc1.balance >= params.v1) + ) { + p.v1 = params.v1; + p.v2 = params.v2; + await p.save(); + p = p.get({ plain: true }); + p.a1 = params.a1; + p.a2 = params.a2; + p.rate = p.v2 / p.v1; + + broadcast("order", shallow(p)); + } + } else { + try { + await swap(user, params); + } catch (e) { + l.warn("Failed to make bid", e.message); + } } - } - }); -}, 2000); + }); + }, 5000); +}); |
