tkivy: fix open_channel (API was changed) - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit ddeb176b3da0c4fcbb6cf2b8d85dd319e2a2bf56 (DIR) parent 557987d4ebfca40902e741254734f13e9150f1d9 (HTM) Author: SomberNight <somber.night@protonmail.com> Date: Sat, 23 Nov 2019 20:50:30 +0100 kivy: fix open_channel (API was changed) Diffstat: M electrum/gui/kivy/uix/dialogs/ligh… | 4 ++++ M electrum/gui/qt/main_window.py | 4 +++- M electrum/lnworker.py | 8 +++++--- 3 files changed, 12 insertions(+), 4 deletions(-) --- (DIR) diff --git a/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py b/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py t@@ -133,6 +133,7 @@ class LightningOpenChannelDialog(Factory.Popup): def on_qr(self, conn_str): self.pubkey = conn_str + # FIXME "max" button in amount_dialog should enforce LN_MAX_FUNDING_SAT def open_channel(self): if not self.pubkey or not self.amount: self.app.show_info(_('All fields must be filled out')) t@@ -145,8 +146,11 @@ class LightningOpenChannelDialog(Factory.Popup): self.dismiss() def do_open_channel(self, conn_str, amount, password): + coins = self.app.wallet.get_spendable_coins(None, nonlocal_only=True) + funding_tx = self.app.wallet.lnworker.mktx_for_open_channel(coins=coins, funding_sat=amount) try: chan, funding_tx = self.app.wallet.lnworker.open_channel(connect_str=conn_str, + funding_tx=funding_tx, funding_sat=amount, push_amt_sat=0, password=password) (DIR) diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py t@@ -1618,7 +1618,9 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): def mktx_for_open_channel(self, funding_sat): coins = self.get_coins(nonlocal_only=True) - make_tx = partial(self.wallet.lnworker.mktx_for_open_channel, coins, funding_sat) + make_tx = lambda fee_est: self.wallet.lnworker.mktx_for_open_channel(coins=coins, + funding_sat=funding_sat, + fee_est=fee_est) return make_tx def open_channel(self, connect_str, funding_sat, push_amt): (DIR) diff --git a/electrum/lnworker.py b/electrum/lnworker.py t@@ -53,7 +53,7 @@ from .lnutil import (Outpoint, LNPeerAddr, UpdateAddHtlc, Direction, LnLocalFeatures, format_short_channel_id, ShortChannelID) from .lnutil import ln_dummy_address -from .transaction import PartialTxOutput, PartialTransaction +from .transaction import PartialTxOutput, PartialTransaction, PartialTxInput from .lnonion import OnionFailureCode from .lnmsg import decode_msg from .i18n import _ t@@ -848,7 +848,8 @@ class LNWallet(LNWorker): peer = await self._add_peer(host, port, node_id) return peer - def mktx_for_open_channel(self, coins, funding_sat, fee_est): + def mktx_for_open_channel(self, *, coins: Sequence[PartialTxInput], funding_sat: int, + fee_est=None) -> PartialTransaction: dummy_address = ln_dummy_address() outputs = [PartialTxOutput.from_address_and_value(dummy_address, funding_sat)] tx = self.wallet.make_unsigned_transaction( t@@ -861,7 +862,8 @@ class LNWallet(LNWorker): def open_channel(self, *, connect_str: str, funding_tx: PartialTransaction, funding_sat: int, push_amt_sat: int, password: str = None, timeout: Optional[int] = 20) -> Tuple[Channel, PartialTransaction]: - assert funding_sat <= LN_MAX_FUNDING_SAT + if funding_sat > LN_MAX_FUNDING_SAT: + raise Exception(_("Requested channel capacity is over protocol allowed maximum.")) coro = self._open_channel_coroutine(connect_str=connect_str, funding_tx=funding_tx, funding_sat=funding_sat, push_sat=push_amt_sat, password=password) fut = asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop)