diff options
| author | Adam Soltys <[email protected]> | 2020-03-09 10:59:04 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2020-03-09 10:59:10 -0700 |
| commit | 1ae4c03116ce3a650af88f78a4b5d19581238c71 (patch) | |
| tree | 10fce06803f0a13c5ba990f08d687c4deced6186 /estimateLiquidFee.js | |
| parent | ddb61fe99e4103c1ba8a5d29e3aa66a580c63bf6 (diff) | |
| download | coinos-server-1ae4c03116ce3a650af88f78a4b5d19581238c71.tar.gz coinos-server-1ae4c03116ce3a650af88f78a4b5d19581238c71.zip | |
fee estimation
Diffstat (limited to 'estimateLiquidFee.js')
| -rw-r--r-- | estimateLiquidFee.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/estimateLiquidFee.js b/estimateLiquidFee.js new file mode 100644 index 00000000..fc1655b6 --- /dev/null +++ b/estimateLiquidFee.js @@ -0,0 +1,35 @@ +const config = require("./config"); +const BitcoinCore = require("bitcoin-core"); + +const l = require("pino")(); +const SATS = 100000000; + +const bc = new BitcoinCore(config.liquid); + +module.exports = (app, db, emit) => async (req, res) => { + let { user } = req; + let { address, amount, confTarget, feeRate, mode } = req.body; + let tx, fee; + + try { + amount = parseInt(amount); + + tx = await bc.createRawTransaction([], { + [address]: (amount / SATS).toFixed(8) + }); + + let params = { + subtractFeeFromOutputs: amount === user.balance ? [0] : [] + } + + if (feeRate) params["feeRate"] = (parseInt(feeRate) / SATS * 1000).toFixed(8); + if (confTarget) params["conf_target"] = parseInt(confTarget); + if (mode) params["estimate_mode"] = mode; + + tx = await bc.fundRawTransaction(tx, params); + res.send({ tx }); + } catch (e) { + l.error(e); + return res.status(500).send(e.message); + } +}; |
