mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-31 01:11:35 +00:00
lnchan: replace properties with functions
This commit is contained in:
parent
c339eabd31
commit
78896897cb
3 changed files with 24 additions and 32 deletions
|
@ -512,7 +512,7 @@ class Peer(PrintError):
|
|||
chan.receive_new_commitment(remote_sig, [])
|
||||
# broadcast funding tx
|
||||
await self.network.broadcast_transaction(funding_tx)
|
||||
chan.remote_commitment_to_be_revoked = chan.pending_remote_commitment
|
||||
chan.remote_commitment_to_be_revoked = chan.pending_remote_commitment()
|
||||
chan.config[REMOTE] = chan.config[REMOTE]._replace(ctn=0)
|
||||
chan.config[LOCAL] = chan.config[LOCAL]._replace(ctn=0, current_commitment_signature=remote_sig)
|
||||
chan.set_state('OPENING')
|
||||
|
@ -598,7 +598,7 @@ class Peer(PrintError):
|
|||
signature=sig_64,
|
||||
)
|
||||
chan.set_state('OPENING')
|
||||
chan.remote_commitment_to_be_revoked = chan.pending_remote_commitment
|
||||
chan.remote_commitment_to_be_revoked = chan.pending_remote_commitment()
|
||||
chan.config[REMOTE] = chan.config[REMOTE]._replace(ctn=0)
|
||||
chan.config[LOCAL] = chan.config[LOCAL]._replace(ctn=0, current_commitment_signature=remote_sig)
|
||||
self.lnworker.save_channel(chan)
|
||||
|
|
|
@ -189,8 +189,8 @@ class Channel(PrintError):
|
|||
|
||||
self.pending_fee = None
|
||||
|
||||
self.local_commitment = self.pending_local_commitment
|
||||
self.remote_commitment = self.pending_remote_commitment
|
||||
self.local_commitment = self.pending_commitment(LOCAL)
|
||||
self.remote_commitment = self.pending_commitment(REMOTE)
|
||||
|
||||
self._is_funding_txo_spent = None # "don't know"
|
||||
self._state = None
|
||||
|
@ -296,7 +296,7 @@ class Channel(PrintError):
|
|||
|
||||
old_logs = dict(self.lock_in_htlc_changes(LOCAL))
|
||||
|
||||
pending_remote_commitment = self.pending_remote_commitment
|
||||
pending_remote_commitment = self.pending_commitment(REMOTE)
|
||||
sig_64 = sign_and_get_sig_string(pending_remote_commitment, self.config[LOCAL], self.config[REMOTE])
|
||||
|
||||
their_remote_htlc_privkey_number = derive_privkey(
|
||||
|
@ -357,7 +357,7 @@ class Channel(PrintError):
|
|||
|
||||
assert len(htlc_sigs) == 0 or type(htlc_sigs[0]) is bytes
|
||||
|
||||
pending_local_commitment = self.pending_local_commitment
|
||||
pending_local_commitment = self.pending_commitment(LOCAL)
|
||||
preimage_hex = pending_local_commitment.serialize_preimage(0)
|
||||
pre_hash = sha256d(bfh(preimage_hex))
|
||||
if not ecc.verify_signature(self.config[REMOTE].multisig_key.pubkey, sig, pre_hash):
|
||||
|
@ -386,8 +386,8 @@ class Channel(PrintError):
|
|||
self.process_new_offchain_ctx(pending_local_commitment, ours=True)
|
||||
|
||||
def verify_htlc(self, htlc, htlc_sigs, we_receive):
|
||||
_, this_point, _ = self.points
|
||||
_script, htlc_tx = make_htlc_tx_with_open_channel(self, this_point, True, we_receive, self.pending_local_commitment, htlc)
|
||||
_, this_point, _ = self.points()
|
||||
_script, htlc_tx = make_htlc_tx_with_open_channel(self, this_point, True, we_receive, self.pending_commitment(LOCAL), htlc)
|
||||
pre_hash = sha256d(bfh(htlc_tx.serialize_preimage(0)))
|
||||
remote_htlc_pubkey = derive_pubkey(self.config[REMOTE].htlc_basepoint.pubkey, this_point)
|
||||
for idx, sig in enumerate(htlc_sigs):
|
||||
|
@ -399,7 +399,7 @@ class Channel(PrintError):
|
|||
def revoke_current_commitment(self):
|
||||
self.print_error("revoke_current_commitment")
|
||||
|
||||
last_secret, this_point, next_point = self.points
|
||||
last_secret, this_point, next_point = self.points()
|
||||
|
||||
new_feerate = self.constraints.feerate
|
||||
|
||||
|
@ -420,11 +420,10 @@ class Channel(PrintError):
|
|||
feerate=new_feerate
|
||||
)
|
||||
|
||||
self.local_commitment = self.pending_local_commitment
|
||||
self.local_commitment = self.pending_commitment(LOCAL)
|
||||
|
||||
return RevokeAndAck(last_secret, next_point), "current htlcs"
|
||||
|
||||
@property
|
||||
def points(self):
|
||||
last_small_num = self.config[LOCAL].ctn
|
||||
this_small_num = last_small_num + 1
|
||||
|
@ -486,7 +485,7 @@ class Channel(PrintError):
|
|||
# FIXME not sure this is correct... but it seems to work
|
||||
# if there are update_add_htlc msgs between commitment_signed and rev_ack,
|
||||
# this might break
|
||||
prev_remote_commitment = self.pending_remote_commitment
|
||||
prev_remote_commitment = self.pending_commitment(REMOTE)
|
||||
|
||||
self.config[REMOTE].revocation_store.add_next_entry(revocation.per_commitment_secret)
|
||||
self.process_new_revocation_secret(revocation.per_commitment_secret)
|
||||
|
@ -531,8 +530,8 @@ class Channel(PrintError):
|
|||
if self.constraints.is_initiator:
|
||||
self.pending_fee[FUNDEE_ACKED] = True
|
||||
|
||||
self.local_commitment = self.pending_local_commitment
|
||||
self.remote_commitment = self.pending_remote_commitment
|
||||
self.local_commitment = self.pending_commitment(LOCAL)
|
||||
self.remote_commitment = self.pending_commitment(REMOTE)
|
||||
self.remote_commitment_to_be_revoked = prev_remote_commitment
|
||||
return received_this_batch, sent_this_batch
|
||||
|
||||
|
@ -601,11 +600,6 @@ class Channel(PrintError):
|
|||
fee_for_htlc = lambda htlc: htlc.amount_msat // 1000 - (weight * feerate // 1000)
|
||||
return filter(lambda htlc: fee_for_htlc(htlc) >= conf.dust_limit_sat, htlcs)
|
||||
|
||||
@property
|
||||
def pending_remote_commitment(self):
|
||||
this_point = self.config[REMOTE].next_per_commitment_point
|
||||
return self.make_commitment(REMOTE, this_point)
|
||||
|
||||
def pending_feerate(self, subject):
|
||||
candidate = self.constraints.feerate
|
||||
if self.pending_fee is not None:
|
||||
|
@ -614,10 +608,9 @@ class Channel(PrintError):
|
|||
candidate = x
|
||||
return candidate
|
||||
|
||||
@property
|
||||
def pending_local_commitment(self):
|
||||
_, this_point, _ = self.points
|
||||
return self.make_commitment(LOCAL, this_point)
|
||||
def pending_commitment(self, subject):
|
||||
this_point = self.config[REMOTE].next_per_commitment_point if subject == REMOTE else self.points()[1]
|
||||
return self.make_commitment(subject, this_point)
|
||||
|
||||
def total_msat(self, sub):
|
||||
return sum(self.settled[sub])
|
||||
|
@ -677,9 +670,8 @@ class Channel(PrintError):
|
|||
def current_height(self):
|
||||
return {LOCAL: self.config[LOCAL].ctn, REMOTE: self.config[REMOTE].ctn}
|
||||
|
||||
@property
|
||||
def pending_local_fee(self):
|
||||
return self.constraints.capacity - sum(x[2] for x in self.pending_local_commitment.outputs())
|
||||
return self.constraints.capacity - sum(x[2] for x in self.pending_commitment(LOCAL).outputs())
|
||||
|
||||
def update_fee(self, feerate, initiator):
|
||||
if self.constraints.is_initiator != initiator:
|
||||
|
@ -821,7 +813,7 @@ class Channel(PrintError):
|
|||
fee_sat: Optional[int]=None) -> Tuple[bytes, int, str]:
|
||||
""" cooperative close """
|
||||
if fee_sat is None:
|
||||
fee_sat = self.pending_local_fee
|
||||
fee_sat = self.pending_local_fee()
|
||||
|
||||
_, outputs = make_commitment_outputs({
|
||||
LOCAL: fee_sat * 1000 if self.constraints.is_initiator else 0,
|
||||
|
@ -849,7 +841,7 @@ class Channel(PrintError):
|
|||
# but in this case, we want the current one. So substract one ctn number
|
||||
old_local_state = self.config[LOCAL]
|
||||
self.config[LOCAL]=self.config[LOCAL]._replace(ctn=self.config[LOCAL].ctn - 1)
|
||||
tx = self.pending_local_commitment
|
||||
tx = self.pending_commitment(LOCAL)
|
||||
self.config[LOCAL] = old_local_state
|
||||
tx.sign({bh2u(self.config[LOCAL].multisig_key.pubkey): (self.config[LOCAL].multisig_key.privkey, True)})
|
||||
remote_sig = self.config[LOCAL].current_commitment_signature
|
||||
|
|
|
@ -193,7 +193,7 @@ class TestChannel(unittest.TestCase):
|
|||
bob_idx = self.bob_channel.add_htlc(self.htlc_dict)
|
||||
alice_idx = self.alice_channel.receive_htlc(self.htlc_dict)
|
||||
self.alice_channel.receive_new_commitment(*self.bob_channel.sign_next_commitment())
|
||||
self.assertEqual(len(self.alice_channel.pending_remote_commitment.outputs()), 3)
|
||||
self.assertEqual(len(self.alice_channel.pending_commitment(REMOTE).outputs()), 3)
|
||||
|
||||
def test_SimpleAddSettleWorkflow(self):
|
||||
alice_channel, bob_channel = self.alice_channel, self.bob_channel
|
||||
|
@ -577,13 +577,13 @@ class TestChanReserve(unittest.TestCase):
|
|||
bob_idx = self.bob_channel.receive_htlc(htlc_dict)
|
||||
force_state_transition(self.alice_channel, self.bob_channel)
|
||||
self.check_bals(one_bitcoin_in_msat*3\
|
||||
- self.alice_channel.pending_local_fee,
|
||||
- self.alice_channel.pending_local_fee(),
|
||||
one_bitcoin_in_msat*5)
|
||||
self.bob_channel.settle_htlc(paymentPreimage, bob_idx)
|
||||
self.alice_channel.receive_htlc_settle(paymentPreimage, alice_idx)
|
||||
force_state_transition(self.alice_channel, self.bob_channel)
|
||||
self.check_bals(one_bitcoin_in_msat*3\
|
||||
- self.alice_channel.pending_local_fee,
|
||||
- self.alice_channel.pending_local_fee(),
|
||||
one_bitcoin_in_msat*7)
|
||||
# And now let Bob add an HTLC of 1 BTC. This will take Bob's balance
|
||||
# all the way down to his channel reserve, but since he is not paying
|
||||
|
@ -593,7 +593,7 @@ class TestChanReserve(unittest.TestCase):
|
|||
self.alice_channel.receive_htlc(htlc_dict)
|
||||
force_state_transition(self.alice_channel, self.bob_channel)
|
||||
self.check_bals(one_bitcoin_in_msat*3\
|
||||
- self.alice_channel.pending_local_fee,
|
||||
- self.alice_channel.pending_local_fee(),
|
||||
one_bitcoin_in_msat*6)
|
||||
|
||||
def check_bals(self, amt1, amt2):
|
||||
|
@ -624,7 +624,7 @@ class TestDust(unittest.TestCase):
|
|||
self.assertEqual(len(alice_channel.local_commitment.outputs()), 3)
|
||||
self.assertEqual(len(bob_channel.local_commitment.outputs()), 2)
|
||||
default_fee = calc_static_fee(0)
|
||||
self.assertEqual(bob_channel.pending_local_fee, default_fee + htlcAmt)
|
||||
self.assertEqual(bob_channel.pending_local_fee(), default_fee + htlcAmt)
|
||||
bob_channel.settle_htlc(paymentPreimage, bobHtlcIndex)
|
||||
alice_channel.receive_htlc_settle(paymentPreimage, aliceHtlcIndex)
|
||||
force_state_transition(bob_channel, alice_channel)
|
||||
|
|
Loading…
Add table
Reference in a new issue