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

lightningnetwork / lnd / 13566028875

27 Feb 2025 12:09PM UTC coverage: 49.396% (-9.4%) from 58.748%
13566028875

Pull #9555

github

ellemouton
graph/db: populate the graph cache in Start instead of during construction

In this commit, we move the graph cache population logic out of the
ChannelGraph constructor and into its Start method instead.
Pull Request #9555: graph: extract cache from CRUD [6]

34 of 54 new or added lines in 4 files covered. (62.96%)

27464 existing lines in 436 files now uncovered.

101095 of 204664 relevant lines covered (49.4%)

1.54 hits per line

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

0.0
/channeldb/migration29/codec.go
1
package migration29
2

3
import (
4
        "encoding/binary"
5
        "encoding/hex"
6
        "io"
7

8
        "github.com/btcsuite/btcd/wire"
9
)
10

11
var (
12
        byteOrder = binary.BigEndian
13
)
14

15
// ChannelID is a series of 32-bytes that uniquely identifies all channels
16
// within the network. The ChannelID is computed using the outpoint of the
17
// funding transaction (the txid, and output index). Given a funding output the
18
// ChannelID can be calculated by XOR'ing the big-endian serialization of the
19
// txid and the big-endian serialization of the output index, truncated to
20
// 2 bytes.
21
type ChannelID [32]byte
22

23
// String returns the string representation of the ChannelID. This is just the
24
// hex string encoding of the ChannelID itself.
25
func (c ChannelID) String() string {
×
26
        return hex.EncodeToString(c[:])
×
27
}
×
28

29
// NewChanIDFromOutPoint converts a target OutPoint into a ChannelID that is
30
// usable within the network. In order to convert the OutPoint into a ChannelID,
31
// we XOR the lower 2-bytes of the txid within the OutPoint with the big-endian
32
// serialization of the Index of the OutPoint, truncated to 2-bytes.
UNCOV
33
func NewChanIDFromOutPoint(op *wire.OutPoint) ChannelID {
×
UNCOV
34
        // First we'll copy the txid of the outpoint into our channel ID slice.
×
UNCOV
35
        var cid ChannelID
×
UNCOV
36
        copy(cid[:], op.Hash[:])
×
UNCOV
37

×
UNCOV
38
        // With the txid copied over, we'll now XOR the lower 2-bytes of the
×
UNCOV
39
        // partial channelID with big-endian serialization of output index.
×
UNCOV
40
        xorTxid(&cid, uint16(op.Index))
×
UNCOV
41

×
UNCOV
42
        return cid
×
UNCOV
43
}
×
44

45
// xorTxid performs the transformation needed to transform an OutPoint into a
46
// ChannelID. To do this, we expect the cid parameter to contain the txid
47
// unaltered and the outputIndex to be the output index
UNCOV
48
func xorTxid(cid *ChannelID, outputIndex uint16) {
×
UNCOV
49
        var buf [2]byte
×
UNCOV
50
        binary.BigEndian.PutUint16(buf[:], outputIndex)
×
UNCOV
51

×
UNCOV
52
        cid[30] ^= buf[0]
×
UNCOV
53
        cid[31] ^= buf[1]
×
UNCOV
54
}
×
55

56
// readOutpoint reads an outpoint from the passed reader.
UNCOV
57
func readOutpoint(r io.Reader, o *wire.OutPoint) error {
×
UNCOV
58
        if _, err := io.ReadFull(r, o.Hash[:]); err != nil {
×
59
                return err
×
60
        }
×
UNCOV
61
        if err := binary.Read(r, byteOrder, &o.Index); err != nil {
×
62
                return err
×
63
        }
×
64

UNCOV
65
        return nil
×
66
}
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