Skip to content

Commit 553cc37

Browse files
committed
lexi: Update badger if bad version.
1 parent bb827eb commit 553cc37

File tree

11 files changed

+165
-5
lines changed

11 files changed

+165
-5
lines changed

client/asset/btc/txdb.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020

2121
"decred.org/dcrdex/client/asset"
2222
"decred.org/dcrdex/dex"
23+
"decred.org/dcrdex/dex/lexi"
2324
"github.com/dgraph-io/badger/v4"
2425
)
2526

@@ -123,7 +124,17 @@ func (db *BadgerTxDB) Connect(ctx context.Context) (*sync.WaitGroup, error) {
123124
var err error
124125
db.DB, err = badger.Open(opts)
125126
if err != nil {
126-
return nil, err
127+
if !lexi.IsBadgerVersionError(err) {
128+
return nil, err
129+
}
130+
db.DB, err = lexi.BadgerV1Update(db.filePath, db.log, opts)
131+
if err != nil {
132+
db.log.Warnf("Unable to update old db, creating new one: %v", err)
133+
db.DB, err = badger.Open(opts)
134+
if err != nil {
135+
return nil, err
136+
}
137+
}
127138
}
128139
db.ctx = ctx
129140
db.seq, err = db.GetSequence([]byte("seq"), 10)

client/asset/eth/txdb_legacy.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
"decred.org/dcrdex/dex"
14+
"decred.org/dcrdex/dex/lexi"
1415
"github.com/dgraph-io/badger/v4"
1516
"github.com/ethereum/go-ethereum/common"
1617
)
@@ -100,7 +101,17 @@ func newBadgerTxDB(filePath string, log dex.Logger) (*badgerTxDB, error) {
100101
var err error
101102
bdb, err := badger.Open(opts)
102103
if err != nil {
103-
return nil, err
104+
if !lexi.IsBadgerVersionError(err) {
105+
return nil, err
106+
}
107+
bdb, err = lexi.BadgerV1Update(filePath, log, opts)
108+
if err != nil {
109+
log.Warnf("Unable to update old db, creating new one: %v", err)
110+
bdb, err = badger.Open(opts)
111+
if err != nil {
112+
return nil, err
113+
}
114+
}
104115
}
105116

106117
db := &badgerTxDB{

client/asset/kvdb/kvdb.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"time"
1111

1212
"decred.org/dcrdex/dex"
13+
"decred.org/dcrdex/dex/lexi"
1314
"github.com/dgraph-io/badger/v4"
1415
)
1516

@@ -34,7 +35,17 @@ func NewFileDB(filePath string, log dex.Logger) (KeyValueDB, error) {
3435
opts := badger.DefaultOptions(filePath).WithLogger(&badgerLoggerWrapper{log})
3536
db, err := badger.Open(opts)
3637
if err != nil {
37-
return nil, err
38+
if !lexi.IsBadgerVersionError(err) {
39+
return nil, err
40+
}
41+
db, err = lexi.BadgerV1Update(filePath, log, opts)
42+
if err != nil {
43+
log.Warnf("Unable to update old db, creating new one: %v", err)
44+
db, err = badger.Open(opts)
45+
if err != nil {
46+
return nil, err
47+
}
48+
}
3849
}
3950

4051
return &kvDB{db, log}, nil

client/cmd/bisonw-desktop/go.mod

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ require (
1313

1414
require (
1515
filippo.io/edwards25519 v1.0.0 // indirect
16+
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect
1617
github.com/BurntSushi/toml v1.4.0 // indirect
1718
github.com/Microsoft/go-winio v0.6.2 // indirect
1819
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect
@@ -23,6 +24,7 @@ require (
2324
github.com/bisoncraft/neutrino-bch v1.0.1 // indirect
2425
github.com/bisoncraft/op-geth v0.0.0-20250729074358-3cfe4f15e91c // indirect
2526
github.com/bits-and-blooms/bitset v1.20.0 // indirect
27+
github.com/cespare/xxhash v1.1.0 // indirect
2628
github.com/consensys/gnark-crypto v0.18.0 // indirect
2729
github.com/crate-crypto/go-eth-kzg v1.4.0 // indirect
2830
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
@@ -33,7 +35,9 @@ require (
3335
github.com/decred/dcrd/mixing v0.6.1 // indirect
3436
github.com/decred/vspd/client/v4 v4.0.2 // indirect
3537
github.com/decred/vspd/types/v3 v3.0.0 // indirect
38+
github.com/dgraph-io/badger v1.6.2 // indirect
3639
github.com/dgraph-io/badger/v4 v4.9.0 // indirect
40+
github.com/dgraph-io/ristretto v0.0.2 // indirect
3741
github.com/dgraph-io/ristretto/v2 v2.2.0 // indirect
3842
github.com/emicklei/dot v1.6.2 // indirect
3943
github.com/ethereum/c-kzg-4844/v2 v2.1.5 // indirect
@@ -43,6 +47,7 @@ require (
4347
github.com/go-logr/logr v1.4.3 // indirect
4448
github.com/go-logr/stdr v1.2.2 // indirect
4549
github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4 // indirect
50+
github.com/golang/protobuf v1.5.4 // indirect
4651
github.com/google/flatbuffers v25.2.10+incompatible // indirect
4752
github.com/holiman/billy v0.0.0-20250707135307-f2f9b9aae7db // indirect
4853
github.com/klauspost/compress v1.18.0 // indirect
@@ -53,6 +58,7 @@ require (
5358
github.com/naoina/go-stringutil v0.1.0 // indirect
5459
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 // indirect
5560
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect
61+
github.com/pkg/errors v0.9.1 // indirect
5662
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
5763
github.com/stretchr/objx v0.5.2 // indirect
5864
github.com/stretchr/testify v1.10.0 // indirect

client/cmd/bisonw-desktop/go.sum

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek=
4747
filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns=
4848
fyne.io/systray v1.10.1-0.20230403195833-7dc3c09283d6 h1:lHt8dm97Uy9ggtnt9N6XOlsp76wXmRAh3SjReWm1e2Q=
4949
fyne.io/systray v1.10.1-0.20230403195833-7dc3c09283d6/go.mod h1:oM2AQqGJ1AMo4nNqZFYU8xYygSBZkW2hmdJ7n4yjedE=
50+
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M=
51+
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
5052
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
5153
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
5254
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
@@ -62,6 +64,7 @@ github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuN
6264
github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
6365
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
6466
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
67+
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
6568
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
6669
github.com/OpenBazaar/jsonpb v0.0.0-20171123000858-37d32ddf4eef/go.mod h1:55mCznBcN9WQgrtgaAkv+p2LxeW/tQRdidyyE9D0I5k=
6770
github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM=
@@ -187,6 +190,7 @@ github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QH
187190
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
188191
github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
189192
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
193+
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
190194
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
191195
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
192196
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
@@ -333,11 +337,16 @@ github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbz
333337
github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw=
334338
github.com/denis-tingajkin/go-header v0.4.2/go.mod h1:eLRHAVXzE5atsKAnNRDB90WHCFFnBUn4RN0nRcs1LJA=
335339
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=
340+
github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8=
341+
github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE=
336342
github.com/dgraph-io/badger/v4 v4.9.0 h1:tpqWb0NewSrCYqTvywbcXOhQdWcqephkVkbBmaaqHzc=
337343
github.com/dgraph-io/badger/v4 v4.9.0/go.mod h1:5/MEx97uzdPUHR4KtkNt8asfI2T4JiEiQlV7kWUo8c0=
344+
github.com/dgraph-io/ristretto v0.0.2 h1:a5WaUrDa0qm0YrAAS1tUykT5El3kt62KNZZeMxQn3po=
345+
github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
338346
github.com/dgraph-io/ristretto/v2 v2.2.0 h1:bkY3XzJcXoMuELV8F+vS8kzNgicwQFAaGINAEJdWGOM=
339347
github.com/dgraph-io/ristretto/v2 v2.2.0/go.mod h1:RZrm63UmcBAaYWC1DotLYBmTvgkrs0+XhBd7Npn7/zI=
340348
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
349+
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
341350
github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da h1:aIftn67I1fkbMa512G+w+Pxci9hJPB8oMnkcP3iZF38=
342351
github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
343352
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
@@ -730,6 +739,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv
730739
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
731740
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
732741
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
742+
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
733743
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
734744
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
735745
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@@ -1063,6 +1073,8 @@ github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4l
10631073
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
10641074
github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
10651075
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
1076+
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
1077+
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
10661078
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
10671079
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
10681080
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
@@ -1349,6 +1361,7 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w
13491361
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
13501362
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
13511363
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
1364+
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
13521365
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
13531366
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
13541367
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=

dex/lexi/lexi.go

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@ import (
99
"encoding/binary"
1010
"errors"
1111
"fmt"
12+
"os"
13+
"strings"
1214
"sync"
1315
"time"
1416

1517
"decred.org/dcrdex/dex"
18+
v1badger "github.com/dgraph-io/badger"
1619
"github.com/dgraph-io/badger/v4"
1720
)
1821

@@ -46,12 +49,78 @@ type Config struct {
4649
Log dex.Logger
4750
}
4851

52+
// IsBadgerVersionError checks if the error is due to an incompatible badger
53+
// database version (e.g., trying to open a v1 database with v4).
54+
func IsBadgerVersionError(err error) bool {
55+
errStr := err.Error()
56+
return strings.Contains(errStr, "manifest has unsupported version") ||
57+
strings.Contains(errStr, "external magic number doesn't match")
58+
}
59+
60+
// BadgerV1Update attempts to update old badger databases from v1 to v4.
61+
func BadgerV1Update(path string, logger dex.Logger, opts badger.Options) (*badger.DB, error) {
62+
// Copy the old db directory as is.
63+
logger.Warnf("Detected incompatible database version at %s. "+
64+
"Backing up old database and attempting to update.", path)
65+
backupPath := path + ".v1.bak"
66+
if err := os.Rename(path, backupPath); err != nil {
67+
return nil, fmt.Errorf("failed to backup old database: %w", err)
68+
}
69+
logger.Infof("Old database backed up to %s", backupPath)
70+
// Open the old db using v1 badger.
71+
v1opts := v1badger.DefaultOptions(backupPath).WithLogger(&badgerLoggerWrapper{logger})
72+
oldDB, err := v1badger.Open(v1opts)
73+
if err != nil {
74+
return nil, err
75+
}
76+
defer oldDB.Close()
77+
// Back up values to a temporary file.
78+
tempPath := path + ".temp"
79+
tempF, err := os.OpenFile(tempPath, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
80+
if err != nil {
81+
return nil, err
82+
}
83+
defer func() {
84+
tempF.Close()
85+
os.Remove(tempPath)
86+
}()
87+
if _, err := oldDB.Backup(tempF, 0); err != nil {
88+
return nil, err
89+
}
90+
// Open a new database (v4) at the original path and attempt to load.
91+
// Delete if that fails.
92+
db, err := badger.Open(opts)
93+
if err != nil {
94+
return nil, err
95+
}
96+
// TODO: Is 4 a good number?
97+
maxPendingWrites := 4
98+
if err := db.Load(tempF, maxPendingWrites); err != nil {
99+
db.Close()
100+
defer os.Remove(path)
101+
return nil, err
102+
}
103+
// TODO: Compress the old db.
104+
return db, nil
105+
}
106+
49107
// New constructs a new Lexi DB.
50108
func New(cfg *Config) (*DB, error) {
51-
opts := badger.DefaultOptions(cfg.Path).WithLogger(&badgerLoggerWrapper{cfg.Log.SubLogger("BADG")})
109+
logger := cfg.Log.SubLogger("BADG")
110+
opts := badger.DefaultOptions(cfg.Path).WithLogger(&badgerLoggerWrapper{logger})
52111
bdb, err := badger.Open(opts)
53112
if err != nil {
54-
return nil, err
113+
if !IsBadgerVersionError(err) {
114+
return nil, err
115+
}
116+
bdb, err = BadgerV1Update(cfg.Path, logger, opts)
117+
if err != nil {
118+
logger.Warnf("Unable to update old db, creating new one: %v", err)
119+
bdb, err = badger.Open(opts)
120+
if err != nil {
121+
return nil, err
122+
}
123+
}
55124
}
56125
idSeq, err := bdb.GetSequence(prefixedKey(primarySequencePrefix, []byte{0x00}), 1000)
57126
if err != nil {

dex/lexi/log.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package lexi
22

33
import (
44
"decred.org/dcrdex/dex"
5+
v1badger "github.com/dgraph-io/badger"
56
"github.com/dgraph-io/badger/v4"
67
)
78

@@ -13,6 +14,7 @@ type badgerLoggerWrapper struct {
1314
}
1415

1516
var _ badger.Logger = (*badgerLoggerWrapper)(nil)
17+
var _ v1badger.Logger = (*badgerLoggerWrapper)(nil)
1618

1719
// Debugf -> dex.Logger.Tracef
1820
func (log *badgerLoggerWrapper) Debugf(s string, a ...any) {

dex/testing/loadbot/go.mod

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ require (
2222
decred.org/cspp/v2 v2.4.0 // indirect
2323
decred.org/dcrwallet/v5 v5.0.3 // indirect
2424
filippo.io/edwards25519 v1.0.0 // indirect
25+
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect
2526
github.com/BurntSushi/toml v1.4.0 // indirect
2627
github.com/Microsoft/go-winio v0.6.2 // indirect
2728
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect
@@ -48,6 +49,7 @@ require (
4849
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect
4950
github.com/btcsuite/golangcrypto v0.0.0-20150304025918-53f62d9b43e8 // indirect
5051
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect
52+
github.com/cespare/xxhash v1.1.0 // indirect
5153
github.com/cespare/xxhash/v2 v2.3.0 // indirect
5254
github.com/companyzero/sntrup4591761 v0.0.0-20220309191932-9e0f3af2f07a // indirect
5355
github.com/consensys/gnark-crypto v0.18.0 // indirect
@@ -88,7 +90,9 @@ require (
8890
github.com/decred/vspd/client/v4 v4.0.2 // indirect
8991
github.com/decred/vspd/types/v2 v2.1.0 // indirect
9092
github.com/decred/vspd/types/v3 v3.0.0 // indirect
93+
github.com/dgraph-io/badger v1.6.2 // indirect
9194
github.com/dgraph-io/badger/v4 v4.9.0 // indirect
95+
github.com/dgraph-io/ristretto v0.0.2 // indirect
9296
github.com/dgraph-io/ristretto/v2 v2.2.0 // indirect
9397
github.com/dustin/go-humanize v1.0.1 // indirect
9498
github.com/emicklei/dot v1.6.2 // indirect
@@ -106,6 +110,7 @@ require (
106110
github.com/go-logr/stdr v1.2.2 // indirect
107111
github.com/go-ole/go-ole v1.3.0 // indirect
108112
github.com/gofrs/flock v0.12.1 // indirect
113+
github.com/golang/protobuf v1.5.4 // indirect
109114
github.com/golang/snappy v1.0.0 // indirect
110115
github.com/google/flatbuffers v25.2.10+incompatible // indirect
111116
github.com/google/uuid v1.6.0 // indirect
@@ -140,6 +145,7 @@ require (
140145
github.com/naoina/go-stringutil v0.1.0 // indirect
141146
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 // indirect
142147
github.com/olekukonko/tablewriter v0.0.5 // indirect
148+
github.com/pkg/errors v0.9.1 // indirect
143149
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
144150
github.com/rivo/uniseg v0.2.0 // indirect
145151
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect

0 commit comments

Comments
 (0)