• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 12343072627

15 Dec 2024 11:09PM UTC coverage: 57.504% (-1.1%) from 58.636%
12343072627

Pull #9315

github

yyforyongyu
contractcourt: offer outgoing htlc one block earlier before its expiry

We need to offer the outgoing htlc one block earlier to make sure when
the expiry height hits, the sweeper will not miss sweeping it in the
same block. This also means the outgoing contest resolver now only does
one thing - watch for preimage spend till height expiry-1, which can
easily be moved into the timeout resolver instead in the future.
Pull Request #9315: Implement `blockbeat`

1445 of 2007 new or added lines in 26 files covered. (72.0%)

19246 existing lines in 249 files now uncovered.

102342 of 177975 relevant lines covered (57.5%)

24772.24 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

83.78
/lnwallet/chainfee/rates.go
1
package chainfee
2

3
import (
4
        "fmt"
5

6
        "github.com/btcsuite/btcd/blockchain"
7
        "github.com/btcsuite/btcd/btcutil"
8
        "github.com/lightningnetwork/lnd/lntypes"
9
)
10

11
const (
12
        // FeePerKwFloor is the lowest fee rate in sat/kw that we should use for
13
        // estimating transaction fees before signing.
14
        FeePerKwFloor SatPerKWeight = 253
15

16
        // AbsoluteFeePerKwFloor is the lowest fee rate in sat/kw of a
17
        // transaction that we should ever _create_. This is the equivalent
18
        // of 1 sat/byte in sat/kw.
19
        AbsoluteFeePerKwFloor SatPerKWeight = 250
20
)
21

22
// SatPerVByte represents a fee rate in sat/vbyte.
23
type SatPerVByte btcutil.Amount
24

25
// FeePerKWeight converts the current fee rate from sat/vb to sat/kw.
26
func (s SatPerVByte) FeePerKWeight() SatPerKWeight {
17✔
27
        return SatPerKWeight(s * 1000 / blockchain.WitnessScaleFactor)
17✔
28
}
17✔
29

30
// FeePerKVByte converts the current fee rate from sat/vb to sat/kvb.
31
func (s SatPerVByte) FeePerKVByte() SatPerKVByte {
1✔
32
        return SatPerKVByte(s * 1000)
1✔
33
}
1✔
34

35
// String returns a human-readable string of the fee rate.
36
func (s SatPerVByte) String() string {
1✔
37
        return fmt.Sprintf("%v sat/vb", int64(s))
1✔
38
}
1✔
39

40
// SatPerKVByte represents a fee rate in sat/kb.
41
type SatPerKVByte btcutil.Amount
42

43
// FeeForVSize calculates the fee resulting from this fee rate and the given
44
// vsize in vbytes.
45
func (s SatPerKVByte) FeeForVSize(vbytes lntypes.VByte) btcutil.Amount {
234✔
46
        return btcutil.Amount(s) * btcutil.Amount(vbytes) / 1000
234✔
47
}
234✔
48

49
// FeePerKWeight converts the current fee rate from sat/kb to sat/kw.
50
func (s SatPerKVByte) FeePerKWeight() SatPerKWeight {
221✔
51
        return SatPerKWeight(s / blockchain.WitnessScaleFactor)
221✔
52
}
221✔
53

54
// String returns a human-readable string of the fee rate.
UNCOV
55
func (s SatPerKVByte) String() string {
×
UNCOV
56
        return fmt.Sprintf("%v sat/kvb", int64(s))
×
UNCOV
57
}
×
58

59
// SatPerKWeight represents a fee rate in sat/kw.
60
type SatPerKWeight btcutil.Amount
61

62
// NewSatPerKWeight creates a new fee rate in sat/kw.
63
func NewSatPerKWeight(fee btcutil.Amount, wu lntypes.WeightUnit) SatPerKWeight {
9✔
64
        return SatPerKWeight(fee.MulF64(1000 / float64(wu)))
9✔
65
}
9✔
66

67
// FeeForWeight calculates the fee resulting from this fee rate and the given
68
// weight in weight units (wu).
69
func (s SatPerKWeight) FeeForWeight(wu lntypes.WeightUnit) btcutil.Amount {
245,511✔
70
        // The resulting fee is rounded down, as specified in BOLT#03.
245,511✔
71
        return btcutil.Amount(s) * btcutil.Amount(wu) / 1000
245,511✔
72
}
245,511✔
73

74
// FeeForVByte calculates the fee resulting from this fee rate and the given
75
// size in vbytes (vb).
76
func (s SatPerKWeight) FeeForVByte(vb lntypes.VByte) btcutil.Amount {
×
77
        return s.FeePerKVByte().FeeForVSize(vb)
×
78
}
×
79

80
// FeePerKVByte converts the current fee rate from sat/kw to sat/kb.
81
func (s SatPerKWeight) FeePerKVByte() SatPerKVByte {
532✔
82
        return SatPerKVByte(s * blockchain.WitnessScaleFactor)
532✔
83
}
532✔
84

85
// FeePerVByte converts the current fee rate from sat/kw to sat/vb.
86
func (s SatPerKWeight) FeePerVByte() SatPerVByte {
36✔
87
        return SatPerVByte(s * blockchain.WitnessScaleFactor / 1000)
36✔
88
}
36✔
89

90
// String returns a human-readable string of the fee rate.
91
func (s SatPerKWeight) String() string {
32✔
92
        return fmt.Sprintf("%v sat/kw", int64(s))
32✔
93
}
32✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc