From b8780fac36ed695adde49094a29516a9643376df Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Tue, 24 Jun 2025 10:57:35 +0200 Subject: [PATCH 01/10] mod+itest: update to latest tapd --- go.mod | 8 ++--- go.sum | 16 ++++----- itest/assets_test.go | 4 +++ subservers/taproot-assets.go | 67 ++---------------------------------- 4 files changed, 18 insertions(+), 77 deletions(-) diff --git a/go.mod b/go.mod index 65f98cb62..7d89ce033 100644 --- a/go.mod +++ b/go.mod @@ -26,14 +26,14 @@ require ( github.com/lightninglabs/lightning-terminal/litrpc v1.0.2 github.com/lightninglabs/lightning-terminal/perms v1.0.1 github.com/lightninglabs/lndclient v0.19.0-12 - github.com/lightninglabs/loop v0.31.2-beta + github.com/lightninglabs/loop v0.31.2-beta.0.20250724051925-36c5d6cee7d3 github.com/lightninglabs/loop/looprpc v1.0.8 github.com/lightninglabs/loop/swapserverrpc v1.0.15 github.com/lightninglabs/pool v0.6.6-beta github.com/lightninglabs/pool/auctioneerrpc v1.1.3 github.com/lightninglabs/pool/poolrpc v1.0.1 github.com/lightninglabs/taproot-assets v0.6.1 - github.com/lightninglabs/taproot-assets/taprpc v1.0.8-0.20250716163904-2ef55ba74036 + github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250725201706-0e736bb0d7b1 github.com/lightningnetwork/lnd v0.19.2-beta github.com/lightningnetwork/lnd/cert v1.2.2 github.com/lightningnetwork/lnd/clock v1.1.1 @@ -248,6 +248,4 @@ replace google.golang.org/protobuf => github.com/lightninglabs/protobuf-go-hex-d // automatically, so we need to add it manually. replace github.com/golang-migrate/migrate/v4 => github.com/lightninglabs/migrate/v4 v4.18.2-9023d66a-fork-pr-2 -// tapd wants v0.19.0-12, but loop can't handle that yet. So we'll just use the -// previous version for now. -replace github.com/lightninglabs/lndclient => github.com/lightninglabs/lndclient v0.19.0-11 +replace github.com/lightninglabs/taproot-assets => github.com/lightninglabs/taproot-assets v0.6.1-0.20250725201706-0e736bb0d7b1 diff --git a/go.sum b/go.sum index 4e5da46b6..68cf90682 100644 --- a/go.sum +++ b/go.sum @@ -1150,10 +1150,10 @@ github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.3 h1:NuDp6Z+QNM github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.3/go.mod h1:bDnEKRN1u13NFBuy/C+bFLhxA5bfd3clT25y76QY0AM= github.com/lightninglabs/lightning-node-connect/mailbox v1.0.1 h1:RWmohykp3n/DTMWY8b18RNTEcLDf+KT/AZHKYdOObkM= github.com/lightninglabs/lightning-node-connect/mailbox v1.0.1/go.mod h1:NYtNexZE9gO1eOeegTxmIW9fqanl7eZ9cOrE9yewSAk= -github.com/lightninglabs/lndclient v0.19.0-11 h1:/WwowlNff19lb7DXzq3c6L4nRMvwBZjbjLOy1/u4a5Y= -github.com/lightninglabs/lndclient v0.19.0-11/go.mod h1:cicoJY1AwZuRVXGD8Knp50TRT7TGBmw1k37uPQsGQiw= -github.com/lightninglabs/loop v0.31.2-beta h1:lm5t5FqDpSfQCxoz/vTvXpylxSgU+gvJJIbfJiKeyUk= -github.com/lightninglabs/loop v0.31.2-beta/go.mod h1:xnPKuZmLusNERwzz15RZ7mpQ8xuSqqh3g8Qw/PRyiRE= +github.com/lightninglabs/lndclient v0.19.0-12 h1:aSIKfnvnHKiyFWppUGHJG5fn8VoF5WG5Lx958ksLmqs= +github.com/lightninglabs/lndclient v0.19.0-12/go.mod h1:cicoJY1AwZuRVXGD8Knp50TRT7TGBmw1k37uPQsGQiw= +github.com/lightninglabs/loop v0.31.2-beta.0.20250724051925-36c5d6cee7d3 h1:N+p1pdmVG9STFZ0PIc+qzJ2einOyNzFy6KEjPmT7HAY= +github.com/lightninglabs/loop v0.31.2-beta.0.20250724051925-36c5d6cee7d3/go.mod h1:7DLIgIyg0Z9uQAjEUr0qNQ3v3IFPCDsJxIttHOxhcvA= github.com/lightninglabs/loop/looprpc v1.0.8 h1:OFmJNLjem6fLuH1YUO+3G6QA1wmjAd0zyhvdHONOBDs= github.com/lightninglabs/loop/looprpc v1.0.8/go.mod h1:c7WykKQZ3PspCMVvv2kr9o4l3bgJBEBVv0SOoBOjPOw= github.com/lightninglabs/loop/swapserverrpc v1.0.15 h1:vEZBF65Lv0T7MPydCRxHSIlEJzHBkZ4I8FtSD6OJK88= @@ -1172,10 +1172,10 @@ github.com/lightninglabs/pool/poolrpc v1.0.1 h1:XbNx28TYwEj/PVsnnF9TnveVCMCYfS1v github.com/lightninglabs/pool/poolrpc v1.0.1/go.mod h1:836icifg/SBnZbiae0v3jeRRzCrT6LWo32SqCS/JiGk= github.com/lightninglabs/protobuf-go-hex-display v1.34.2-hex-display h1:w7FM5LH9Z6CpKxl13mS48idsu6F+cEZf0lkyiV+Dq9g= github.com/lightninglabs/protobuf-go-hex-display v1.34.2-hex-display/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -github.com/lightninglabs/taproot-assets v0.6.1 h1:98XCk7nvAridyE67uct0NDVpyY1evpIdvPQpeNElskM= -github.com/lightninglabs/taproot-assets v0.6.1/go.mod h1:rF+GwuUVuDVUejAHsUCml4Nru9xnl7A4YZQfR4qLMzY= -github.com/lightninglabs/taproot-assets/taprpc v1.0.8-0.20250716163904-2ef55ba74036 h1:ZUQrEmdZa72RieBKI/NiUQJGAnh6R6Pq6FoXh+VCOJQ= -github.com/lightninglabs/taproot-assets/taprpc v1.0.8-0.20250716163904-2ef55ba74036/go.mod h1:vOM2Ap2wYhEZjiJU7bNNg+e5tDxkvRAuyXwf/KQ4tgo= +github.com/lightninglabs/taproot-assets v0.6.1-0.20250725201706-0e736bb0d7b1 h1:lm/PJTGwTPk7kRInRdGiUbaKqpNQlV+9OTXpBUiFb9E= +github.com/lightninglabs/taproot-assets v0.6.1-0.20250725201706-0e736bb0d7b1/go.mod h1:mIgx0p/GkMZeEjEm91vYQsH41YQBAgJl7TP6JcT+wgs= +github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250725201706-0e736bb0d7b1 h1:V9x07euSL3wR9JxPUOhrsAVmC6pg4o3y7N5GsHLVoP0= +github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250725201706-0e736bb0d7b1/go.mod h1:c8gTEcKEUoUPVChgZNwqTL1hss7UWa5FDeObr8WBzQk= github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb h1:yfM05S8DXKhuCBp5qSMZdtSwvJ+GFzl94KbXMNB1JDY= github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb/go.mod h1:c0kvRShutpj3l6B9WtTsNTBUtjSmjZXbJd9ZBRQOSKI= github.com/lightningnetwork/lnd v0.19.2-beta h1:3SKVrKYFY4IJLlrMf7cDzZcBeT+MxjI9Xy6YpY+EEX4= diff --git a/itest/assets_test.go b/itest/assets_test.go index 1fb456dac..ccf2d94da 100644 --- a/itest/assets_test.go +++ b/itest/assets_test.go @@ -27,6 +27,7 @@ import ( "github.com/lightninglabs/taproot-assets/tapfreighter" "github.com/lightninglabs/taproot-assets/taprpc" "github.com/lightninglabs/taproot-assets/taprpc/assetwalletrpc" + "github.com/lightninglabs/taproot-assets/taprpc/authmailboxrpc" "github.com/lightninglabs/taproot-assets/taprpc/mintrpc" "github.com/lightninglabs/taproot-assets/taprpc/rfqrpc" tchrpc "github.com/lightninglabs/taproot-assets/taprpc/tapchannelrpc" @@ -2548,6 +2549,7 @@ type tapClient struct { rfqrpc.RfqClient tchrpc.TaprootAssetChannelsClient universerpc.UniverseClient + authmailboxrpc.MailboxClient } func newTapClient(t *testing.T, node *HarnessNode) *tapClient { @@ -2578,6 +2580,7 @@ func newTapClient(t *testing.T, node *HarnessNode) *tapClient { rfqClient := rfqrpc.NewRfqClient(rawConn) tchClient := tchrpc.NewTaprootAssetChannelsClient(rawConn) universeClient := universerpc.NewUniverseClient(rawConn) + mboxClient := authmailboxrpc.NewMailboxClient(rawConn) return &tapClient{ node: node, @@ -2588,6 +2591,7 @@ func newTapClient(t *testing.T, node *HarnessNode) *tapClient { RfqClient: rfqClient, TaprootAssetChannelsClient: tchClient, UniverseClient: universeClient, + MailboxClient: mboxClient, } } diff --git a/subservers/taproot-assets.go b/subservers/taproot-assets.go index 26f0a8c3a..87cf36955 100644 --- a/subservers/taproot-assets.go +++ b/subservers/taproot-assets.go @@ -12,11 +12,6 @@ import ( "github.com/lightninglabs/taproot-assets/fn" "github.com/lightninglabs/taproot-assets/tapcfg" "github.com/lightninglabs/taproot-assets/taprpc" - "github.com/lightninglabs/taproot-assets/taprpc/assetwalletrpc" - "github.com/lightninglabs/taproot-assets/taprpc/mintrpc" - "github.com/lightninglabs/taproot-assets/taprpc/rfqrpc" - tchrpc "github.com/lightninglabs/taproot-assets/taprpc/tapchannelrpc" - "github.com/lightninglabs/taproot-assets/taprpc/universerpc" "github.com/lightningnetwork/lnd/lnrpc" "google.golang.org/grpc" "gopkg.in/macaroon-bakery.v2/bakery" @@ -57,7 +52,7 @@ func NewTaprootAssetsSubServer(network string, cfg *tapcfg.Config, chainCfg := address.ParamsForChain(network) return &taprootAssetsSubServer{ - Server: tap.NewServer(&chainCfg, nil), + Server: tap.NewServer(&chainCfg), cfg: cfg, remoteCfg: remoteCfg, remote: remote, @@ -126,12 +121,7 @@ func (t *taprootAssetsSubServer) Start(_ lnrpc.LightningClient, func (t *taprootAssetsSubServer) RegisterGrpcService( registrar grpc.ServiceRegistrar) { - taprpc.RegisterTaprootAssetsServer(registrar, t) - mintrpc.RegisterMintServer(registrar, t) - assetwalletrpc.RegisterAssetWalletServer(registrar, t) - rfqrpc.RegisterRfqServer(registrar, t) - tchrpc.RegisterTaprootAssetChannelsServer(registrar, t) - universerpc.RegisterUniverseServer(registrar, t) + t.Server.RegisterGrpcService(registrar) } // RegisterRestService registers the sub-server's REST handlers with the given @@ -142,58 +132,7 @@ func (t *taprootAssetsSubServer) RegisterRestService(ctx context.Context, mux *restProxy.ServeMux, endpoint string, dialOpts []grpc.DialOption) error { - err := taprpc.RegisterTaprootAssetsHandlerFromEndpoint( - ctx, mux, endpoint, dialOpts, - ) - if err != nil { - return err - } - - err = mintrpc.RegisterMintHandlerFromEndpoint( - ctx, mux, endpoint, dialOpts, - ) - if err != nil { - return err - } - - err = assetwalletrpc.RegisterAssetWalletHandlerFromEndpoint( - ctx, mux, endpoint, dialOpts, - ) - if err != nil { - return err - } - - err = rfqrpc.RegisterRfqHandlerFromEndpoint( - ctx, mux, endpoint, dialOpts, - ) - if err != nil { - return err - } - - err = tchrpc.RegisterTaprootAssetChannelsHandlerFromEndpoint( - ctx, mux, endpoint, dialOpts, - ) - if err != nil { - return err - } - - err = rfqrpc.RegisterRfqHandlerFromEndpoint( - ctx, mux, endpoint, dialOpts, - ) - if err != nil { - return err - } - - err = tchrpc.RegisterTaprootAssetChannelsHandlerFromEndpoint( - ctx, mux, endpoint, dialOpts, - ) - if err != nil { - return err - } - - err = universerpc.RegisterUniverseHandlerFromEndpoint( - ctx, mux, endpoint, dialOpts, - ) + err := t.Server.RegisterRestService(ctx, mux, endpoint, dialOpts) if err != nil { return err } From f3aba319a10c446b154116a2cb88012b2205b602 Mon Sep 17 00:00:00 2001 From: ZZiigguurraatt Date: Fri, 18 Jul 2025 14:12:15 -0400 Subject: [PATCH 02/10] dev.Dockerfile: allow forcing lnd/tapd/taprpc/loop repo We can now use the LND_REPO, TAPROOT_ASSETS_REPO, TAPRPC_REPO, and LOOP_RPC build arguments to force a specific repo to be used so that commits referenced by LND_VERSION, TAPROOT_ASSETS_VERSION, TAPRPC_VERSION, and LOOP_VERSION don't have to exist in the default repository. If any of these build arguments are not defined, the build continues using the default repository for that module. NOTE: If these arguments ARE defined then the corresponding `_VERSION` argument MUST also be defined, otherwise the build continues using the default repository defined for that module. --- dev.Dockerfile | 57 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/dev.Dockerfile b/dev.Dockerfile index a67686c86..2ab4253fa 100644 --- a/dev.Dockerfile +++ b/dev.Dockerfile @@ -30,13 +30,35 @@ COPY --from=nodejsbuilder /go/src/github.com/lightninglabs/lightning-terminal /g # queries required to connect to linked containers succeed. ENV GODEBUG netdns=cgo -# Allow forcing a specific lnd, taproot-assets, and taprpc version through a -# build argument. +# Allow forcing a specific lnd, taproot-assets, taprpc, and/or loop repo so that +# commits referenced by LND_VERSION, TAPROOT_ASSETS_VERSION, TAPRPC_VERSION, and +# LOOP_VERSION don't have to exist in the default repository. If any of these +# build arguments are not defined, the build continues using the default +# repository for that module. NOTE: If these arguments ARE defined then the +# corresponding `_VERSION` argument MUST also be defined, otherwise the build +# continues using the default repository defined for that module. +ARG LND_REPO +ARG TAPROOT_ASSETS_REPO +ARG TAPRPC_REPO +ARG LOOP_REPO + +# Allow forcing a specific lnd, taproot-assets, taprpc, and/or loop version +# through a build argument. # Please see https://go.dev/ref/mod#version-queries for the types of # queries that can be used to define a version. +# If any of these build arguments are not defined then build uses the version +# already defined in go.mod and go.sum for that module. +# Note: If the corresponding `_REPO` argument is not defined, `go get` will +# be used along with `go mod tidy`, which sometimes may change the version you +# are trying to use because some other module requires the same requirement +# but of a different version. A trick to overcome this is to also use the +# `_REPO` argument and just put in the default repository for that module and +# that will cause a `go mod edit -replace=` to be used instead which won't have +# this issue. ARG LND_VERSION ARG TAPROOT_ASSETS_VERSION ARG TAPRPC_VERSION +ARG LOOP_VERSION # Need to restate this since running in a new container from above. ARG NO_UI @@ -46,17 +68,42 @@ RUN apk add --no-cache --update alpine-sdk make \ && cd /go/src/github.com/lightninglabs/lightning-terminal \ # If a custom lnd version is supplied, force it now. && if [ -n "$LND_VERSION" ]; then \ - go get -v github.com/lightningnetwork/lnd@$LND_VERSION \ + # If a custom lnd repo is supplied, force it now. + if [ -n "$LND_REPO" ]; then \ + go mod edit -replace=github.com/lightningnetwork/lnd=$LND_REPO@$LND_VERSION; \ + else \ + go get -v github.com/lightningnetwork/lnd@$LND_VERSION; \ + fi \ && go mod tidy; \ fi \ # If a custom taproot-assets version is supplied, force it now. && if [ -n "$TAPROOT_ASSETS_VERSION" ]; then \ - go get -v github.com/lightninglabs/taproot-assets@$TAPROOT_ASSETS_VERSION \ + # If a custom taproot-assets repo is supplied, force it now. + if [ -n "$TAPROOT_ASSETS_REPO" ]; then \ + go mod edit -replace=github.com/lightninglabs/taproot-assets=$TAPROOT_ASSETS_REPO@$TAPROOT_ASSETS_VERSION; \ + else \ + go get -v github.com/lightninglabs/taproot-assets@$TAPROOT_ASSETS_VERSION; \ + fi \ && go mod tidy; \ fi \ # If a custom taprpc version is supplied, force it now. && if [ -n "$TAPRPC_VERSION" ]; then \ - go get -v github.com/lightninglabs/taproot-assets/taprpc@$TAPRPC_VERSION \ + # If a custom taprpc repo is supplied, force it now. + if [ -n "$TAPRPC_REPO" ]; then \ + go mod edit -replace=github.com/lightninglabs/taproot-assets/taprpc=$TAPRPC_REPO@$TAPRPC_VERSION; \ + else \ + go get -v github.com/lightninglabs/taproot-assets/taprpc@$TAPRPC_VERSION; \ + fi \ + && go mod tidy; \ + fi \ + # If a custom loop version is supplied, force it now. + && if [ -n "$LOOP_VERSION" ]; then \ + # If a custom loop repo is supplied, force it now. + if [ -n "$LOOP_REPO" ]; then \ + go mod edit -replace=github.com/lightninglabs/loop=$LOOP_REPO@$LOOP_VERSION; \ + else \ + go get -v github.com/lightninglabs/loop@$LOOP_VERSION; \ + fi \ && go mod tidy; \ fi \ && if [ "$NO_UI" -eq "1" ]; then \ From 541dfc63942f3b6734b602fb4e45619a081780b1 Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Tue, 22 Jul 2025 15:09:24 +0200 Subject: [PATCH 03/10] build: bump tapd, loop --- go.mod | 10 ++++------ go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 7d89ce033..632ea6c01 100644 --- a/go.mod +++ b/go.mod @@ -26,18 +26,18 @@ require ( github.com/lightninglabs/lightning-terminal/litrpc v1.0.2 github.com/lightninglabs/lightning-terminal/perms v1.0.1 github.com/lightninglabs/lndclient v0.19.0-12 - github.com/lightninglabs/loop v0.31.2-beta.0.20250724051925-36c5d6cee7d3 + github.com/lightninglabs/loop v0.31.2-beta.0.20250730111713-3b0f6e84dc14 github.com/lightninglabs/loop/looprpc v1.0.8 github.com/lightninglabs/loop/swapserverrpc v1.0.15 github.com/lightninglabs/pool v0.6.6-beta github.com/lightninglabs/pool/auctioneerrpc v1.1.3 github.com/lightninglabs/pool/poolrpc v1.0.1 - github.com/lightninglabs/taproot-assets v0.6.1 - github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250725201706-0e736bb0d7b1 + github.com/lightninglabs/taproot-assets v0.6.1-0.20250729190616-3f323918a96e + github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250729190616-3f323918a96e github.com/lightningnetwork/lnd v0.19.2-beta github.com/lightningnetwork/lnd/cert v1.2.2 github.com/lightningnetwork/lnd/clock v1.1.1 - github.com/lightningnetwork/lnd/fn v1.2.3 + github.com/lightningnetwork/lnd/fn v1.2.5 github.com/lightningnetwork/lnd/fn/v2 v2.0.8 github.com/lightningnetwork/lnd/kvdb v1.4.16 github.com/lightningnetwork/lnd/sqldb v1.0.11-0.20250623231731-45c15646c68b @@ -247,5 +247,3 @@ replace google.golang.org/protobuf => github.com/lightninglabs/protobuf-go-hex-d // it is a replace in the tapd repository, it doesn't get propagated here // automatically, so we need to add it manually. replace github.com/golang-migrate/migrate/v4 => github.com/lightninglabs/migrate/v4 v4.18.2-9023d66a-fork-pr-2 - -replace github.com/lightninglabs/taproot-assets => github.com/lightninglabs/taproot-assets v0.6.1-0.20250725201706-0e736bb0d7b1 diff --git a/go.sum b/go.sum index 68cf90682..b66c41851 100644 --- a/go.sum +++ b/go.sum @@ -1152,8 +1152,8 @@ github.com/lightninglabs/lightning-node-connect/mailbox v1.0.1 h1:RWmohykp3n/DTM github.com/lightninglabs/lightning-node-connect/mailbox v1.0.1/go.mod h1:NYtNexZE9gO1eOeegTxmIW9fqanl7eZ9cOrE9yewSAk= github.com/lightninglabs/lndclient v0.19.0-12 h1:aSIKfnvnHKiyFWppUGHJG5fn8VoF5WG5Lx958ksLmqs= github.com/lightninglabs/lndclient v0.19.0-12/go.mod h1:cicoJY1AwZuRVXGD8Knp50TRT7TGBmw1k37uPQsGQiw= -github.com/lightninglabs/loop v0.31.2-beta.0.20250724051925-36c5d6cee7d3 h1:N+p1pdmVG9STFZ0PIc+qzJ2einOyNzFy6KEjPmT7HAY= -github.com/lightninglabs/loop v0.31.2-beta.0.20250724051925-36c5d6cee7d3/go.mod h1:7DLIgIyg0Z9uQAjEUr0qNQ3v3IFPCDsJxIttHOxhcvA= +github.com/lightninglabs/loop v0.31.2-beta.0.20250730111713-3b0f6e84dc14 h1:PA/bTHYZ/leIoky3mFgbD4h9FV1lamzS+bw45GLd4l8= +github.com/lightninglabs/loop v0.31.2-beta.0.20250730111713-3b0f6e84dc14/go.mod h1:ukAfrXOf5OqpJORSYLjsyFzOGgIASyC2Qbstsl0ZvWw= github.com/lightninglabs/loop/looprpc v1.0.8 h1:OFmJNLjem6fLuH1YUO+3G6QA1wmjAd0zyhvdHONOBDs= github.com/lightninglabs/loop/looprpc v1.0.8/go.mod h1:c7WykKQZ3PspCMVvv2kr9o4l3bgJBEBVv0SOoBOjPOw= github.com/lightninglabs/loop/swapserverrpc v1.0.15 h1:vEZBF65Lv0T7MPydCRxHSIlEJzHBkZ4I8FtSD6OJK88= @@ -1172,10 +1172,10 @@ github.com/lightninglabs/pool/poolrpc v1.0.1 h1:XbNx28TYwEj/PVsnnF9TnveVCMCYfS1v github.com/lightninglabs/pool/poolrpc v1.0.1/go.mod h1:836icifg/SBnZbiae0v3jeRRzCrT6LWo32SqCS/JiGk= github.com/lightninglabs/protobuf-go-hex-display v1.34.2-hex-display h1:w7FM5LH9Z6CpKxl13mS48idsu6F+cEZf0lkyiV+Dq9g= github.com/lightninglabs/protobuf-go-hex-display v1.34.2-hex-display/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -github.com/lightninglabs/taproot-assets v0.6.1-0.20250725201706-0e736bb0d7b1 h1:lm/PJTGwTPk7kRInRdGiUbaKqpNQlV+9OTXpBUiFb9E= -github.com/lightninglabs/taproot-assets v0.6.1-0.20250725201706-0e736bb0d7b1/go.mod h1:mIgx0p/GkMZeEjEm91vYQsH41YQBAgJl7TP6JcT+wgs= -github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250725201706-0e736bb0d7b1 h1:V9x07euSL3wR9JxPUOhrsAVmC6pg4o3y7N5GsHLVoP0= -github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250725201706-0e736bb0d7b1/go.mod h1:c8gTEcKEUoUPVChgZNwqTL1hss7UWa5FDeObr8WBzQk= +github.com/lightninglabs/taproot-assets v0.6.1-0.20250729190616-3f323918a96e h1:wlaM8dTlpCQ0uNj0TBskBDeNTTDessxiXiakYDB4RFo= +github.com/lightninglabs/taproot-assets v0.6.1-0.20250729190616-3f323918a96e/go.mod h1:mIgx0p/GkMZeEjEm91vYQsH41YQBAgJl7TP6JcT+wgs= +github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250729190616-3f323918a96e h1:MnXspinwkd6VhV8G9I+TdSak05UitfYyNBCQhTIIr0g= +github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250729190616-3f323918a96e/go.mod h1:c8gTEcKEUoUPVChgZNwqTL1hss7UWa5FDeObr8WBzQk= github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb h1:yfM05S8DXKhuCBp5qSMZdtSwvJ+GFzl94KbXMNB1JDY= github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb/go.mod h1:c0kvRShutpj3l6B9WtTsNTBUtjSmjZXbJd9ZBRQOSKI= github.com/lightningnetwork/lnd v0.19.2-beta h1:3SKVrKYFY4IJLlrMf7cDzZcBeT+MxjI9Xy6YpY+EEX4= @@ -1184,8 +1184,8 @@ github.com/lightningnetwork/lnd/cert v1.2.2 h1:71YK6hogeJtxSxw2teq3eGeuy4rHGKcFf github.com/lightningnetwork/lnd/cert v1.2.2/go.mod h1:jQmFn/Ez4zhDgq2hnYSw8r35bqGVxViXhX6Cd7HXM6U= github.com/lightningnetwork/lnd/clock v1.1.1 h1:OfR3/zcJd2RhH0RU+zX/77c0ZiOnIMsDIBjgjWdZgA0= github.com/lightningnetwork/lnd/clock v1.1.1/go.mod h1:mGnAhPyjYZQJmebS7aevElXKTFDuO+uNFFfMXK1W8xQ= -github.com/lightningnetwork/lnd/fn v1.2.3 h1:Q1OrgNSgQynVheBNa16CsKVov1JI5N2AR6G07x9Mles= -github.com/lightningnetwork/lnd/fn v1.2.3/go.mod h1:SyFohpVrARPKH3XVAJZlXdVe+IwMYc4OMAvrDY32kw0= +github.com/lightningnetwork/lnd/fn v1.2.5 h1:pGMz0BDUxrhvOtShD4FIysdVy+ulfFAnFvTKjZO5Pp8= +github.com/lightningnetwork/lnd/fn v1.2.5/go.mod h1:SyFohpVrARPKH3XVAJZlXdVe+IwMYc4OMAvrDY32kw0= github.com/lightningnetwork/lnd/fn/v2 v2.0.8 h1:r2SLz7gZYQPVc3IZhU82M66guz3Zk2oY+Rlj9QN5S3g= github.com/lightningnetwork/lnd/fn/v2 v2.0.8/go.mod h1:TOzwrhjB/Azw1V7aa8t21ufcQmdsQOQMDtxVOQWNl8s= github.com/lightningnetwork/lnd/healthcheck v1.2.6 h1:1sWhqr93GdkWy4+6U7JxBfcyZIE78MhIHTJZfPx7qqI= From 83d0a65d44bd2e492870901f8d2aca8503659291 Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Mon, 23 Jun 2025 14:50:45 +0200 Subject: [PATCH 04/10] itest: allow setting empty peer pubkey on tapd SendPayment --- itest/assets_test.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/itest/assets_test.go b/itest/assets_test.go index ccf2d94da..b1a74fa48 100644 --- a/itest/assets_test.go +++ b/itest/assets_test.go @@ -1687,14 +1687,18 @@ func payInvoiceWithAssets(t *testing.T, payer, rfqPeer *HarnessNode, sendReq.MaxShardSizeMsat = 80_000_000 } - var rfqBytes []byte + var rfqBytes, peerPubKey []byte cfg.rfq.WhenSome(func(i rfqmsg.ID) { rfqBytes = make([]byte, len(i[:])) copy(rfqBytes, i[:]) }) + if rfqPeer != nil { + peerPubKey = rfqPeer.PubKey[:] + } + request := &tchrpc.SendPaymentRequest{ - PeerPubkey: rfqPeer.PubKey[:], + PeerPubkey: peerPubKey, PaymentRequest: sendReq, RfqId: rfqBytes, AllowOverpay: cfg.allowOverpay, @@ -1733,9 +1737,6 @@ func payInvoiceWithAssets(t *testing.T, payer, rfqPeer *HarnessNode, acceptedQuote := quoteMsg.GetAcceptedSellOrder() require.NotNil(t, acceptedQuote) - peerPubKey := acceptedQuote.Peer - require.Equal(t, peerPubKey, rfqPeer.PubKeyStr) - rpcRate := acceptedQuote.BidAssetRate rate, err := rpcutils.UnmarshalRfqFixedPoint(rpcRate) require.NoError(t, err) From 7aff11dc8e699c0390161fa66e933ee815c7b6fc Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Mon, 23 Jun 2025 16:05:04 +0200 Subject: [PATCH 05/10] itest: enhance multi-rfq itest with sending --- itest/assets_test.go | 43 +++++-------- itest/litd_accounts_test.go | 46 ++++++++++++-- itest/litd_custom_channels_test.go | 97 ++++++++++++++++++++++++++---- itest/litd_test_list_on_test.go | 2 +- 4 files changed, 141 insertions(+), 47 deletions(-) diff --git a/itest/assets_test.go b/itest/assets_test.go index b1a74fa48..e84be14dd 100644 --- a/itest/assets_test.go +++ b/itest/assets_test.go @@ -1355,7 +1355,7 @@ func sendAssetKeySendPayment(t *testing.T, src, dst *HarnessNode, amt uint64, return } - result, err := getAssetPaymentResult(stream, false) + result, _, err := getAssetPaymentResult(t, stream, false) require.NoError(t, err) if result.Status == lnrpc.Payment_FAILED { t.Logf("Failure reason: %v", result.FailureReason) @@ -1719,7 +1719,13 @@ func payInvoiceWithAssets(t *testing.T, payer, rfqPeer *HarnessNode, // was established, no network or auth error), we expect the error to be // returned on the first read on the stream. if cfg.errSubStr != "" { - _, err := stream.Recv() + msg, err := stream.Recv() + + // On errors we still get an empty set of RFQs as a response. + if msg.GetAcceptedSellOrders() != nil { + _, err = stream.Recv() + } + require.ErrorContains(t, err, cfg.errSubStr) return 0, rfqmath.BigIntFixedPoint{} @@ -1729,39 +1735,18 @@ func payInvoiceWithAssets(t *testing.T, payer, rfqPeer *HarnessNode, numUnits uint64 rateVal rfqmath.FixedPoint[rfqmath.BigInt] ) - if cfg.rfq.IsNone() { - // We want to receive the accepted quote message first, so we - // know how many assets we're going to pay. - quoteMsg, err := stream.Recv() - require.NoError(t, err) - acceptedQuote := quoteMsg.GetAcceptedSellOrder() - require.NotNil(t, acceptedQuote) - - rpcRate := acceptedQuote.BidAssetRate - rate, err := rpcutils.UnmarshalRfqFixedPoint(rpcRate) - require.NoError(t, err) - rateVal = *rate - - t.Logf("Got quote for %v asset units per BTC", rate) - - amountMsat := lnwire.MilliSatoshi(decodedInvoice.NumMsat) - milliSatsFP := rfqmath.MilliSatoshiToUnits(amountMsat, *rate) - numUnits = milliSatsFP.ScaleTo(0).ToUint64() - msatPerUnit := float64(decodedInvoice.NumMsat) / - float64(numUnits) - t.Logf("Got quote for %v asset units at %3f msat/unit from "+ - "peer %s with SCID %d", numUnits, msatPerUnit, - peerPubKey, acceptedQuote.Scid) - } - - result, err := getAssetPaymentResult( - stream, cfg.payStatus == lnrpc.Payment_IN_FLIGHT, + result, rateVal, err := getAssetPaymentResult( + t, stream, cfg.payStatus == lnrpc.Payment_IN_FLIGHT, ) require.NoError(t, err) require.Equal(t, cfg.payStatus, result.Status) require.Equal(t, cfg.failureReason, result.FailureReason) + amountMsat := lnwire.MilliSatoshi(decodedInvoice.NumMsat) + milliSatsFP := rfqmath.MilliSatoshiToUnits(amountMsat, rateVal) + numUnits = milliSatsFP.ScaleTo(0).ToUint64() + return numUnits, rateVal } diff --git a/itest/litd_accounts_test.go b/itest/litd_accounts_test.go index 918f2e9a1..47e02a36d 100644 --- a/itest/litd_accounts_test.go +++ b/itest/litd_accounts_test.go @@ -10,6 +10,8 @@ import ( "github.com/btcsuite/btcd/btcutil" "github.com/lightninglabs/lightning-terminal/litrpc" + "github.com/lightninglabs/taproot-assets/rfqmath" + "github.com/lightninglabs/taproot-assets/rpcutils" "github.com/lightninglabs/taproot-assets/taprpc/tapchannelrpc" "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/lnrpc/routerrpc" @@ -443,9 +445,10 @@ func getPaymentResult(stream routerrpc.Router_SendPaymentV2Client, } } -func getAssetPaymentResult( +func getAssetPaymentResult(t *testing.T, s tapchannelrpc.TaprootAssetChannels_SendPaymentClient, - isHodl bool) (*lnrpc.Payment, error) { + isHodl bool) (*lnrpc.Payment, rfqmath.FixedPoint[rfqmath.BigInt], + error) { // No idea why it makes a difference whether we wait before calling // s.Recv() or not, but it does. Without the sleep, the test will fail @@ -453,22 +456,53 @@ func getAssetPaymentResult( // Probably something weird within lnd itself. time.Sleep(time.Second) + var rateVal rfqmath.FixedPoint[rfqmath.BigInt] + for { msg, err := s.Recv() if err != nil { - return nil, err + return nil, rateVal, err } // Ignore RFQ quote acceptance messages read from the send // payment stream, as they are not relevant. quote := msg.GetAcceptedSellOrder() if quote != nil { + rpcRate := quote.BidAssetRate + rate, err := rpcutils.UnmarshalRfqFixedPoint(rpcRate) + require.NoError(t, err) + + rateVal = *rate + + t.Logf("Got quote for %v asset units per BTC from "+ + "peer %v", rate, quote.Peer) + continue + } + + // Ignore the new RFQ array message from the stream, it is also + // not relevant. + quotes := msg.GetAcceptedSellOrders() + if quotes != nil { + for _, quote := range quotes.AcceptedSellOrders { + rpcRate := quote.BidAssetRate + rate, err := rpcutils.UnmarshalRfqFixedPoint( + rpcRate, + ) + require.NoError(t, err) + + rateVal = *rate + + t.Logf("Got quote for %v asset units per BTC "+ + "from peer %v", rate, quote.Peer) + } + continue } payment := msg.GetPaymentResult() if payment == nil { - return nil, fmt.Errorf("unexpected message: %v", msg) + return nil, rateVal, + fmt.Errorf("unexpected message: %v", msg) } // If this is a hodl payment, then we'll return the first @@ -476,10 +510,10 @@ func getAssetPaymentResult( // clears to we can observe the other payment states. switch { case isHodl: - return payment, nil + return payment, rateVal, nil case payment.Status != lnrpc.Payment_IN_FLIGHT: - return payment, nil + return payment, rateVal, nil } } } diff --git a/itest/litd_custom_channels_test.go b/itest/litd_custom_channels_test.go index 7a23314fb..4d70087c8 100644 --- a/itest/litd_custom_channels_test.go +++ b/itest/litd_custom_channels_test.go @@ -2613,9 +2613,9 @@ func testCustomChannelsLiquidityEdgeCasesCore(ctx context.Context, payInvoiceWithAssets( t.t, charlie, dave, btcInvoiceResp.PaymentRequest, assetID, - withFeeLimit(2_000), withPayErrSubStr( - "rejecting payment of 20000 mSAT", - ), withGroupKey(groupID), + withFeeLimit(2_000), withGroupKey(groupID), withPayErrSubStr( + "failed to acquire any quotes", + ), ) // When we override the uneconomical payment, it should succeed. @@ -2640,7 +2640,7 @@ func testCustomChannelsLiquidityEdgeCasesCore(ctx context.Context, payInvoiceWithAssets( t.t, charlie, dave, btcInvoiceResp.PaymentRequest, assetID, withFeeLimit(1_000), withAllowOverpay(), withPayErrSubStr( - "rejecting payment of 2000 mSAT", + "failed to acquire any quotes", ), withGroupKey(groupID), ) @@ -2971,10 +2971,11 @@ func testCustomChannelsLiquidityEdgeCasesGroup(ctx context.Context, testCustomChannelsLiquidityEdgeCasesCore(ctx, net, t, true) } -// testCustomChannelsMultiRFQReceive tests that a node creating an invoice with -// multiple RFQ quotes can actually guide the payer into using multiple private -// taproot asset channels to pay the invoice. -func testCustomChannelsMultiRFQReceive(ctx context.Context, net *NetworkHarness, +// testCustomChannelsMultiRFQ tests that sending and receiving payments works +// when using the multi-rfq features of tapd. This means that liquidity across +// multiple channels and peers can be used to send out a payment, or receive to +// an invoice. +func testCustomChannelsMultiRFQ(ctx context.Context, net *NetworkHarness, t *harnessTest) { lndArgs := slices.Clone(lndArgsTemplate) @@ -3068,7 +3069,6 @@ func testCustomChannelsMultiRFQReceive(ctx context.Context, net *NetworkHarness, t.t, charlie, &lnrpc.AddInvoiceResponse{ PaymentRequest: hodlInv.payReq, }, - withGroupKey(groupID), withFailure(lnrpc.Payment_IN_FLIGHT, failureNone), ) @@ -3100,13 +3100,88 @@ func testCustomChannelsMultiRFQReceive(ctx context.Context, net *NetworkHarness, // Now let's create a normal invoice that will be settled once all the // HTLCs have been received. This is only possible because the payer // uses multiple bolt11 hop hints to reach the destination. - invoiceResp := createAssetInvoice(t.t, nil, fabia, 15_000, assetID) + invoiceResp := createAssetInvoice( + t.t, nil, fabia, 15_000, nil, withInvGroupKey(groupID), + ) payInvoiceWithSatoshi( - t.t, charlie, invoiceResp, withGroupKey(groupID), + t.t, charlie, invoiceResp, ) logBalance(t.t, nodes, assetID, "after multi-rfq receive") + + // Now we'll test that sending with multiple rfq quotes works. + + // Let's start by providing some liquidity to Charlie's peers, in order + // for them to be able to push some amount if Fabia picks them as part + // of the route. + sendKeySendPayment(t.t, charlie, erin, 800_000) + sendKeySendPayment(t.t, charlie, dave, 800_000) + sendKeySendPayment(t.t, charlie, yara, 800_000) + + // Let's ask for the rough equivalent of ~15k assets. Fabia, who's going + // to pay the invoice, only has parts of assets that are less than 10k + // in channels with one of the 3 intermediate peers. The only way to + // pay this invoice is by splitting the payment across multiple peers by + // using multiple RFQ quotes. + invAmt := int64(15_000 * 17) + + iResp, err := charlie.AddHoldInvoice( + ctx, &invoicesrpc.AddHoldInvoiceRequest{ + Memo: "", + Value: invAmt, + Hash: payHash[:], + }, + ) + require.NoError(t.t, err) + + payReq := iResp.PaymentRequest + + payInvoiceWithAssets( + t.t, fabia, nil, payReq, assetID, + withFailure(lnrpc.Payment_IN_FLIGHT, failureNone), + ) + + assertMinNumHtlcs(t.t, charlie, 2) + assertMinNumHtlcs(t.t, fabia, 2) + + logBalance(t.t, nodes, assetID, "multi-rfq send in-flight") + + _, err = charlie.SettleInvoice(ctx, &invoicesrpc.SettleInvoiceMsg{ + Preimage: hodlInv.preimage[:], + }) + require.NoError(t.t, err) + + assertNumHtlcs(t.t, charlie, 0) + assertNumHtlcs(t.t, fabia, 0) + + logBalance(t.t, nodes, assetID, "after multi-rfq send") + + // Let's make another round-trip involving multi-rfq functionality. + // Let's have Fabia receive another large payment and send it back + // again, this time with a greater amount. + invoiceResp = createAssetInvoice(t.t, nil, fabia, 25_000, assetID) + + payInvoiceWithSatoshi( + t.t, charlie, invoiceResp, + ) + + logBalance(t.t, nodes, assetID, "after multi-rfq receive (2nd)") + + // Let's bump up the invoice amount a bit, to roughly ~22k assets. + invAmt = 22_000 * 17 + inv, err := charlie.AddInvoice(ctx, &lnrpc.Invoice{ + Value: invAmt, + }) + require.NoError(t.t, err) + + payReq = inv.PaymentRequest + + payInvoiceWithAssets( + t.t, fabia, nil, payReq, nil, withGroupKey(groupID), + ) + + logBalance(t.t, nodes, assetID, "after multi-rfq send (2nd)") } // testCustomChannelsStrictForwarding is a test that tests the strict forwarding diff --git a/itest/litd_test_list_on_test.go b/itest/litd_test_list_on_test.go index 36685b0ab..793d4e6b1 100644 --- a/itest/litd_test_list_on_test.go +++ b/itest/litd_test_list_on_test.go @@ -130,7 +130,7 @@ var allTestCases = []*testCase{ }, { name: "custom channels multi rfq", - test: testCustomChannelsMultiRFQReceive, + test: testCustomChannelsMultiRFQ, noAliceBob: true, }, { From 41a1dc4d3504311c6da3dffa3e86f6771cd7790e Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Mon, 30 Jun 2025 13:24:11 +0200 Subject: [PATCH 06/10] make+itest: pin multi-rfq Yara node to v0.15.0-alpha --- Makefile | 2 +- itest/litd_test_list_on_test.go | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 31ee0b937..1df75054c 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ GO_VERSION = 1.23.9 # installed before running the integration tests which include backward # compatibility tests. The list of versions must be in sync with any version # used in the backwardCompat map in itest/litd_test_list_on_test.go. -LITD_COMPAT_VERSIONS = v0.14.1-alpha +LITD_COMPAT_VERSIONS = v0.14.1-alpha v0.15.0-alpha LOOP_COMMIT := $(shell cat go.mod | \ grep $(LOOP_PKG) | \ diff --git a/itest/litd_test_list_on_test.go b/itest/litd_test_list_on_test.go index 793d4e6b1..9d5e325ec 100644 --- a/itest/litd_test_list_on_test.go +++ b/itest/litd_test_list_on_test.go @@ -132,6 +132,9 @@ var allTestCases = []*testCase{ name: "custom channels multi rfq", test: testCustomChannelsMultiRFQ, noAliceBob: true, + backwardCompat: map[string]string{ + "Yara": "v0.15.0-alpha", + }, }, { name: "custom channels multi channel pathfinding", From 5cb02051cc03b2c41a4cc6a93029fb22667770a7 Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Fri, 4 Jul 2025 12:51:08 +0200 Subject: [PATCH 07/10] itest: add George node to multi-rfq topology --- itest/assets_test.go | 90 ++++++++++++++++++++++++++---- itest/litd_custom_channels_test.go | 29 +++++++++- 2 files changed, 106 insertions(+), 13 deletions(-) diff --git a/itest/assets_test.go b/itest/assets_test.go index e84be14dd..e6edeb366 100644 --- a/itest/assets_test.go +++ b/itest/assets_test.go @@ -77,25 +77,32 @@ type itestNode struct { // multiRfqNodes contains all the itest nodes that are required to set up the // multi RFQ network topology. type multiRfqNodes struct { - charlie, dave, erin, fabia, yara itestNode - universeTap *tapClient + charlie, dave, erin, fabia, yara, george itestNode + universeTap *tapClient } // createTestMultiRFQAssetNetwork creates a lightning network topology which // consists of both bitcoin and asset channels. It focuses on the property of // having multiple channels available on both the sender and receiver side. +// The George node is using a way different oracle that provides asset rates +// that fall outside of the configured tolerance bounds, leading to RFQ +// negotiation failures. // // The topology we are going for looks like the following: // -// /---[sats]--> Erin --[assets]--\ -// / \ -// / \ +// /---[sats]--> Erin --[assets]--\ +// / \ +// / \ +// / \ // -// Charlie -----[sats]--> Dave --[assets]---->Fabia +// Charlie -----[sats]--> Dave --[assets]--> Fabia // -// \ / -// \ / -// \---[sats]--> Yara --[assets]--/ +// \ / / +// \ / / +// \---[sats]--> Yara --[assets]-----/ / +// \ / +// \ / +// \--[sats]-> George --[assets]-/ func createTestMultiRFQAssetNetwork(t *harnessTest, net *NetworkHarness, nodes multiRfqNodes, mintedAsset *taprpc.Asset, assetSendAmount, fundingAmount uint64, pushSat int64) (*lnrpc.ChannelPoint, @@ -106,6 +113,7 @@ func createTestMultiRFQAssetNetwork(t *harnessTest, net *NetworkHarness, erin, erinTap := nodes.erin.Lnd, nodes.erin.Tapd _, fabiaTap := nodes.fabia.Lnd, nodes.fabia.Tapd yara, yaraTap := nodes.yara.Lnd, nodes.yara.Tapd + george, georgeTap := nodes.george.Lnd, nodes.george.Tapd universeTap := nodes.universeTap // Let's open the normal sats channels between Charlie and the routing @@ -131,6 +139,13 @@ func createTestMultiRFQAssetNetwork(t *harnessTest, net *NetworkHarness, }, ) + _ = openChannelAndAssert( + t, net, charlie, george, lntest.OpenChannelParams{ + Amt: 10_000_000, + SatPerVByte: 5, + }, + ) + ctxb := context.Background() assetID := mintedAsset.AssetGenesis.AssetId var groupKey []byte @@ -225,6 +240,34 @@ func createTestMultiRFQAssetNetwork(t *harnessTest, net *NetworkHarness, ) itest.AssertNonInteractiveRecvComplete(t.t, yaraTap, 1) + // We need to send some assets to George, so he can fund an asset + // channel with Fabia. + georgeAddr, err := georgeTap.NewAddr(ctxb, &taprpc.NewAddrRequest{ + Amt: assetSendAmount, + AssetId: assetID, + ProofCourierAddr: fmt.Sprintf( + "%s://%s", proof.UniverseRpcCourierType, + charlieTap.node.Cfg.LitAddr(), + ), + }) + require.NoError(t.t, err) + + t.Logf("Sending %v asset units to George...", assetSendAmount) + + // Send the assets to George. + itest.AssertAddrCreated(t.t, georgeTap, mintedAsset, georgeAddr) + sendResp, err = charlieTap.SendAsset(ctxb, &taprpc.SendAssetRequest{ + TapAddrs: []string{georgeAddr.Encoded}, + }) + require.NoError(t.t, err) + itest.ConfirmAndAssertOutboundTransfer( + t.t, t.lndHarness.Miner.Client, charlieTap, sendResp, assetID, + []uint64{ + mintedAsset.Amount - 4*assetSendAmount, assetSendAmount, + }, 3, 4, + ) + itest.AssertNonInteractiveRecvComplete(t.t, georgeTap, 1) + // We fund the Dave->Fabia channel. fundRespDF, err := daveTap.FundChannel( ctxb, &tchrpc.FundChannelRequest{ @@ -264,6 +307,19 @@ func createTestMultiRFQAssetNetwork(t *harnessTest, net *NetworkHarness, require.NoError(t.t, err) t.Logf("Funded channel between Yara and Fabia: %v", fundRespYF) + // We fund the George->Fabia channel. + fundRespGF, err := georgeTap.FundChannel( + ctxb, &tchrpc.FundChannelRequest{ + AssetAmount: fundingAmount, + AssetId: assetID, + PeerPubkey: fabiaTap.node.PubKey[:], + FeeRateSatPerVbyte: 5, + PushSat: pushSat, + }, + ) + require.NoError(t.t, err) + t.Logf("Funded channel between George and Fabia: %v", fundRespGF) + // Make sure the pending channel shows up in the list and has the // custom records set as JSON. assertPendingChannels( @@ -275,17 +331,21 @@ func createTestMultiRFQAssetNetwork(t *harnessTest, net *NetworkHarness, assertPendingChannels( t.t, yaraTap.node, mintedAsset, 1, fundingAmount, 0, ) + assertPendingChannels( + t.t, georgeTap.node, mintedAsset, 1, fundingAmount, 0, + ) // Now that we've looked at the pending channels, let's actually confirm // all three of them. - mineBlocks(t, net, 6, 3) + mineBlocks(t, net, 6, 4) // We'll be tracking the expected asset balances throughout the test, so // we can assert it after each action. - charlieAssetBalance := mintedAsset.Amount - 3*assetSendAmount + charlieAssetBalance := mintedAsset.Amount - 4*assetSendAmount daveAssetBalance := assetSendAmount - fundingAmount erinAssetBalance := assetSendAmount - fundingAmount yaraAssetBalance := assetSendAmount - fundingAmount + georgeAssetBalance := assetSendAmount - fundingAmount itest.AssertBalances( t.t, charlieTap, charlieAssetBalance, @@ -304,6 +364,10 @@ func createTestMultiRFQAssetNetwork(t *harnessTest, net *NetworkHarness, t.t, yaraTap, yaraAssetBalance, itest.WithAssetID(assetID), ) + itest.AssertBalances( + t.t, georgeTap, georgeAssetBalance, itest.WithAssetID(assetID), + ) + // Assert that the proofs for both channels has been uploaded to the // designated Universe server. assertUniverseProofExists( @@ -318,6 +382,10 @@ func createTestMultiRFQAssetNetwork(t *harnessTest, net *NetworkHarness, t.t, universeTap, assetID, groupKey, fundingScriptTreeBytes, fmt.Sprintf("%v:%v", fundRespYF.Txid, fundRespYF.OutputIndex), ) + assertUniverseProofExists( + t.t, universeTap, assetID, groupKey, fundingScriptTreeBytes, + fmt.Sprintf("%v:%v", fundRespGF.Txid, fundRespGF.OutputIndex), + ) return nil, nil, nil } diff --git a/itest/litd_custom_channels_test.go b/itest/litd_custom_channels_test.go index 4d70087c8..6fa37cf46 100644 --- a/itest/litd_custom_channels_test.go +++ b/itest/litd_custom_channels_test.go @@ -94,6 +94,16 @@ var ( "not_use_on_mainnet", "--taproot-assets.experimental.rfq.mockoracleassetsperbtc=" + "5820600", + "--taproot-assets.experimental.rfq.acceptpricedeviationppm=50000", + }...) + + litdArgsTemplateDiffOracle = append(litdArgsTemplateNoOracle, []string{ + "--taproot-assets.experimental.rfq.priceoracleaddress=" + + "use_mock_price_oracle_service_promise_to_" + + "not_use_on_mainnet", + "--taproot-assets.experimental.rfq.mockoracleassetsperbtc=" + + "8820600", + "--taproot-assets.experimental.rfq.acceptpricedeviationppm=50000", }...) ) @@ -2980,6 +2990,7 @@ func testCustomChannelsMultiRFQ(ctx context.Context, net *NetworkHarness, lndArgs := slices.Clone(lndArgsTemplate) litdArgs := slices.Clone(litdArgsTemplate) + litdArgsDiffOracle := slices.Clone(litdArgsTemplateDiffOracle) charlie, err := net.NewNode( t.t, "Charlie", lndArgs, false, true, litdArgs..., @@ -2991,6 +3002,11 @@ func testCustomChannelsMultiRFQ(ctx context.Context, net *NetworkHarness, proof.UniverseRpcCourierType, charlie.Cfg.LitAddr(), )) + litdArgsDiffOracle = append(litdArgsDiffOracle, fmt.Sprintf( + "--taproot-assets.proofcourieraddr=%s://%s", + proof.UniverseRpcCourierType, charlie.Cfg.LitAddr(), + )) + dave, err := net.NewNode(t.t, "Dave", lndArgs, false, true, litdArgs...) require.NoError(t.t, err) erin, err := net.NewNode(t.t, "Erin", lndArgs, false, true, litdArgs...) @@ -3003,8 +3019,12 @@ func testCustomChannelsMultiRFQ(ctx context.Context, net *NetworkHarness, t.t, "Yara", lndArgs, false, true, litdArgs..., ) require.NoError(t.t, err) + george, err := net.NewNode( + t.t, "George", lndArgs, false, true, litdArgsDiffOracle..., + ) + require.NoError(t.t, err) - nodes := []*HarnessNode{charlie, dave, erin, fabia, yara} + nodes := []*HarnessNode{charlie, dave, erin, fabia, yara, george} connectAllNodes(t.t, net, nodes) fundAllNodes(t.t, net, nodes) @@ -3014,6 +3034,7 @@ func testCustomChannelsMultiRFQ(ctx context.Context, net *NetworkHarness, erinTap := newTapClient(t.t, erin) fabiaTap := newTapClient(t.t, fabia) yaraTap := newTapClient(t.t, yara) + georgeTap := newTapClient(t.t, george) assetReq := itest.CopyRequest(&mintrpc.MintAssetRequest{ Asset: itestAsset, @@ -3031,7 +3052,7 @@ func testCustomChannelsMultiRFQ(ctx context.Context, net *NetworkHarness, assetID := cents.AssetGenesis.AssetId groupID := cents.GetAssetGroup().GetTweakedGroupKey() - syncUniverses(t.t, charlieTap, dave, erin, fabia, yara) + syncUniverses(t.t, charlieTap, dave, erin, fabia, yara, george) multiRfqNodes := multiRfqNodes{ charlie: itestNode{ @@ -3054,6 +3075,10 @@ func testCustomChannelsMultiRFQ(ctx context.Context, net *NetworkHarness, Lnd: yara, Tapd: yaraTap, }, + george: itestNode{ + Lnd: george, + Tapd: georgeTap, + }, universeTap: charlieTap, } From d59f943d24bb96137dfd0a089a3f106d9b554041 Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Mon, 4 Aug 2025 12:48:05 +0200 Subject: [PATCH 08/10] lint: bump timeout to 10 minutes --- .golangci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index a748699f0..8e0071984 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,6 +1,6 @@ run: # timeout for analysis - timeout: 4m + timeout: 10m build-tags: - autopilotrpc From 4e032d2e143e27832a581781081920bf336f6992 Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Wed, 6 Aug 2025 16:49:00 +0200 Subject: [PATCH 09/10] go: bump to 1.23.10 --- .github/workflows/main.yml | 2 +- Dockerfile | 2 +- Makefile | 2 +- autopilotserverrpc/go.mod | 2 +- dev.Dockerfile | 2 +- go.mod | 2 +- litrpc/Dockerfile | 2 +- litrpc/go.mod | 2 +- make/builder.Dockerfile | 2 +- perms/go.mod | 2 +- tools/Dockerfile | 2 +- tools/go.mod | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f733d32c2..5d0375b6e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,7 +21,7 @@ env: # If you change this value, please change it in the following files as well: # /Dockerfile # /dev.Dockerfile - GO_VERSION: 1.23.9 + GO_VERSION: 1.23.10 jobs: ######################## diff --git a/Dockerfile b/Dockerfile index 9e632d0c6..cf29e7eb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,7 +32,7 @@ RUN apk add --no-cache --update alpine-sdk \ # The first stage is already done and all static assets should now be generated # in the app/build sub directory. -FROM golang:1.23.9-alpine3.20@sha256:96917b18cf0bf6dc54f726696eb526fe6e6a1ab45e43d4a292aae11f3d503ffe as golangbuilder +FROM golang:1.23.10-alpine as golangbuilder # Instead of checking out from git again, we just copy the whole working # directory of the previous stage that includes the generated static assets. diff --git a/Makefile b/Makefile index 1df75054c..064e49447 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ PUBLIC_URL := # GO_VERSION is the Go version used for the release build, docker files, and # GitHub Actions. This is the reference version for the project. All other Go # versions are checked against this version. -GO_VERSION = 1.23.9 +GO_VERSION = 1.23.10 # LITD_COMPAT_VERSIONS is a space-separated list of litd versions that are # installed before running the integration tests which include backward diff --git a/autopilotserverrpc/go.mod b/autopilotserverrpc/go.mod index b189a30d4..818a33144 100644 --- a/autopilotserverrpc/go.mod +++ b/autopilotserverrpc/go.mod @@ -1,6 +1,6 @@ module github.com/lightninglabs/lightning-terminal/autopilotserverrpc -go 1.23.9 +go 1.23.10 require ( google.golang.org/grpc v1.56.3 diff --git a/dev.Dockerfile b/dev.Dockerfile index 2ab4253fa..a861734fe 100644 --- a/dev.Dockerfile +++ b/dev.Dockerfile @@ -20,7 +20,7 @@ RUN cd /go/src/github.com/lightninglabs/lightning-terminal/app \ # The first stage is already done and all static assets should now be generated # in the app/build sub directory. -FROM golang:1.23.9-alpine3.20@sha256:96917b18cf0bf6dc54f726696eb526fe6e6a1ab45e43d4a292aae11f3d503ffe as golangbuilder +FROM golang:1.23.10-alpine as golangbuilder # Instead of checking out from git again, we just copy the whole working # directory of the previous stage that includes the generated static assets. diff --git a/go.mod b/go.mod index 632ea6c01..c6deb67d4 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/lightninglabs/lightning-terminal -go 1.23.9 +go 1.23.10 require ( github.com/btcsuite/btcd v0.24.3-0.20250318170759-4f4ea81776d6 diff --git a/litrpc/Dockerfile b/litrpc/Dockerfile index 05bdae0db..cb94c89e9 100644 --- a/litrpc/Dockerfile +++ b/litrpc/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23.9-bookworm@sha256:26ca07ec0684ebe2154ad45a3a03710edb90b9cfc3769bead74ebcf6644dc759 +FROM golang:1.23.10-bookworm RUN apt-get update && apt-get install -y \ git \ diff --git a/litrpc/go.mod b/litrpc/go.mod index 8cbea086f..9b7ba99f9 100644 --- a/litrpc/go.mod +++ b/litrpc/go.mod @@ -1,6 +1,6 @@ module github.com/lightninglabs/lightning-terminal/litrpc -go 1.23.9 +go 1.23.10 require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 diff --git a/make/builder.Dockerfile b/make/builder.Dockerfile index 86eae9169..bc5d6d26c 100644 --- a/make/builder.Dockerfile +++ b/make/builder.Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23.9-bookworm@sha256:26ca07ec0684ebe2154ad45a3a03710edb90b9cfc3769bead74ebcf6644dc759 +FROM golang:1.23.10-bookworm MAINTAINER Olaoluwa Osuntokun diff --git a/perms/go.mod b/perms/go.mod index 3c85cfd2d..cde0edd6e 100644 --- a/perms/go.mod +++ b/perms/go.mod @@ -1,6 +1,6 @@ module github.com/lightninglabs/lightning-terminal/perms -go 1.23.9 +go 1.23.10 require ( github.com/btcsuite/btcd v0.24.3-0.20250318170759-4f4ea81776d6 diff --git a/tools/Dockerfile b/tools/Dockerfile index a7f2c514c..516494c84 100644 --- a/tools/Dockerfile +++ b/tools/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23.9-bookworm@sha256:26ca07ec0684ebe2154ad45a3a03710edb90b9cfc3769bead74ebcf6644dc759 +FROM golang:1.23.10-bookworm RUN apt-get update && apt-get install -y git ENV GOCACHE=/tmp/build/.cache diff --git a/tools/go.mod b/tools/go.mod index e2bfd219e..bed146002 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -1,6 +1,6 @@ module github.com/lightninglabs/lightning-terminal/tools -go 1.23.9 +go 1.23.10 require ( github.com/btcsuite/btcd v0.24.2 From 0aa4a0fe54eb270a14a10583ddd8d2faaa5007f2 Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Wed, 6 Aug 2025 16:37:23 +0200 Subject: [PATCH 10/10] build(temp): bump go mod --- go.mod | 40 +++++++++++++++------------ go.sum | 86 +++++++++++++++++++++++++++++++++------------------------- 2 files changed, 72 insertions(+), 54 deletions(-) diff --git a/go.mod b/go.mod index c6deb67d4..ce830be38 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.4 github.com/btcsuite/btcd/btcutil v1.1.5 github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 - github.com/btcsuite/btclog/v2 v2.0.1-0.20250602222548-9967d19bb084 + github.com/btcsuite/btclog/v2 v2.0.1-0.20250728225537-6090e87c6c5b github.com/btcsuite/btcwallet/walletdb v1.5.1 github.com/davecgh/go-spew v1.1.1 github.com/go-errors/errors v1.0.1 @@ -32,8 +32,8 @@ require ( github.com/lightninglabs/pool v0.6.6-beta github.com/lightninglabs/pool/auctioneerrpc v1.1.3 github.com/lightninglabs/pool/poolrpc v1.0.1 - github.com/lightninglabs/taproot-assets v0.6.1-0.20250729190616-3f323918a96e - github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250729190616-3f323918a96e + github.com/lightninglabs/taproot-assets v0.6.1-0.20250806135252-08f114ecaa27 + github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250806135252-08f114ecaa27 github.com/lightningnetwork/lnd v0.19.2-beta github.com/lightningnetwork/lnd/cert v1.2.2 github.com/lightningnetwork/lnd/clock v1.1.1 @@ -50,10 +50,10 @@ require ( github.com/stretchr/testify v1.10.0 github.com/urfave/cli v1.22.14 go.etcd.io/bbolt v1.3.11 - golang.org/x/crypto v0.36.0 + golang.org/x/crypto v0.37.0 golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 - golang.org/x/net v0.38.0 - golang.org/x/sync v0.12.0 + golang.org/x/net v0.39.0 + golang.org/x/sync v0.13.0 google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 gopkg.in/macaroon-bakery.v2 v2.3.0 @@ -76,7 +76,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/btcsuite/btcd/btcutil/psbt v1.1.10 // indirect github.com/btcsuite/btclog v0.0.0-20241003133417-09c4e92e319c // indirect - github.com/btcsuite/btcwallet v0.16.14 // indirect + github.com/btcsuite/btcwallet v0.16.15-0.20250805011126-a3632ae48ab3 // indirect github.com/btcsuite/btcwallet/wallet/txauthor v1.3.5 // indirect github.com/btcsuite/btcwallet/wallet/txrules v1.2.2 // indirect github.com/btcsuite/btcwallet/wallet/txsizes v1.2.5 // indirect @@ -96,8 +96,8 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/decred/dcrd/lru v1.1.2 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/docker/cli v28.0.1+incompatible // indirect - github.com/docker/docker v28.0.1+incompatible // indirect + github.com/docker/cli v28.1.1+incompatible // indirect + github.com/docker/docker v28.1.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect @@ -127,12 +127,12 @@ require ( github.com/jackc/pgio v1.0.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgproto3/v2 v2.3.3 // indirect - github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect - github.com/jackc/pgtype v1.14.0 // indirect - github.com/jackc/pgx/v4 v4.18.2 // indirect - github.com/jackc/pgx/v5 v5.6.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgtype v1.14.4 // indirect + github.com/jackc/pgx/v4 v4.18.3 // indirect + github.com/jackc/pgx/v5 v5.7.4 // indirect github.com/jackc/puddle v1.3.0 // indirect - github.com/jackc/puddle/v2 v2.2.1 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jackpal/gateway v1.0.5 // indirect github.com/jackpal/go-nat-pmp v0.0.0-20170405195558-28a68d0c24ad // indirect github.com/jedib0t/go-pretty/v6 v6.2.7 // indirect @@ -148,7 +148,7 @@ require ( github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.3 // indirect github.com/lightninglabs/neutrino v0.16.1 // indirect github.com/lightninglabs/neutrino/cache v1.1.2 // indirect - github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb // indirect + github.com/lightningnetwork/lightning-onion v1.2.1-0.20240815225420-8b40adf04ab9 // indirect github.com/lightningnetwork/lnd/healthcheck v1.2.6 // indirect github.com/lightningnetwork/lnd/queue v1.1.1 // indirect github.com/lightningnetwork/lnd/ticker v1.1.1 // indirect @@ -213,8 +213,8 @@ require ( go.uber.org/zap v1.23.0 // indirect golang.org/x/mod v0.21.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.30.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/term v0.31.0 // indirect + golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.24.0 // indirect google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect @@ -247,3 +247,9 @@ replace google.golang.org/protobuf => github.com/lightninglabs/protobuf-go-hex-d // it is a replace in the tapd repository, it doesn't get propagated here // automatically, so we need to add it manually. replace github.com/golang-migrate/migrate/v4 => github.com/lightninglabs/migrate/v4 v4.18.2-9023d66a-fork-pr-2 + +replace github.com/lightningnetwork/lnd => github.com/GeorgeTsagk/lnd v0.0.0-20250806121655-c98792e8a1c1 + +replace github.com/lightningnetwork/lnd/sqldb => github.com/GeorgeTsagk/lnd/sqldb v0.0.0-20250806121655-c98792e8a1c1 + +replace github.com/lightninglabs/lndclient => github.com/GeorgeTsagk/lndclient v0.0.0-20250806122136-d60d44f906c3 diff --git a/go.sum b/go.sum index b66c41851..7ffe9c0b3 100644 --- a/go.sum +++ b/go.sum @@ -603,6 +603,12 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/GeorgeTsagk/lnd v0.0.0-20250806121655-c98792e8a1c1 h1:428N+W94ojtX/3cJvrqkdakWyuYWd9aGvOXn3uhr+ZE= +github.com/GeorgeTsagk/lnd v0.0.0-20250806121655-c98792e8a1c1/go.mod h1:3c9bHUYsYYBGWx48FzeLUwfszVkYZerNk9EAwd7804U= +github.com/GeorgeTsagk/lnd/sqldb v0.0.0-20250806121655-c98792e8a1c1 h1:SHo8K9lo2vgac73DnbFCkKbbpIB4AfZOo5LOJ0nqx4A= +github.com/GeorgeTsagk/lnd/sqldb v0.0.0-20250806121655-c98792e8a1c1/go.mod h1:va+PNQfOIwL8/Oc5AcxNSfnbsOVaYLuum5Hyvr+Sh9w= +github.com/GeorgeTsagk/lndclient v0.0.0-20250806122136-d60d44f906c3 h1:Xawyqm1V1HTwnmMfrgdyF5aM2AWcvaoSzubjOS3vdzs= +github.com/GeorgeTsagk/lndclient v0.0.0-20250806122136-d60d44f906c3/go.mod h1:b+qcVquq+AV4WsVdNT334SRl7KHi+ZA58MGOfbzcqVE= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= @@ -667,11 +673,11 @@ github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtyd github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btclog v0.0.0-20241003133417-09c4e92e319c h1:4HxD1lBUGUddhzgaNgrCPsFWd7cGYNpeFUgd9ZIgyM0= github.com/btcsuite/btclog v0.0.0-20241003133417-09c4e92e319c/go.mod h1:w7xnGOhwT3lmrS4H3b/D1XAXxvh+tbhUm8xeHN2y3TQ= -github.com/btcsuite/btclog/v2 v2.0.1-0.20250602222548-9967d19bb084 h1:y3bvkt8ki0KX35eUEU8XShRHusz1S+55QwXUTmxn888= -github.com/btcsuite/btclog/v2 v2.0.1-0.20250602222548-9967d19bb084/go.mod h1:XItGUfVOxotJL8kkuk2Hj3EVow5KCugXl3wWfQ6K0AE= +github.com/btcsuite/btclog/v2 v2.0.1-0.20250728225537-6090e87c6c5b h1:MQ+Q6sDy37V1wP1Yu79A5KqJutolqUGwA99UZWQDWZM= +github.com/btcsuite/btclog/v2 v2.0.1-0.20250728225537-6090e87c6c5b/go.mod h1:XItGUfVOxotJL8kkuk2Hj3EVow5KCugXl3wWfQ6K0AE= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcwallet v0.16.14 h1:CofysgmI1ednkLsXontAdBoXJkbiim7unXnFKhLLjnE= -github.com/btcsuite/btcwallet v0.16.14/go.mod h1:H6dfoZcWPonM2wbVsR2ZBY0PKNZKdQyLAmnX8vL9JFA= +github.com/btcsuite/btcwallet v0.16.15-0.20250805011126-a3632ae48ab3 h1:MAjNRpj3XhCOrhchq4wq0qI34TIBX/DCnT6OLWejx68= +github.com/btcsuite/btcwallet v0.16.15-0.20250805011126-a3632ae48ab3/go.mod h1:H6dfoZcWPonM2wbVsR2ZBY0PKNZKdQyLAmnX8vL9JFA= github.com/btcsuite/btcwallet/wallet/txauthor v1.3.5 h1:Rr0njWI3r341nhSPesKQ2JF+ugDSzdPoeckS75SeDZk= github.com/btcsuite/btcwallet/wallet/txauthor v1.3.5/go.mod h1:+tXJ3Ym0nlQc/iHSwW1qzjmPs3ev+UVWMbGgfV1OZqU= github.com/btcsuite/btcwallet/wallet/txrules v1.2.2 h1:YEO+Lx1ZJJAtdRrjuhXjWrYsmAk26wLTlNzxt2q0lhk= @@ -762,10 +768,10 @@ github.com/dhui/dktest v0.4.5 h1:uUfYBIVREmj/Rw6MvgmqNAYzTiKOHJak+enB5Di73MM= github.com/dhui/dktest v0.4.5/go.mod h1:tmcyeHDKagvlDrz7gDKq4UAJOLIfVZYkfD5OnHDwcCo= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v28.0.1+incompatible h1:g0h5NQNda3/CxIsaZfH4Tyf6vpxFth7PYl3hgCPOKzs= -github.com/docker/cli v28.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/docker v28.0.1+incompatible h1:FCHjSRdXhNRFjlHMTv4jUNlIBbTeRjrWfeFuJp7jpo0= -github.com/docker/docker v28.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/cli v28.1.1+incompatible h1:eyUemzeI45DY7eDPuwUcmDyDj1pM98oD5MdSpiItp8k= +github.com/docker/cli v28.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= +github.com/docker/docker v28.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -1039,29 +1045,32 @@ github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwX github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag= github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= -github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= -github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgtype v1.14.4 h1:fKuNiCumbKTAIxQwXfB/nsrnkEI6bPJrrSiMKgbJ2j8= +github.com/jackc/pgtype v1.14.4/go.mod h1:aKeozOde08iifGosdJpz9MBZonJOUJxqNpPBcMJTlVA= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= -github.com/jackc/pgx/v4 v4.18.2 h1:xVpYkNR5pk5bMCZGfClbO962UIqVABcAGt7ha1s/FeU= github.com/jackc/pgx/v4 v4.18.2/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw= -github.com/jackc/pgx/v5 v5.6.0 h1:SWJzexBzPL5jb0GEsrPMLIsi/3jOo7RHlzTjcAeDrPY= -github.com/jackc/pgx/v5 v5.6.0/go.mod h1:DNZ/vlrUnhWCoFGxHAG8U2ljioxukquj7utPDgtQdTw= +github.com/jackc/pgx/v4 v4.18.3 h1:dE2/TrEsGX3RBprb3qryqSV9Y60iZN1C6i8IrmW9/BA= +github.com/jackc/pgx/v4 v4.18.3/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw= +github.com/jackc/pgx/v5 v5.7.4 h1:9wKznZrhWa2QiHL+NjTSPP6yjl3451BX3imWDnokYlg= +github.com/jackc/pgx/v5 v5.7.4/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.3.0 h1:eHK/5clGOatcjX3oWGBO/MpxpbHzSwud5EWTSCI+MX0= github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= -github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jackpal/gateway v1.0.5 h1:qzXWUJfuMdlLMtt0a3Dgt+xkWQiA5itDEITVJtuSwMc= github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= github.com/jackpal/go-nat-pmp v0.0.0-20170405195558-28a68d0c24ad h1:heFfj7z0pGsNCekUlsFhO2jstxO4b5iQ665LjwM5mDc= @@ -1150,8 +1159,6 @@ github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.3 h1:NuDp6Z+QNM github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.3/go.mod h1:bDnEKRN1u13NFBuy/C+bFLhxA5bfd3clT25y76QY0AM= github.com/lightninglabs/lightning-node-connect/mailbox v1.0.1 h1:RWmohykp3n/DTMWY8b18RNTEcLDf+KT/AZHKYdOObkM= github.com/lightninglabs/lightning-node-connect/mailbox v1.0.1/go.mod h1:NYtNexZE9gO1eOeegTxmIW9fqanl7eZ9cOrE9yewSAk= -github.com/lightninglabs/lndclient v0.19.0-12 h1:aSIKfnvnHKiyFWppUGHJG5fn8VoF5WG5Lx958ksLmqs= -github.com/lightninglabs/lndclient v0.19.0-12/go.mod h1:cicoJY1AwZuRVXGD8Knp50TRT7TGBmw1k37uPQsGQiw= github.com/lightninglabs/loop v0.31.2-beta.0.20250730111713-3b0f6e84dc14 h1:PA/bTHYZ/leIoky3mFgbD4h9FV1lamzS+bw45GLd4l8= github.com/lightninglabs/loop v0.31.2-beta.0.20250730111713-3b0f6e84dc14/go.mod h1:ukAfrXOf5OqpJORSYLjsyFzOGgIASyC2Qbstsl0ZvWw= github.com/lightninglabs/loop/looprpc v1.0.8 h1:OFmJNLjem6fLuH1YUO+3G6QA1wmjAd0zyhvdHONOBDs= @@ -1172,14 +1179,12 @@ github.com/lightninglabs/pool/poolrpc v1.0.1 h1:XbNx28TYwEj/PVsnnF9TnveVCMCYfS1v github.com/lightninglabs/pool/poolrpc v1.0.1/go.mod h1:836icifg/SBnZbiae0v3jeRRzCrT6LWo32SqCS/JiGk= github.com/lightninglabs/protobuf-go-hex-display v1.34.2-hex-display h1:w7FM5LH9Z6CpKxl13mS48idsu6F+cEZf0lkyiV+Dq9g= github.com/lightninglabs/protobuf-go-hex-display v1.34.2-hex-display/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -github.com/lightninglabs/taproot-assets v0.6.1-0.20250729190616-3f323918a96e h1:wlaM8dTlpCQ0uNj0TBskBDeNTTDessxiXiakYDB4RFo= -github.com/lightninglabs/taproot-assets v0.6.1-0.20250729190616-3f323918a96e/go.mod h1:mIgx0p/GkMZeEjEm91vYQsH41YQBAgJl7TP6JcT+wgs= -github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250729190616-3f323918a96e h1:MnXspinwkd6VhV8G9I+TdSak05UitfYyNBCQhTIIr0g= -github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250729190616-3f323918a96e/go.mod h1:c8gTEcKEUoUPVChgZNwqTL1hss7UWa5FDeObr8WBzQk= -github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb h1:yfM05S8DXKhuCBp5qSMZdtSwvJ+GFzl94KbXMNB1JDY= -github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb/go.mod h1:c0kvRShutpj3l6B9WtTsNTBUtjSmjZXbJd9ZBRQOSKI= -github.com/lightningnetwork/lnd v0.19.2-beta h1:3SKVrKYFY4IJLlrMf7cDzZcBeT+MxjI9Xy6YpY+EEX4= -github.com/lightningnetwork/lnd v0.19.2-beta/go.mod h1:+yKUfIGKKYRHGewgzQ6xi0S26DIfBiMv1zCdB3m6YxA= +github.com/lightninglabs/taproot-assets v0.6.1-0.20250806135252-08f114ecaa27 h1:kgwhR3BIIZCqtcninl23xDozvYM0D35/x2ksMTmnRv8= +github.com/lightninglabs/taproot-assets v0.6.1-0.20250806135252-08f114ecaa27/go.mod h1:ko3F908BM5PP6Xu+M2qmEA8vPHygkTrdD6Bapb1nKYw= +github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250806135252-08f114ecaa27 h1:CBUZGvZO/7SSgW7PMm/ZBEV73kjhyxGuGr2RymJ/f08= +github.com/lightninglabs/taproot-assets/taprpc v1.0.10-0.20250806135252-08f114ecaa27/go.mod h1:I8OMvQ1gJGm3qM4RuIggdKWTH9/hs9ZlQBl0qjmvcn0= +github.com/lightningnetwork/lightning-onion v1.2.1-0.20240815225420-8b40adf04ab9 h1:6D3LrdagJweLLdFm1JNodZsBk6iU4TTsBBFLQ4yiXfI= +github.com/lightningnetwork/lightning-onion v1.2.1-0.20240815225420-8b40adf04ab9/go.mod h1:EDqJ3MuZIbMq0QI1czTIKDJ/GS8S14RXPwapHw8cw6w= github.com/lightningnetwork/lnd/cert v1.2.2 h1:71YK6hogeJtxSxw2teq3eGeuy4rHGKcFf0d0Uy4qBjI= github.com/lightningnetwork/lnd/cert v1.2.2/go.mod h1:jQmFn/Ez4zhDgq2hnYSw8r35bqGVxViXhX6Cd7HXM6U= github.com/lightningnetwork/lnd/clock v1.1.1 h1:OfR3/zcJd2RhH0RU+zX/77c0ZiOnIMsDIBjgjWdZgA0= @@ -1194,8 +1199,6 @@ github.com/lightningnetwork/lnd/kvdb v1.4.16 h1:9BZgWdDfjmHRHLS97cz39bVuBAqMc4/p github.com/lightningnetwork/lnd/kvdb v1.4.16/go.mod h1:HW+bvwkxNaopkz3oIgBV6NEnV4jCEZCACFUcNg4xSjM= github.com/lightningnetwork/lnd/queue v1.1.1 h1:99ovBlpM9B0FRCGYJo6RSFDlt8/vOkQQZznVb18iNMI= github.com/lightningnetwork/lnd/queue v1.1.1/go.mod h1:7A6nC1Qrm32FHuhx/mi1cieAiBZo5O6l8IBIoQxvkz4= -github.com/lightningnetwork/lnd/sqldb v1.0.11-0.20250623231731-45c15646c68b h1:WL7X9E9d0/tbTOhVZ24x0WkatPJaGK2e7otCfDYcHTc= -github.com/lightningnetwork/lnd/sqldb v1.0.11-0.20250623231731-45c15646c68b/go.mod h1:c/vWoQfcxu6FAfHzGajkIQi7CEIeIZFhhH4DYh1BJpc= github.com/lightningnetwork/lnd/ticker v1.1.1 h1:J/b6N2hibFtC7JLV77ULQp++QLtCwT6ijJlbdiZFbSM= github.com/lightningnetwork/lnd/ticker v1.1.1/go.mod h1:waPTRAAcwtu7Ji3+3k+u/xH5GHovTsCoSVpho0KDvdA= github.com/lightningnetwork/lnd/tlv v1.3.2 h1:MO4FCk7F4k5xPMqVZF6Nb/kOpxlwPrUQpYjmyKny5s0= @@ -1500,8 +1503,10 @@ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1634,8 +1639,10 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1682,8 +1689,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1785,6 +1792,8 @@ golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1796,8 +1805,10 @@ golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1814,8 +1825,9 @@ golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=