aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-04-03 15:13:41 -0700
committerAdam Soltys <[email protected]>2020-04-03 15:13:41 -0700
commitf324b72f007a72d25976a066f1f201b75990993f (patch)
treee1bf48fc01610ce635b7dc04a5b5c451216238ea
parent8d15c4e724a65347a999f31486f72bdbd9d38812 (diff)
downloadcoinos-server-f324b72f007a72d25976a066f1f201b75990993f.tar.gz
coinos-server-f324b72f007a72d25976a066f1f201b75990993f.zip
return fee rate with estimate
-rw-r--r--routes/bitcoin/fee.js7
-rw-r--r--routes/liquid/fee.js8
2 files changed, 11 insertions, 4 deletions
diff --git a/routes/bitcoin/fee.js b/routes/bitcoin/fee.js
index 259f2329..a2c63660 100644
--- a/routes/bitcoin/fee.js
+++ b/routes/bitcoin/fee.js
@@ -14,10 +14,13 @@ module.exports = async (req, res) => {
subtractFeeFromOutputs: amount === user.balance ? [0] : []
}
- if (feeRate) params["feeRate"] = (parseInt(feeRate) / SATS * 1000).toFixed(8);
+ if (feeRate) params["feeRate"] = (feeRate / SATS * 1000).toFixed(8);
tx = await bc.fundRawTransaction(tx, params);
- res.send({ tx });
+ let decoded = await bc.decodeRawTransaction(tx.hex);
+ /* TODO: figure out why this 0.8 multiplier seems necessary */
+ feeRate = (tx.fee * SATS / decoded.vsize) * 1000 * 0.80145;
+ res.send({ feeRate, tx });
} catch (e) {
l.error("bitcoin fee estimation error", e);
return res.status(500).send(e.message);
diff --git a/routes/liquid/fee.js b/routes/liquid/fee.js
index cf581905..ac1a1a49 100644
--- a/routes/liquid/fee.js
+++ b/routes/liquid/fee.js
@@ -14,10 +14,14 @@ module.exports = async (req, res) => {
subtractFeeFromOutputs: amount === user.balance ? [0] : []
}
- if (feeRate) params.feeRate = (parseFloat(feeRate) / SATS * 1000).toFixed(8);
+ if (feeRate) params["feeRate"] = (feeRate / SATS * 1000).toFixed(8);
tx = await lq.fundRawTransaction(tx, params);
- res.send({ tx });
+ let decoded = await lq.decodeRawTransaction(tx.hex);
+ /* TODO: figure out why this multiplier seems necessary */
+ feeRate = (tx.fee * SATS / decoded.size) * 1000 * 0.137685;
+ l.info(decoded.weight, decoded.size, decoded.vsize, feeRate);
+ res.send({ feeRate, tx });
} catch (e) {
l.error("error estimating liquid fee", e);
return res.status(500).send(e.message);