URI: 
       tln: warn when negotiated feerate is too low - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 7cf4f40dcb328bb95cae460213373401991cb2b8
   DIR parent 8fc1779b0dc84f30088292830c95856ef11fd2fd
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Fri, 25 Jan 2019 20:16:11 +0100
       
       ln: warn when negotiated feerate is too low
       
       Diffstat:
         M electrum/lnbase.py                  |      13 ++-----------
         M electrum/lnworker.py                |      13 +++++++++++++
       
       2 files changed, 15 insertions(+), 11 deletions(-)
       ---
   DIR diff --git a/electrum/lnbase.py b/electrum/lnbase.py
       t@@ -423,7 +423,7 @@ class Peer(PrintError):
                funding_tx_test = wallet.mktx([TxOutput(bitcoin.TYPE_ADDRESS, wallet.dummy_address(), funding_sat)],
                                              password, self.lnworker.config, nonlocal_only=True)
                await self.initialized
       -        feerate = self.current_feerate_per_kw()
       +        feerate = self.lnworker.current_feerate_per_kw()
                local_config = self.make_local_config(funding_sat, push_msat, LOCAL)
                # for the first commitment transaction
                per_commitment_secret_first = get_per_commitment_secret_from_seed(local_config.per_commitment_secret_seed,
       t@@ -1131,7 +1131,7 @@ class Peer(PrintError):
                if not chan.constraints.is_initiator:
                    # TODO force close if initiator does not update_fee enough
                    return
       -        feerate_per_kw = self.current_feerate_per_kw()
       +        feerate_per_kw = self.lnworker.current_feerate_per_kw()
                chan_fee = chan.pending_feerate(REMOTE)
                self.print_error("current pending feerate", chan_fee)
                self.print_error("new feerate", feerate_per_kw)
       t@@ -1144,15 +1144,6 @@ class Peer(PrintError):
                chan.update_fee(feerate_per_kw, True)
                await self.update_channel(chan, "update_fee", channel_id=chan.channel_id, feerate_per_kw=feerate_per_kw)
        
       -    def current_feerate_per_kw(self):
       -        from .simple_config import FEE_LN_ETA_TARGET, FEERATE_FALLBACK_STATIC_FEE, FEERATE_REGTEST_HARDCODED
       -        if constants.net is constants.BitcoinRegtest:
       -            return FEERATE_REGTEST_HARDCODED // 4
       -        feerate_per_kvbyte = self.network.config.eta_target_to_fee(FEE_LN_ETA_TARGET)
       -        if feerate_per_kvbyte is None:
       -            feerate_per_kvbyte = FEERATE_FALLBACK_STATIC_FEE
       -        return max(253, feerate_per_kvbyte // 4)
       -
            def on_closing_signed(self, payload):
                chan_id = payload["channel_id"]
                if chan_id not in self.closing_signed: raise Exception("Got unknown closing_signed")
   DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py
       t@@ -760,6 +760,10 @@ class LNWorker(PrintError):
                    channels = list(self.channels.values())
                now = time.time()
                for chan in channels:
       +            if constants.net is not constants.BitcoinRegtest:
       +                ratio = chan.constraints.feerate / self.current_feerate_per_kw()
       +                if ratio < 0.5:
       +                    self.print_error(f"WARNING: fee level for channel {bh2u(chan.channel_id)} is {chan.constraints.feerate} sat/kiloweight, current recommended feerate is {self.current_feerate_per_kw()} sat/kiloweight, consider force closing!")
                    if not chan.should_try_to_reestablish_peer():
                        continue
                    peer = self.peers.get(chan.node_id, None)
       t@@ -769,6 +773,15 @@ class LNWorker(PrintError):
                        coro = peer.reestablish_channel(chan)
                        asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop)
        
       +    def current_feerate_per_kw(self):
       +        from .simple_config import FEE_LN_ETA_TARGET, FEERATE_FALLBACK_STATIC_FEE, FEERATE_REGTEST_HARDCODED
       +        if constants.net is constants.BitcoinRegtest:
       +            return FEERATE_REGTEST_HARDCODED // 4
       +        feerate_per_kvbyte = self.network.config.eta_target_to_fee(FEE_LN_ETA_TARGET)
       +        if feerate_per_kvbyte is None:
       +            feerate_per_kvbyte = FEERATE_FALLBACK_STATIC_FEE
       +        return max(253, feerate_per_kvbyte // 4)
       +
            async def main_loop(self):
                await self.on_network_update('network_updated')  # shortcut (don't block) if funding tx locked and verified
                await self.network.lnwatcher.on_network_update('network_updated')  # ping watcher to check our channels