aboutsummaryrefslogtreecommitdiffstats
path: root/routes/liquid
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-04-24 22:46:45 -0700
committerAdam Soltys <[email protected]>2020-04-24 22:46:45 -0700
commit83f973224bad381df62774bcc058f76eab635f0c (patch)
treeef231f4490b0c9d194b8683be50c05524738903e /routes/liquid
parent306357c24d3014b55ae1cd25b954a695ea2e5cc6 (diff)
downloadcoinos-server-assets.tar.gz
coinos-server-assets.zip
Diffstat (limited to 'routes/liquid')
-rw-r--r--routes/liquid/receive.js80
-rw-r--r--routes/liquid/send.js1
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;