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

lightningnetwork / lnd / 13567496470

27 Feb 2025 01:26PM UTC coverage: 58.757% (-0.1%) from 58.858%
13567496470

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]

40 of 54 new or added lines in 4 files covered. (74.07%)

307 existing lines in 27 files now uncovered.

136396 of 232137 relevant lines covered (58.76%)

19208.99 hits per line

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

34.29
/chainreg/taproot_check.go
1
package chainreg
2

3
import (
4
        "encoding/json"
5

6
        "github.com/btcsuite/btcd/rpcclient"
7
)
8

9
// backendSupportsTaproot returns true if the backend understands the taproot
10
// soft fork.
11
func backendSupportsTaproot(rpc *rpcclient.Client) bool {
1✔
12
        // First, we'll try to access the normal getblockchaininfo call.
1✔
13
        chainInfo, err := rpc.GetBlockChainInfo()
1✔
14
        if err == nil {
2✔
15
                // If this call worked, then we'll check that the taproot
1✔
16
                // deployment is defined.
1✔
17
                switch {
1✔
18
                // Bitcoind versions before 0.19 and also btcd use the
19
                // SoftForks fields.
20
                case chainInfo.SoftForks != nil:
1✔
21
                        _, ok := chainInfo.SoftForks.Bip9SoftForks["taproot"]
1✔
22
                        if ok {
2✔
23
                                return ok
1✔
24
                        }
1✔
25

26
                // Bitcoind versions after 0.19 will use the UnifiedSoftForks
27
                // field that factors in the set of "buried" soft forks.
UNCOV
28
                case chainInfo.UnifiedSoftForks != nil:
×
UNCOV
29
                        _, ok := chainInfo.UnifiedSoftForks.SoftForks["taproot"]
×
UNCOV
30
                        if ok {
×
31
                                return ok
×
32
                        }
×
33
                }
34
        }
35

36
        // The user might be running a newer version of bitcoind that doesn't
37
        // implement the getblockchaininfo call any longer, so we'll fall back
38
        // here.
39
        //
40
        // Alternatively, the fork wasn't specified, but the user might be
41
        // running a newer version of bitcoind that still has the
42
        // getblockchaininfo call, but doesn't populate the data, so we'll hit
43
        // the new getdeploymentinfo call.
UNCOV
44
        resp, err := rpc.RawRequest("getdeploymentinfo", nil)
×
UNCOV
45
        if err != nil {
×
46
                log.Warnf("unable to make getdeploymentinfo request: %v", err)
×
47
                return false
×
48
        }
×
49

UNCOV
50
        info := struct {
×
UNCOV
51
                Deployments map[string]struct {
×
UNCOV
52
                        Type   string `json:"type"`
×
UNCOV
53
                        Active bool   `json:"active"`
×
UNCOV
54
                        Height int32  `json:"height"`
×
UNCOV
55
                } `json:"deployments"`
×
UNCOV
56
        }{}
×
UNCOV
57
        if err := json.Unmarshal(resp, &info); err != nil {
×
58
                log.Warnf("unable to decode getdeploymentinfo resp: %v", err)
×
59
                return false
×
60
        }
×
61

UNCOV
62
        _, ok := info.Deployments["taproot"]
×
UNCOV
63
        return ok
×
64
}
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