electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit dbc4549c0e85358a6cc6886ca0d3d5b3fb92cffe
parent 0070ae1fb16a71b9b101fde6f24884cdb4959108
Author: SomberNight <somber.night@protonmail.com>
Date:   Wed, 21 Nov 2018 17:33:27 +0100

lnchan: restore process_new_offchain_ctx

Diffstat:
Melectrum/lnchan.py | 19+++++++++++++++++++
1 file changed, 19 insertions(+), 0 deletions(-)

diff --git a/electrum/lnchan.py b/electrum/lnchan.py @@ -324,6 +324,8 @@ class Channel(PrintError): htlcsigs.sort() htlcsigs = [x[1] for x in htlcsigs] + self.process_new_offchain_ctx(pending_remote_commitment, ours=False) + # we can't know if this message arrives. # since we shouldn't actually throw away # failed htlcs yet (or mark htlc locked in), @@ -387,6 +389,8 @@ class Channel(PrintError): if self.constraints.is_initiator and self.pending_fee[FUNDEE_ACKED]: self.pending_fee[FUNDER_SIGNED] = True + self.process_new_offchain_ctx(pending_local_commitment, ours=True) + def verify_htlc(self, htlc: UpdateAddHtlc, htlc_sigs: Sequence[bytes], we_receive: bool) -> int: _, this_point, _ = self.points _script, htlc_tx = make_htlc_tx_with_open_channel(chan=self, @@ -449,6 +453,21 @@ class Channel(PrintError): next_point = secret_to_pubkey(int.from_bytes(next_secret, 'big')) return last_secret, this_point, next_point + # TODO don't presign txns for non-breach close + def process_new_offchain_ctx(self, ctx: 'Transaction', ours: bool): + if not self.lnwatcher: + return + outpoint = self.funding_outpoint.to_str() + if ours: + encumbered_sweeptxs = create_sweeptxs_for_our_latest_ctx(self, ctx, self.sweep_address) + else: + encumbered_sweeptxs = create_sweeptxs_for_their_latest_ctx(self, ctx, self.sweep_address) + for prev_txid, encumbered_tx in encumbered_sweeptxs: + if prev_txid is None: + prev_txid = ctx.txid() + if encumbered_tx is not None: + self.lnwatcher.add_sweep_tx(outpoint, prev_txid, encumbered_tx.to_json()) + def process_new_revocation_secret(self, per_commitment_secret: bytes): if not self.lnwatcher: return