aboutsummaryrefslogtreecommitdiffstats
path: root/routes/swaps.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-10-19 05:42:46 -0700
committerAdam Soltys <[email protected]>2020-10-24 22:33:52 -0700
commite81ac172f5e376c91081b47475dd52fcb141fc55 (patch)
treedda1f2dc4b6ed18306fe32ec84eaf297d140bd31 /routes/swaps.js
parent12091db2a92bc52e3ae97eab98a4d9f7c1a3dd08 (diff)
downloadcoinos-server-e81ac172f5e376c91081b47475dd52fcb141fc55.tar.gz
coinos-server-e81ac172f5e376c91081b47475dd52fcb141fc55.zip
tether maker
Diffstat (limited to 'routes/swaps.js')
-rw-r--r--routes/swaps.js267
1 files changed, 138 insertions, 129 deletions
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);
+});