Add global fee settings from config.js

This commit is contained in:
xraid 2021-07-02 13:27:18 +02:00 committed by Overtorment
parent d3df6aab05
commit 957d6c5951
5 changed files with 23 additions and 15 deletions

View File

@ -12,9 +12,9 @@ export class Paym {
this._isPaid = null;
}
static get fee() {
return 0.003;
}
// static get fee() {
// return 0.003;
// }
setInvoice(bolt11) {
this._bolt11 = bolt11;
@ -39,7 +39,7 @@ export class Paym {
pub_key: this._decoded.destination,
amt: this._decoded.num_satoshis,
final_cltv_delta: 144,
fee_limit: { fixed: Math.floor(this._decoded.num_satoshis * 0.01) + 1 },
fee_limit: { fixed: Math.floor(this._decoded.num_satoshis * forwardFee) + 1 },
};
let that = this;
return new Promise(function (resolve, reject) {
@ -74,7 +74,7 @@ export class Paym {
if (payment && payment.payment_route && payment.payment_route.total_amt_msat) {
// paid just now
this._isPaid = true;
payment.payment_route.total_fees = +payment.payment_route.total_fees + Math.floor(+payment.payment_route.total_amt * Paym.fee);
payment.payment_route.total_fees = +payment.payment_route.total_fees + Math.floor(+payment.payment_route.total_amt * internalFee);
if (this._bolt11) payment.pay_req = this._bolt11;
if (this._decoded) payment.decoded = this._decoded;
}
@ -87,7 +87,7 @@ export class Paym {
if (this._bolt11) payment.pay_req = this._bolt11;
// trying to guess the fee
payment.payment_route = payment.payment_route || {};
payment.payment_route.total_fees = Math.floor(this._decoded.num_satoshis * 0.01); // we dont know the exact fee, so we use max (same as fee_limit)
payment.payment_route.total_fees = Math.floor(this._decoded.num_satoshis * forwardFee); // we dont know the exact fee, so we use max (same as fee_limit)
payment.payment_route.total_amt = this._decoded.num_satoshis;
}
}

View File

@ -175,7 +175,7 @@ export class User {
let lockedPayments = await this.getLockedPayments();
for (let paym of lockedPayments) {
// locked payments are processed in scripts/process-locked-payments.js
calculatedBalance -= +paym.amount + /* feelimit */ Math.floor(paym.amount * 0.01);
calculatedBalance -= +paym.amount + /* feelimit */ Math.floor(paym.amount * forwardFee);
}
return calculatedBalance;
@ -579,7 +579,7 @@ export class User {
try {
json = JSON.parse(paym);
result.push(json);
} catch (_) {}
} catch (_) { }
}
return result;

View File

@ -2,6 +2,8 @@ let config = {
enableUpdateDescribeGraph: false,
postRateLimit: 100,
rateLimit: 200,
defaultForwardReserveFee: 0.01,
defaultIntraHubFee: 0.003,
bitcoind: {
rpc: 'http://login:password@1.1.1.1:8332/wallet/wallet.dat',
},

View File

@ -15,6 +15,12 @@ redis.monitor(function (err, monitor) {
});
});
/****** START SET FEES FROM CONFIG AT STARTUP ******/
/** GLOBALS */
global.forwardFee = config.defaultForwardReserveFee;
global.internalFee = config.defaultIntraHubFee;
/****** END SET FEES FROM CONFIG AT STARTUP ******/
let bitcoinclient = require('../bitcoin');
let lightning = require('../lightning');
let identity_pubkey = false;
@ -235,7 +241,7 @@ router.post('/payinvoice', async function (req, res) {
logger.log('/payinvoice', [req.id, 'userBalance: ' + userBalance, 'num_satoshis: ' + info.num_satoshis]);
if (userBalance >= +info.num_satoshis + Math.floor(info.num_satoshis * 0.01)) {
if (userBalance >= +info.num_satoshis + Math.floor(info.num_satoshis * forwardFee)) {
// got enough balance, including 1% of payment amount - reserve for fees
if (identity_pubkey === info.destination) {
@ -262,8 +268,8 @@ router.post('/payinvoice', async function (req, res) {
await u.savePaidLndInvoice({
timestamp: parseInt(+new Date() / 1000),
type: 'paid_invoice',
value: +info.num_satoshis + Math.floor(info.num_satoshis * Paym.fee),
fee: Math.floor(info.num_satoshis * Paym.fee),
value: +info.num_satoshis + Math.floor(info.num_satoshis * internalFee),
fee: Math.floor(info.num_satoshis * internalFee),
memo: decodeURIComponent(info.description),
pay_req: req.body.invoice,
});
@ -316,7 +322,7 @@ router.post('/payinvoice', async function (req, res) {
let inv = {
payment_request: req.body.invoice,
amt: info.num_satoshis, // amt is used only for 'tip' invoices
fee_limit: { fixed: Math.floor(info.num_satoshis * 0.005) + 1 },
fee_limit: { fixed: Math.floor(info.num_satoshis * internalFee) + 1 }, // fee setting was 0.005 now set as internalFee
};
try {
await u.lockFunds(req.body.invoice, info);
@ -419,8 +425,8 @@ router.get('/gettxs', async function (req, res) {
for (let locked of lockedPayments) {
txs.push({
type: 'paid_invoice',
fee: Math.floor(locked.amount * 0.01) /* feelimit */,
value: locked.amount + Math.floor(locked.amount * 0.01) /* feelimit */,
fee: Math.floor(locked.amount * forwardFee) /* feelimit */,
value: locked.amount + Math.floor(locked.amount * forwardFee) /* feelimit */,
timestamp: locked.timestamp,
memo: 'Payment in transition',
});

View File

@ -50,7 +50,7 @@ let lightning = require('../lightning');
let locked = await U.getLockedPayments();
for (let loc of locked) {
console.log('-', loc.amount + /* fee limit */ Math.floor(loc.amount * 0.01), new Date(loc.timestamp * 1000).toString(), '[locked]');
console.log('-', loc.amount + /* fee limit */ Math.floor(loc.amount * config.defaultForwardReserveFee), new Date(loc.timestamp * 1000).toString(), '[locked]');
}
console.log('\ncalculatedBalance\n================\n', calculatedBalance, await U.getCalculatedBalance());