aboutsummaryrefslogtreecommitdiffstats
path: root/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-07-27 11:34:17 -0700
committerAdam Soltys <[email protected]>2020-07-27 11:35:36 -0700
commit3d7b27aa81165c15658f46687a2748d126c17adb (patch)
treeef737f641657501683f9f035e3aad28d49668795 /routes
parentbfb643b82b559cb4ee78c6501d339920c6df8176 (diff)
downloadcoinos-server-3d7b27aa81165c15658f46687a2748d126c17adb.tar.gz
coinos-server-3d7b27aa81165c15658f46687a2748d126c17adb.zip
asset registration
Diffstat (limited to 'routes')
-rw-r--r--routes/assets.js63
1 files changed, 47 insertions, 16 deletions
diff --git a/routes/assets.js b/routes/assets.js
index 5f838992..c9acf245 100644
--- a/routes/assets.js
+++ b/routes/assets.js
@@ -3,18 +3,22 @@ const crypto = require("crypto");
app.get("/assets", async (req, res) => {
try {
- const { data: assets } = await axios.get("https://assets.blockstream.info/");
+ const { data: assets } = await axios.get(
+ "https://assets.blockstream.info/"
+ );
const accounts = await db.Account.findAll({
- group: ['asset'],
+ group: ["asset"],
});
- accounts.map(a => {
+ Object.keys(assets).map((a) => (assets[a].registered = true));
+
+ accounts.map((a) => {
if (!assets[a.asset]) assets[a.asset] = a;
});
res.send(assets);
} catch (e) {
- l.error("error fetching assets", e);
+ l.error("error fetching assets", e.message);
res.status(500).send("error fetching assets");
}
});
@@ -29,7 +33,14 @@ app.post("/assets", auth, async (req, res) => {
const info = await lq.getAddressInfo(asset_address);
const { pubkey: issuer_pubkey } = info;
- const { domain, name, asset_amount, token_amount, precision, ticker } = req.body;
+ const {
+ domain,
+ name,
+ asset_amount,
+ token_amount,
+ precision,
+ ticker,
+ } = req.body;
const version = 0;
const contract = {
@@ -39,7 +50,7 @@ app.post("/assets", auth, async (req, res) => {
name,
precision,
ticker,
- version
+ version,
};
sha256.update(JSON.stringify(contract));
@@ -54,7 +65,7 @@ app.post("/assets", auth, async (req, res) => {
asset_amount,
asset_address,
blind,
- contract_hash
+ contract_hash,
};
params.asset_amount = parseInt(params.asset_amount);
@@ -80,18 +91,18 @@ app.post("/assets", auth, async (req, res) => {
if (allowed) {
const txid = await lq.sendRawTransaction(srt.hex);
- await db.transaction(async transaction => {
+ await db.transaction(async (transaction) => {
let account = await db.Account.findOne({
where: {
user_id,
- asset: config.liquid.btcasset
+ asset: config.liquid.btcasset,
},
include: {
model: db.User,
- as: "user"
+ as: "user",
},
lock: transaction.LOCK.UPDATE,
- transaction
+ transaction,
});
let { user } = account;
@@ -113,13 +124,14 @@ app.post("/assets", auth, async (req, res) => {
account = await db.Account.create(
{
asset,
+ contract,
domain,
user_id,
ticker,
precision,
name,
balance: 0,
- pending: asset_amount * SATS
+ pending: asset_amount * SATS,
},
{ transaction }
);
@@ -135,7 +147,7 @@ app.post("/assets", auth, async (req, res) => {
received: true,
confirmed: false,
address: asset_address,
- network: "LBTC"
+ network: "LBTC",
},
{ transaction }
);
@@ -145,7 +157,7 @@ app.post("/assets", auth, async (req, res) => {
user_id,
asset,
asset_amount,
- asset_payment_id: asset_payment.id
+ asset_payment_id: asset_payment.id,
};
if (token_amount) {
@@ -158,7 +170,7 @@ app.post("/assets", auth, async (req, res) => {
precision: 8,
name: `${name} Reissuance Token`,
balance: 0,
- pending: token_amount * SATS
+ pending: token_amount * SATS,
},
{ transaction }
);
@@ -173,7 +185,7 @@ app.post("/assets", auth, async (req, res) => {
received: true,
confirmed: false,
address: token_address,
- network: "LBTC"
+ network: "LBTC",
},
{ transaction }
);
@@ -192,3 +204,22 @@ app.post("/assets", auth, async (req, res) => {
res.status(500).send(e.message);
}
});
+
+app.post("/assets/register", auth, async (req, res) => {
+ const { asset } = req.body;
+ const account = await db.Account.findOne({
+ where: {
+ user_id: req.user.id,
+ asset,
+ },
+ });
+
+ try {
+ const { data: result } = await axios.post("https://assets.blockstream.info/", { asset_id: asset, contract: account.contract });
+ l.info("register asset result", req.user.username, result);
+ res.send(result);
+ } catch(e) {
+ l.error("asset registration failed", e.message);
+ res.status(500).send(e.message);
+ }
+});