Add global fee settings from config.js
This commit is contained in:
		
							parent
							
								
									d3df6aab05
								
							
						
					
					
						commit
						957d6c5951
					
				@ -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;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
@ -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',
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@ -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',
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
@ -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());
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user