diff --git a/cmd/explored/main.go b/cmd/explored/main.go index 440427e..f9c5553 100644 --- a/cmd/explored/main.go +++ b/cmd/explored/main.go @@ -256,7 +256,7 @@ func runRootCmd(ctx context.Context, log *zap.Logger) error { } s := syncer.New(syncerListener, cm, ps, header, syncer.WithLogger(log.Named("syncer")), syncer.WithMaxInboundPeers(256)) defer s.Close() - go s.Run(ctx) + go s.Run() e, err := explorer.NewExplorer(cm, store, cfg.Index.BatchSize, cfg.Scanner, log.Named("explorer")) if err != nil { diff --git a/explorer/events.go b/explorer/events.go index 970cdd1..21ca3bd 100644 --- a/explorer/events.go +++ b/explorer/events.go @@ -122,10 +122,10 @@ func (e *Event) UnmarshalJSON(b []byte) error { // A ChainUpdate is a set of changes to the consensus state. type ChainUpdate interface { - ForEachSiacoinElement(func(sce types.SiacoinElement, created, spent bool)) - ForEachSiafundElement(func(sfe types.SiafundElement, created, spent bool)) - ForEachFileContractElement(func(fce types.FileContractElement, created bool, rev *types.FileContractElement, resolved, valid bool)) - ForEachV2FileContractElement(func(fce types.V2FileContractElement, created bool, rev *types.V2FileContractElement, res types.V2FileContractResolutionType)) + SiacoinElementDiffs() []consensus.SiacoinElementDiff + SiafundElementDiffs() []consensus.SiafundElementDiff + FileContractElementDiffs() []consensus.FileContractElementDiff + V2FileContractElementDiffs() []consensus.V2FileContractElementDiff } // RelevantAddressesV1 returns all the relevant addresses to a V1 transaction. @@ -428,14 +428,16 @@ func AppliedEvents(cs consensus.State, b types.Block, cu ChainUpdate) (events [] // collect all elements sces := make(map[types.SiacoinOutputID]types.SiacoinElement) sfes := make(map[types.SiafundOutputID]types.SiafundElement) - cu.ForEachSiacoinElement(func(sce types.SiacoinElement, _, _ bool) { + for _, diff := range cu.SiacoinElementDiffs() { + sce := diff.SiacoinElement sce.StateElement.MerkleProof = nil sces[types.SiacoinOutputID(sce.ID)] = sce - }) - cu.ForEachSiafundElement(func(sfe types.SiafundElement, _, _ bool) { + } + for _, diff := range cu.SiafundElementDiffs() { + sfe := diff.SiafundElement sfe.StateElement.MerkleProof = nil sfes[types.SiafundOutputID(sfe.ID)] = sfe - }) + } // handle v1 transactions for _, txn := range b.Transactions { @@ -471,7 +473,8 @@ func AppliedEvents(cs consensus.State, b types.Block, cu ChainUpdate) (events [] } // handle contracts - cu.ForEachFileContractElement(func(fce types.FileContractElement, _ bool, rev *types.FileContractElement, resolved, valid bool) { + for _, diff := range cu.FileContractElementDiffs() { + fce, resolved, valid := diff.FileContractElement, diff.Resolved, diff.Valid if !resolved { return } @@ -521,9 +524,10 @@ func AppliedEvents(cs consensus.State, b types.Block, cu ChainUpdate) (events [] }, []types.Address{address}) } } - }) + } - cu.ForEachV2FileContractElement(func(fce types.V2FileContractElement, _ bool, rev *types.V2FileContractElement, res types.V2FileContractResolutionType) { + for _, diff := range cu.V2FileContractElementDiffs() { + fce, res := diff.V2FileContractElement, diff.Resolution if res == nil { return } @@ -561,7 +565,7 @@ func AppliedEvents(cs consensus.State, b types.Block, cu ChainUpdate) (events [] } addV2Resolution(sces[types.FileContractID(fce.ID).V2RenterOutputID()]) addV2Resolution(sces[types.FileContractID(fce.ID).V2HostOutputID()]) - }) + } // handle block rewards for i := range b.MinerPayouts { diff --git a/explorer/update.go b/explorer/update.go index 6c0a9e8..c77ae01 100644 --- a/explorer/update.go +++ b/explorer/update.go @@ -103,13 +103,14 @@ func applyChainUpdate(tx UpdateTx, cau chain.ApplyUpdate) error { // add new siacoin elements to the store var newSiacoinElements, spentSiacoinElements []SiacoinOutput var ephemeralSiacoinElements []SiacoinOutput - cau.ForEachSiacoinElement(func(se types.SiacoinElement, created, spent bool) { + for _, diff := range cau.SiacoinElementDiffs() { + created, spent, se := diff.Created, diff.Spent, diff.SiacoinElement if created && spent { ephemeralSiacoinElements = append(ephemeralSiacoinElements, SiacoinOutput{ SiacoinElement: se, Source: sources[se.ID], }) - return + continue } if spent { @@ -123,14 +124,15 @@ func applyChainUpdate(tx UpdateTx, cau chain.ApplyUpdate) error { Source: sources[se.ID], }) } - }) + } var newSiafundElements, spentSiafundElements []types.SiafundElement var ephemeralSiafundElements []types.SiafundElement - cau.ForEachSiafundElement(func(se types.SiafundElement, created, spent bool) { + for _, diff := range cau.SiafundElementDiffs() { + created, spent, se := diff.Created, diff.Spent, diff.SiafundElement if created && spent { ephemeralSiafundElements = append(ephemeralSiafundElements, se) - return + continue } if spent { @@ -138,17 +140,21 @@ func applyChainUpdate(tx UpdateTx, cau chain.ApplyUpdate) error { } else { newSiafundElements = append(newSiafundElements, se) } - }) + } fceMap := make(map[types.FileContractID]FileContractUpdate) - cau.ForEachFileContractElement(func(fce types.FileContractElement, created bool, rev *types.FileContractElement, resolved, valid bool) { - fceMap[fce.ID] = FileContractUpdate{ - FileContractElement: fce, + for _, diff := range cau.FileContractElementDiffs() { + var rev *types.FileContractElement + if revision, ok := diff.RevisionElement(); ok { + rev = &revision + } + fceMap[diff.FileContractElement.ID] = FileContractUpdate{ + FileContractElement: diff.FileContractElement, Revision: rev, - Resolved: resolved, - Valid: valid, + Resolved: diff.Resolved, + Valid: diff.Valid, } - }) + } for _, txn := range cau.Block.Transactions { txnID := txn.ID() for i := range txn.FileContracts { @@ -173,13 +179,17 @@ func applyChainUpdate(tx UpdateTx, cau chain.ApplyUpdate) error { } v2FceMap := make(map[types.FileContractID]V2FileContractUpdate) - cau.ForEachV2FileContractElement(func(fce types.V2FileContractElement, created bool, rev *types.V2FileContractElement, res types.V2FileContractResolutionType) { - v2FceMap[types.FileContractID(fce.ID)] = V2FileContractUpdate{ - FileContractElement: fce, + for _, diff := range cau.V2FileContractElementDiffs() { + var rev *types.V2FileContractElement + if revision, ok := diff.V2RevisionElement(); ok { + rev = &revision + } + v2FceMap[types.FileContractID(diff.V2FileContractElement.ID)] = V2FileContractUpdate{ + FileContractElement: diff.V2FileContractElement, Revision: rev, - Resolution: res, + Resolution: diff.Resolution, } - }) + } for _, txn := range cau.Block.V2Transactions() { txnID := txn.ID() for i := range txn.FileContracts { @@ -290,12 +300,13 @@ func revertChainUpdate(tx UpdateTx, cru chain.RevertUpdate, revertedIndex types. // add new siacoin elements to the store var newSiacoinElements, spentSiacoinElements []SiacoinOutput var ephemeralSiacoinElements []SiacoinOutput - cru.ForEachSiacoinElement(func(se types.SiacoinElement, created, spent bool) { + for _, diff := range cru.SiacoinElementDiffs() { + created, spent, se := diff.Created, diff.Spent, diff.SiacoinElement if created && spent { ephemeralSiacoinElements = append(ephemeralSiacoinElements, SiacoinOutput{ SiacoinElement: se, }) - return + continue } if spent { @@ -307,14 +318,15 @@ func revertChainUpdate(tx UpdateTx, cru chain.RevertUpdate, revertedIndex types. SiacoinElement: se, }) } - }) + } var newSiafundElements, spentSiafundElements []types.SiafundElement var ephemeralSiafundElements []types.SiafundElement - cru.ForEachSiafundElement(func(se types.SiafundElement, created, spent bool) { + for _, diff := range cru.SiafundElementDiffs() { + created, spent, se := diff.Created, diff.Spent, diff.SiafundElement if created && spent { ephemeralSiafundElements = append(ephemeralSiafundElements, se) - return + continue } if spent { @@ -322,17 +334,21 @@ func revertChainUpdate(tx UpdateTx, cru chain.RevertUpdate, revertedIndex types. } else { spentSiafundElements = append(spentSiafundElements, se) } - }) + } fceMap := make(map[types.FileContractID]FileContractUpdate) - cru.ForEachFileContractElement(func(fce types.FileContractElement, created bool, rev *types.FileContractElement, resolved, valid bool) { - fceMap[fce.ID] = FileContractUpdate{ - FileContractElement: fce, + for _, diff := range cru.FileContractElementDiffs() { + var rev *types.FileContractElement + if revision, ok := diff.RevisionElement(); ok { + rev = &revision + } + fceMap[diff.FileContractElement.ID] = FileContractUpdate{ + FileContractElement: diff.FileContractElement, Revision: rev, - Resolved: resolved, - Valid: valid, + Resolved: diff.Resolved, + Valid: diff.Valid, } - }) + } for _, txn := range cru.Block.Transactions { txnID := txn.ID() for i := range txn.FileContracts { @@ -357,13 +373,17 @@ func revertChainUpdate(tx UpdateTx, cru chain.RevertUpdate, revertedIndex types. } v2FceMap := make(map[types.FileContractID]V2FileContractUpdate) - cru.ForEachV2FileContractElement(func(fce types.V2FileContractElement, created bool, rev *types.V2FileContractElement, res types.V2FileContractResolutionType) { - v2FceMap[types.FileContractID(fce.ID)] = V2FileContractUpdate{ - FileContractElement: fce, + for _, diff := range cru.V2FileContractElementDiffs() { + var rev *types.V2FileContractElement + if revision, ok := diff.V2RevisionElement(); ok { + rev = &revision + } + v2FceMap[types.FileContractID(diff.V2FileContractElement.ID)] = V2FileContractUpdate{ + FileContractElement: diff.V2FileContractElement, Revision: rev, - Resolution: res, + Resolution: diff.Resolution, } - }) + } for _, txn := range cru.Block.V2Transactions() { txnID := txn.ID() for i := range txn.FileContracts { diff --git a/go.mod b/go.mod index 7b822c3..d8b580c 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/google/go-cmp v0.6.0 github.com/ip2location/ip2location-go v8.3.0+incompatible github.com/mattn/go-sqlite3 v1.14.24 - go.sia.tech/core v0.9.1 - go.sia.tech/coreutils v0.10.1 + go.sia.tech/core v0.10.2-0.20250211180922-261f960c1315 + go.sia.tech/coreutils v0.11.1 go.sia.tech/jape v0.12.1 go.uber.org/zap v1.27.0 gopkg.in/yaml.v3 v3.0.1 @@ -18,15 +18,23 @@ require ( ) require ( + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect - github.com/stretchr/testify v1.8.3 // indirect - go.etcd.io/bbolt v1.3.11 // indirect + github.com/onsi/ginkgo/v2 v2.12.0 // indirect + github.com/quic-go/qpack v0.5.1 // indirect + github.com/quic-go/quic-go v0.49.0 // indirect + github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect + go.etcd.io/bbolt v1.4.0 // indirect go.sia.tech/mux v1.3.0 // indirect + go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/tools v0.20.0 // indirect - gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + golang.org/x/tools v0.22.0 // indirect ) diff --git a/go.sum b/go.sum index b8694ce..2e32203 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,18 @@ -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f h1:pDhu5sgp8yJlEF/g6osliIIpF9K4F5jvkULXa4daRDQ= +github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/ip2location/ip2location-go v8.3.0+incompatible h1:QwUE+FlSbo6bjOWZpv2Grb57vJhWYFNPyBj2KCvfWaM= github.com/ip2location/ip2location-go v8.3.0+incompatible/go.mod h1:3JUY1TBjTx1GdA7oRT7Zeqfc0bg3lMMuU5lXmzdpuME= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= @@ -13,43 +23,68 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/onsi/ginkgo/v2 v2.12.0 h1:UIVDowFPwpg6yMUpPjGkYvf06K3RAiJXUhCxEwQVHRI= +github.com/onsi/ginkgo/v2 v2.12.0/go.mod h1:ZNEzXISYlqpb8S36iN71ifqLi3vVD1rVJGvWRCJOUpQ= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= +github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= +github.com/quic-go/quic-go v0.49.0 h1:w5iJHXwHxs1QxyBv1EHKuC50GX5to8mJAxvtnttJp94= +github.com/quic-go/quic-go v0.49.0/go.mod h1:s2wDnmCdooUQBmQfpUSTCYBl1/D4FcqbULMMkASvR6s= +github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 h1:4WFk6u3sOT6pLa1kQ50ZVdm8BQFgJNA117cepZxtLIg= +github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66/go.mod h1:Vp72IJajgeOL6ddqrAhmp7IM9zbTcgkQxD/YdxrVwMw= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= -go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= -go.sia.tech/core v0.9.1 h1:p65iVQP4OnLRvPHBbZDhUR0LFserNIY82M/4de/gNPo= -go.sia.tech/core v0.9.1/go.mod h1:7buI+3k5xO+9PdzBQJlogOAc5h+twDUxEpV6EuXWZ5A= -go.sia.tech/coreutils v0.10.1 h1:qs6JIUhzQGcWYdMoE0KURz8g+Wt+OI65KMmyc4or/DA= -go.sia.tech/coreutils v0.10.1/go.mod h1:99k+BlLKYsKHNdZAr5KqYIhoamPEbwhKZdq4FDV4HtU= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= +go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= +go.sia.tech/core v0.10.1 h1:96lmgO50oKPiQU46H14Ga+6NYo6IB++VQ4DI3QCc6/o= +go.sia.tech/core v0.10.1/go.mod h1:FRg3rOIM8oSvf5wJoAJEgqqbTtKBDNeqL5/bH1lRuDk= +go.sia.tech/core v0.10.2-0.20250211180922-261f960c1315 h1:lWYVzooojpbm5r+6vHziUALL+gvV5k3dIs/rlwd3bMk= +go.sia.tech/core v0.10.2-0.20250211180922-261f960c1315/go.mod h1:FRg3rOIM8oSvf5wJoAJEgqqbTtKBDNeqL5/bH1lRuDk= +go.sia.tech/coreutils v0.11.1 h1:rpR2a5oB/TRScPK9d0nBM5k2jL5/f0oy5ZgVzfyS4oo= +go.sia.tech/coreutils v0.11.1/go.mod h1:vnY0haOx1InIQR0Pc5YAXDe4WnF6po8dv5bNP73CAnE= go.sia.tech/jape v0.12.1 h1:xr+o9V8FO8ScRqbSaqYf9bjj1UJ2eipZuNcI1nYousU= go.sia.tech/jape v0.12.1/go.mod h1:wU+h6Wh5olDjkPXjF0tbZ1GDgoZ6VTi4naFw91yyWC4= go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= go.sia.tech/mux v1.3.0/go.mod h1:I46++RD4beqA3cW9Xm9SwXbezwPqLvHhVs9HLpDtt58= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= +go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= -golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= lukechampine.com/frand v1.5.1 h1:fg0eRtdmGFIxhP5zQJzM1lFDbD6CUfu/f+7WgAZd5/w= diff --git a/persist/sqlite/scan_test.go b/persist/sqlite/scan_test.go index 4dda17a..887ece4 100644 --- a/persist/sqlite/scan_test.go +++ b/persist/sqlite/scan_test.go @@ -46,7 +46,7 @@ func startTestNode(tb testing.TB, n *consensus.Network, genesis types.Block) (*c UniqueID: gateway.GenerateUniqueID(), NetAddress: "localhost:1234", }) - go s.Run(context.Background()) + go s.Run() tb.Cleanup(func() { s.Close() }) ws := ctestutil.NewEphemeralWalletStore()