From a841fa3602372726186cd1e50477e5924966249a Mon Sep 17 00:00:00 2001 From: Janus Date: Wed, 25 Jul 2018 13:50:52 +0200 Subject: [PATCH] ln: save htlc signatures --- electrum/lnbase.py | 5 ++++- electrum/lnhtlc.py | 2 +- electrum/lnutil.py | 2 +- electrum/tests/test_lnhtlc.py | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/electrum/lnbase.py b/electrum/lnbase.py index 6c6be567e..878a8845d 100644 --- a/electrum/lnbase.py +++ b/electrum/lnbase.py @@ -611,6 +611,7 @@ class Peer(PrintError): funding_locked_received = False, was_announced = False, current_commitment_signature = None, + current_htlc_signatures = None, feerate=local_feerate ), "constraints": ChannelConstraints(capacity=funding_sat, is_initiator=True, funding_txn_minimum_depth=funding_txn_minimum_depth) @@ -1020,7 +1021,9 @@ class Peer(PrintError): self.print_error("commitment_signed", payload) channel_id = payload['channel_id'] chan = self.channels[channel_id] - chan.local_state=chan.local_state._replace(current_commitment_signature=payload['signature']) + chan.local_state=chan.local_state._replace( + current_commitment_signature=payload['signature'], + current_htlc_signatures=payload['htlc_signature']) self.lnworker.save_channel(chan) self.commitment_signed[channel_id].put_nowait(payload) diff --git a/electrum/lnhtlc.py b/electrum/lnhtlc.py index 22c1dfb00..f8e63eb53 100644 --- a/electrum/lnhtlc.py +++ b/electrum/lnhtlc.py @@ -56,7 +56,7 @@ is_key = lambda k: k.endswith("_basepoint") or k.endswith("_key") def maybeDecode(k, v): assert type(v) is not list - if k in ["node_id", "channel_id", "short_channel_id", "pubkey", "privkey", "current_per_commitment_point", "next_per_commitment_point", "per_commitment_secret_seed", "current_commitment_signature"] and v is not None: + if k in ["node_id", "channel_id", "short_channel_id", "pubkey", "privkey", "current_per_commitment_point", "next_per_commitment_point", "per_commitment_secret_seed", "current_commitment_signature", "current_htlc_signatures"] and v is not None: return binascii.unhexlify(v) return v diff --git a/electrum/lnutil.py b/electrum/lnutil.py index e6b3844ea..ad83dbd52 100644 --- a/electrum/lnutil.py +++ b/electrum/lnutil.py @@ -18,7 +18,7 @@ ChannelConfig = namedtuple("ChannelConfig", [ "to_self_delay", "dust_limit_sat", "max_htlc_value_in_flight_msat", "max_accepted_htlcs"]) OnlyPubkeyKeypair = namedtuple("OnlyPubkeyKeypair", ["pubkey"]) RemoteState = namedtuple("RemoteState", ["ctn", "next_per_commitment_point", "amount_msat", "revocation_store", "current_per_commitment_point", "next_htlc_id", "feerate"]) -LocalState = namedtuple("LocalState", ["ctn", "per_commitment_secret_seed", "amount_msat", "next_htlc_id", "funding_locked_received", "was_announced", "current_commitment_signature", "feerate"]) +LocalState = namedtuple("LocalState", ["ctn", "per_commitment_secret_seed", "amount_msat", "next_htlc_id", "funding_locked_received", "was_announced", "current_commitment_signature", "current_htlc_signatures", "feerate"]) ChannelConstraints = namedtuple("ChannelConstraints", ["capacity", "is_initiator", "funding_txn_minimum_depth"]) #OpenChannel = namedtuple("OpenChannel", ["channel_id", "short_channel_id", "funding_outpoint", "local_config", "remote_config", "remote_state", "local_state", "constraints", "node_id"]) diff --git a/electrum/tests/test_lnhtlc.py b/electrum/tests/test_lnhtlc.py index 12b5aec7a..66995d2db 100644 --- a/electrum/tests/test_lnhtlc.py +++ b/electrum/tests/test_lnhtlc.py @@ -60,6 +60,7 @@ def create_channel_state(funding_txid, funding_index, funding_sat, local_feerate funding_locked_received=True, was_announced=False, current_commitment_signature=None, + current_htlc_signatures=None, feerate=local_feerate ), "constraints":lnbase.ChannelConstraints(capacity=funding_sat, is_initiator=is_initiator, funding_txn_minimum_depth=3),