diff options
| author | Adam Soltys <[email protected]> | 2020-10-11 01:12:37 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2020-10-11 01:12:37 -0700 |
| commit | e894563fbf75706649db1b67ecdc4661bb31f9c2 (patch) | |
| tree | 8a5f8350f18d2fcfe36988b8c468d2b5fb749d42 /routes/swaps.js | |
| parent | 8b5df12518f245b8e29871a4a71d5bbcee172ce8 (diff) | |
| download | coinos-server-e894563fbf75706649db1b67ecdc4661bb31f9c2.tar.gz coinos-server-e894563fbf75706649db1b67ecdc4661bb31f9c2.zip | |
get maker to check the ask price
Diffstat (limited to 'routes/swaps.js')
| -rw-r--r-- | routes/swaps.js | 81 |
1 files changed, 63 insertions, 18 deletions
diff --git a/routes/swaps.js b/routes/swaps.js index b25e6550..a75be910 100644 --- a/routes/swaps.js +++ b/routes/swaps.js @@ -509,7 +509,7 @@ app.post( include: [ { model: db.User, - as: "user", + as: "user" }, { model: db.Account, @@ -592,8 +592,21 @@ app.post( addresses[u_address_p] = order.user.username; - console.log("new math", order.v2, Math.round(order.v2 * remaining / amount), amount, remaining, order.v1 - remaining); - order.decrement({ v1: remaining, v2: Math.round(order.v2 * remaining / amount) }, { transaction }); + console.log( + "new math", + order.v2, + Math.round((order.v2 * remaining) / amount), + amount, + remaining, + order.v1 - remaining + ); + order.decrement( + { + v1: remaining, + v2: Math.round((order.v2 * remaining) / amount) + }, + { transaction } + ); await order.save({ transaction }); await order.reload({ transaction }); @@ -835,10 +848,8 @@ app.post( setInterval(async () => { if (!app.get("rates")) return; const amount = 0.0001; - const btc = - config.liquid.btcasset; - const lcad = - config.liquid.cadasset; + const btc = config.liquid.btcasset; + const lcad = config.liquid.cadasset; const { CAD, USD } = app.get("rates"); const user = await db.User.findOne({ where: { @@ -902,7 +913,10 @@ setInterval(async () => { }, { transaction } ); - if (!bestBid || (params.v2 / params.v1 > bestBid.rate && p.acc2.balance >= params.v2)) { + if ( + !bestBid || + (params.v2 / params.v1 > bestBid.rate && p.acc2.balance >= params.v2) + ) { p.v1 = params.v1; p.v2 = params.v2; await p.save(); @@ -950,16 +964,47 @@ setInterval(async () => { v2: amount * SATS }; - if (p && p.acc1.balance >= p.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; + if (p) { + let bestAsk = await db.Order.findOne( + { + where: { + "$acc1.asset$": btc, + "$acc2.asset$": lcad, + 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)); + broadcast("order", shallow(p)); + } } else { try { await swap(user, params); @@ -968,4 +1013,4 @@ setInterval(async () => { } } }); -}, 10000); +}, 20000); |
