lnwallet: calculate channel's total satoshis sent and received
When HTLCs are settled, the channel’s TotalSatoshisSent and TotalSatoshisReceived fields are updated.
This commit is contained in:
parent
61f0d87138
commit
faf9daddf6
@ -960,6 +960,9 @@ func (lc *LightningChannel) evaluateHTLCView(view *htlcView, ourBalance,
|
|||||||
if entry.EntryType == Add {
|
if entry.EntryType == Add {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if entry.EntryType == Settle && !remoteChain {
|
||||||
|
lc.channelState.TotalSatoshisReceived += uint64(entry.Amount)
|
||||||
|
}
|
||||||
|
|
||||||
addEntry := lc.theirLogIndex[entry.ParentIndex].Value.(*PaymentDescriptor)
|
addEntry := lc.theirLogIndex[entry.ParentIndex].Value.(*PaymentDescriptor)
|
||||||
|
|
||||||
@ -971,6 +974,9 @@ func (lc *LightningChannel) evaluateHTLCView(view *htlcView, ourBalance,
|
|||||||
if entry.EntryType == Add {
|
if entry.EntryType == Add {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if entry.EntryType == Settle && !remoteChain {
|
||||||
|
lc.channelState.TotalSatoshisSent += uint64(entry.Amount)
|
||||||
|
}
|
||||||
|
|
||||||
addEntry := lc.ourLogIndex[entry.ParentIndex].Value.(*PaymentDescriptor)
|
addEntry := lc.ourLogIndex[entry.ParentIndex].Value.(*PaymentDescriptor)
|
||||||
|
|
||||||
|
@ -475,7 +475,7 @@ func TestSimpleAddSettleWorkflow(t *testing.T) {
|
|||||||
}
|
}
|
||||||
aliceRevocation2, err := aliceChannel.RevokeCurrentCommitment()
|
aliceRevocation2, err := aliceChannel.RevokeCurrentCommitment()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("alice unable to generate revoation: %v", err)
|
t.Fatalf("alice unable to generate revocation: %v", err)
|
||||||
}
|
}
|
||||||
if err := bobChannel.ReceiveNewCommitment(aliceSig2, bobLogIndex2); err != nil {
|
if err := bobChannel.ReceiveNewCommitment(aliceSig2, bobLogIndex2); err != nil {
|
||||||
t.Fatalf("bob unable to process alice's new commitment: %v", err)
|
t.Fatalf("bob unable to process alice's new commitment: %v", err)
|
||||||
@ -499,11 +499,13 @@ func TestSimpleAddSettleWorkflow(t *testing.T) {
|
|||||||
"instead can forward %v: %v", len(htlcs), spew.Sdump(htlcs))
|
"instead can forward %v: %v", len(htlcs), spew.Sdump(htlcs))
|
||||||
}
|
}
|
||||||
|
|
||||||
// At this point, bob should have 6BTC settled, with Alice still having
|
// At this point, Bob should have 6 BTC settled, with Alice still having
|
||||||
// 4 BTC. They should also be at a commitment height at two, with the
|
// 4 BTC. Alice's channel should show 1 BTC sent and Bob's channel should
|
||||||
// revocation window extended by by 1 (5).
|
// show 1 BTC received. They should also be at commitment height two,
|
||||||
|
// with the revocation window extended by by 1 (5).
|
||||||
aliceSettleBalance := btcutil.Amount(4 * 1e8)
|
aliceSettleBalance := btcutil.Amount(4 * 1e8)
|
||||||
bobSettleBalance := btcutil.Amount(6 * 1e8)
|
bobSettleBalance := btcutil.Amount(6 * 1e8)
|
||||||
|
satoshisTransferred := uint64(100000000)
|
||||||
if aliceChannel.channelState.OurBalance != aliceSettleBalance {
|
if aliceChannel.channelState.OurBalance != aliceSettleBalance {
|
||||||
t.Fatalf("alice has incorrect local balance %v vs %v",
|
t.Fatalf("alice has incorrect local balance %v vs %v",
|
||||||
aliceChannel.channelState.OurBalance, aliceSettleBalance)
|
aliceChannel.channelState.OurBalance, aliceSettleBalance)
|
||||||
@ -520,6 +522,22 @@ func TestSimpleAddSettleWorkflow(t *testing.T) {
|
|||||||
t.Fatalf("bob has incorrect remote balance %v vs %v",
|
t.Fatalf("bob has incorrect remote balance %v vs %v",
|
||||||
bobChannel.channelState.TheirBalance, aliceSettleBalance)
|
bobChannel.channelState.TheirBalance, aliceSettleBalance)
|
||||||
}
|
}
|
||||||
|
if aliceChannel.channelState.TotalSatoshisSent != satoshisTransferred {
|
||||||
|
t.Fatalf("alice satoshis sent incorrect %v vs %v expected",
|
||||||
|
aliceChannel.channelState.TotalSatoshisSent, satoshisTransferred)
|
||||||
|
}
|
||||||
|
if aliceChannel.channelState.TotalSatoshisReceived != 0 {
|
||||||
|
t.Fatalf("alice satoshis received incorrect %v vs %v expected",
|
||||||
|
aliceChannel.channelState.TotalSatoshisSent, 0)
|
||||||
|
}
|
||||||
|
if bobChannel.channelState.TotalSatoshisReceived != satoshisTransferred {
|
||||||
|
t.Fatalf("bob satoshis received incorrect %v vs %v expected",
|
||||||
|
bobChannel.channelState.TotalSatoshisReceived, satoshisTransferred)
|
||||||
|
}
|
||||||
|
if bobChannel.channelState.TotalSatoshisSent != 0 {
|
||||||
|
t.Fatalf("bob satoshis sent incorrect %v vs %v expected",
|
||||||
|
bobChannel.channelState.TotalSatoshisReceived, 0)
|
||||||
|
}
|
||||||
if bobChannel.currentHeight != 2 {
|
if bobChannel.currentHeight != 2 {
|
||||||
t.Fatalf("bob has incorrect commitment height, %v vs %v",
|
t.Fatalf("bob has incorrect commitment height, %v vs %v",
|
||||||
bobChannel.currentHeight, 2)
|
bobChannel.currentHeight, 2)
|
||||||
@ -804,4 +822,23 @@ func TestStateUpdatePersistence(t *testing.T) {
|
|||||||
t.Fatalf("expected %v bob balance, got %v", expectedBobBalance,
|
t.Fatalf("expected %v bob balance, got %v", expectedBobBalance,
|
||||||
bobBalance)
|
bobBalance)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The amounts transferred should been updated as per the amounts in
|
||||||
|
// the HTLCs
|
||||||
|
if aliceChannelNew.channelState.TotalSatoshisSent != 3000 {
|
||||||
|
t.Fatalf("expected %v alice satoshis sent, got %v",
|
||||||
|
3000, aliceChannelNew.channelState.TotalSatoshisSent)
|
||||||
|
}
|
||||||
|
if aliceChannelNew.channelState.TotalSatoshisReceived != 1000 {
|
||||||
|
t.Fatalf("expected %v alice satoshis received, got %v",
|
||||||
|
1000, aliceChannelNew.channelState.TotalSatoshisReceived)
|
||||||
|
}
|
||||||
|
if bobChannelNew.channelState.TotalSatoshisSent != 1000 {
|
||||||
|
t.Fatalf("expected %v bob satoshis sent, got %v",
|
||||||
|
1000, bobChannel.channelState.TotalSatoshisSent)
|
||||||
|
}
|
||||||
|
if bobChannelNew.channelState.TotalSatoshisReceived != 3000 {
|
||||||
|
t.Fatalf("expected %v bob satoshis sent, got %v",
|
||||||
|
3000, bobChannel.channelState.TotalSatoshisSent)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user