From 352b8da4b3ed926e30b989701fc7cf309a0a07a7 Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Wed, 18 Sep 2024 16:35:54 +0200 Subject: [PATCH 1/2] account: split mocks This commit prepares for a change in lndclient, where each sub server client needs to implement a specific method. Because of that requirement we cannot have a single mock that implements two of those methods and we need to split the wallet and signer mocks apart. --- account/manager_test.go | 15 +++--- account/mock_test.go | 105 ++++++++++++++++++++++------------------ 2 files changed, 67 insertions(+), 53 deletions(-) diff --git a/account/manager_test.go b/account/manager_test.go index 4516d51c5..4b124f7fa 100644 --- a/account/manager_test.go +++ b/account/manager_test.go @@ -89,6 +89,7 @@ type testHarness struct { store *mockStore notifier *mockChainNotifier wallet *mockWallet + signer *mockSigner auctioneer *mockAuctioneer manager Manager } @@ -96,6 +97,7 @@ type testHarness struct { func newTestHarness(t *testing.T) *testHarness { store := newMockStore() wallet := newMockWallet() + signer := newMockSigner() notifier := newMockChainNotifier() auctioneer := newMockAuctioneer() @@ -103,13 +105,14 @@ func newTestHarness(t *testing.T) *testHarness { t: t, store: store, wallet: wallet, + signer: signer, notifier: notifier, auctioneer: auctioneer, manager: NewManager(&ManagerConfig{ Store: store, Auctioneer: auctioneer, Wallet: wallet, - Signer: wallet, + Signer: signer, ChainNotifier: notifier, TxSource: wallet, TxFeeEstimator: wallet, @@ -419,14 +422,14 @@ func (h *testHarness) assertAuctioneerMuSig2NoncesReceived() { h.auctioneer.mu.Lock() defer h.auctioneer.mu.Unlock() - h.wallet.Lock() - defer h.wallet.Unlock() + h.signer.Lock() + defer h.signer.Unlock() - require.Len(h.t, h.wallet.muSig2Sessions, 0) - require.Len(h.t, h.wallet.muSig2RemovedSessions, 1) + require.Len(h.t, h.signer.muSig2Sessions, 0) + require.Len(h.t, h.signer.muSig2RemovedSessions, 1) var sessionInfo *input.MuSig2SessionInfo - for _, info := range h.wallet.muSig2RemovedSessions { + for _, info := range h.signer.muSig2RemovedSessions { sessionInfo = info break } diff --git a/account/mock_test.go b/account/mock_test.go index b4d67ec2e..79a7ab758 100644 --- a/account/mock_test.go +++ b/account/mock_test.go @@ -239,16 +239,12 @@ var _ Auctioneer = (*mockAuctioneer)(nil) type mockWallet struct { TxSource lndclient.WalletKitClient - lndclient.SignerClient - sync.Mutex - txs []lndclient.Transaction - publishChan chan *wire.MsgTx - muSig2Sessions map[input.MuSig2SessionID]*input.MuSig2SessionInfo - muSig2RemovedSessions map[input.MuSig2SessionID]*input.MuSig2SessionInfo - utxos []*lnwallet.Utxo - fundPsbt *psbt.Packet - fundPsbtChangeIdx int32 + txs []lndclient.Transaction + publishChan chan *wire.MsgTx + utxos []*lnwallet.Utxo + fundPsbt *psbt.Packet + fundPsbtChangeIdx int32 sendOutputs func(context.Context, []*wire.TxOut, chainfee.SatPerKWeight) (*wire.MsgTx, error) @@ -259,12 +255,6 @@ var _ lndclient.WalletKitClient = (*mockWallet)(nil) func newMockWallet() *mockWallet { return &mockWallet{ publishChan: make(chan *wire.MsgTx, 1), - muSig2Sessions: make( - map[input.MuSig2SessionID]*input.MuSig2SessionInfo, - ), - muSig2RemovedSessions: make( - map[input.MuSig2SessionID]*input.MuSig2SessionInfo, - ), } } @@ -274,13 +264,6 @@ func (w *mockWallet) DeriveNextKey(ctx context.Context, return testTraderKeyDesc, nil } -func (w *mockWallet) DeriveSharedKey(ctx context.Context, - ephemeralKey *btcec.PublicKey, - keyLocator *keychain.KeyLocator) ([32]byte, error) { - - return sharedSecret, nil -} - func (w *mockWallet) PublishTransaction(ctx context.Context, tx *wire.MsgTx, label string) error { @@ -348,24 +331,6 @@ func (w *mockWallet) ReleaseOutput(_ context.Context, lockID wtxmgr.LockID, return nil } -func (w *mockWallet) SignOutputRaw(context.Context, *wire.MsgTx, - []*lndclient.SignDescriptor, []*wire.TxOut) ([][]byte, error) { - - return [][]byte{[]byte("trader sig")}, nil -} - -func (w *mockWallet) ComputeInputScript(context.Context, *wire.MsgTx, - []*lndclient.SignDescriptor, []*wire.TxOut) ([]*input.Script, error) { - - return []*input.Script{{ - SigScript: []byte("input sig script"), - Witness: wire.TxWitness{ - []byte("input"), - []byte("witness"), - }, - }}, nil -} - func (w *mockWallet) EstimateFeeRate(_ context.Context, _ int32) (chainfee.SatPerKWeight, error) { @@ -402,7 +367,7 @@ func (w *mockWallet) SignPsbt(_ context.Context, } func (w *mockWallet) FinalizePsbt(_ context.Context, packet *psbt.Packet, - account string) (*psbt.Packet, *wire.MsgTx, error) { + _ string) (*psbt.Packet, *wire.MsgTx, error) { // Just copy over any sigs we might have. This is copy/paste code from // the psbt Finalizer, minus the IsComplete() check. @@ -446,9 +411,55 @@ func (w *mockWallet) FinalizePsbt(_ context.Context, packet *psbt.Packet, return packet, packet.UnsignedTx, nil } +type mockSigner struct { + lndclient.SignerClient + sync.Mutex + + muSig2Sessions map[input.MuSig2SessionID]*input.MuSig2SessionInfo + muSig2RemovedSessions map[input.MuSig2SessionID]*input.MuSig2SessionInfo +} + +var _ lndclient.SignerClient = (*mockSigner)(nil) + +func newMockSigner() *mockSigner { + return &mockSigner{ + muSig2Sessions: make( + map[input.MuSig2SessionID]*input.MuSig2SessionInfo, + ), + muSig2RemovedSessions: make( + map[input.MuSig2SessionID]*input.MuSig2SessionInfo, + ), + } +} + +func (w *mockSigner) DeriveSharedKey(ctx context.Context, + ephemeralKey *btcec.PublicKey, + keyLocator *keychain.KeyLocator) ([32]byte, error) { + + return sharedSecret, nil +} + +func (w *mockSigner) SignOutputRaw(context.Context, *wire.MsgTx, + []*lndclient.SignDescriptor, []*wire.TxOut) ([][]byte, error) { + + return [][]byte{[]byte("trader sig")}, nil +} + +func (w *mockSigner) ComputeInputScript(context.Context, *wire.MsgTx, + []*lndclient.SignDescriptor, []*wire.TxOut) ([]*input.Script, error) { + + return []*input.Script{{ + SigScript: []byte("input sig script"), + Witness: wire.TxWitness{ + []byte("input"), + []byte("witness"), + }, + }}, nil +} + // MuSig2CreateSession creates a new musig session with the key and signers // provided. -func (w *mockWallet) MuSig2CreateSession(_ context.Context, +func (w *mockSigner) MuSig2CreateSession(_ context.Context, version input.MuSig2Version, _ *keychain.KeyLocator, _ [][]byte, opts ...lndclient.MuSig2SessionOpts) (*input.MuSig2SessionInfo, error) { @@ -485,8 +496,8 @@ func (w *mockWallet) MuSig2CreateSession(_ context.Context, // MuSig2RegisterNonces registers additional public nonces for a musig2 session. // It returns a boolean indicating whether we have all of our nonces present. -func (w *mockWallet) MuSig2RegisterNonces(_ context.Context, sessionID [32]byte, - nonces [][66]byte) (bool, error) { +func (w *mockSigner) MuSig2RegisterNonces(_ context.Context, _ [32]byte, + _ [][66]byte) (bool, error) { return true, nil } @@ -495,7 +506,7 @@ func (w *mockWallet) MuSig2RegisterNonces(_ context.Context, sessionID [32]byte, // message. This can only be called once all public nonces have been created. If // the caller will not be responsible for combining the signatures, the cleanup // bool should be set. -func (w *mockWallet) MuSig2Sign(_ context.Context, sessionID [32]byte, +func (w *mockSigner) MuSig2Sign(_ context.Context, sessionID [32]byte, _ [32]byte, cleanup bool) ([]byte, error) { var ( @@ -521,7 +532,7 @@ func (w *mockWallet) MuSig2Sign(_ context.Context, sessionID [32]byte, // MuSig2CombineSig combines the given partial signature(s) with the local one, // if it already exists. Once a partial signature of all participants are // registered, the final signature will be combined and returned. -func (w *mockWallet) MuSig2CombineSig(_ context.Context, sessionID [32]byte, +func (w *mockSigner) MuSig2CombineSig(_ context.Context, sessionID [32]byte, _ [][]byte) (bool, []byte, error) { var ( @@ -544,7 +555,7 @@ func (w *mockWallet) MuSig2CombineSig(_ context.Context, sessionID [32]byte, } // MuSig2Cleanup removes a session from memory to free up resources. -func (w *mockWallet) MuSig2Cleanup(_ context.Context, +func (w *mockSigner) MuSig2Cleanup(_ context.Context, sessionID [32]byte) error { w.Lock() From 85f81be29afecab7216528d39852eef438a553f1 Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Wed, 28 Aug 2024 12:23:27 +0200 Subject: [PATCH 2/2] multi: bump lnd compile time dependency to v0.18.4-beta --- account/mock_test.go | 15 +++++++++ gen/Dockerfile | 2 +- go.mod | 27 ++++++++-------- go.sum | 54 +++++++++++++++++--------------- internal/test/lightning_mock.go | 8 +---- internal/test/mock_interfaces.go | 50 +++++++++++++++++++++++++++++ internal/test/signer_mock.go | 9 ++++++ internal/test/walletkit_mock.go | 7 +++++ poolscript/script.go | 3 ++ tools/Dockerfile | 2 +- 10 files changed, 129 insertions(+), 48 deletions(-) diff --git a/account/mock_test.go b/account/mock_test.go index 79a7ab758..131d82fff 100644 --- a/account/mock_test.go +++ b/account/mock_test.go @@ -25,6 +25,7 @@ import ( "github.com/lightningnetwork/lnd/chainntnfs" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" + "github.com/lightningnetwork/lnd/lnrpc/chainrpc" "github.com/lightningnetwork/lnd/lnrpc/signrpc" "github.com/lightningnetwork/lnd/lnrpc/walletrpc" "github.com/lightningnetwork/lnd/lnwallet" @@ -258,6 +259,13 @@ func newMockWallet() *mockWallet { } } +func (w *mockWallet) RawClientWithMacAuth( + ctx context.Context) (context.Context, time.Duration, + walletrpc.WalletKitClient) { + + return ctx, 0, nil +} + func (w *mockWallet) DeriveNextKey(ctx context.Context, family int32) (*keychain.KeyDescriptor, error) { @@ -591,6 +599,13 @@ func newMockChainNotifier() *mockChainNotifier { } } +func (n *mockChainNotifier) RawClientWithMacAuth( + ctx context.Context) (context.Context, time.Duration, + chainrpc.ChainNotifierClient) { + + return ctx, 0, nil +} + func (n *mockChainNotifier) RegisterConfirmationsNtfn(ctx context.Context, txid *chainhash.Hash, pkScript []byte, numConfs, heightHint int32, opts ...lndclient.NotifierOption) (chan *chainntnfs.TxConfirmation, diff --git a/gen/Dockerfile b/gen/Dockerfile index 1209bcc5c..c9c7ff6c5 100644 --- a/gen/Dockerfile +++ b/gen/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.22.3-bookworm +FROM golang:1.22.6-bookworm RUN go install go.uber.org/mock/mockgen@v0.4.0 diff --git a/go.mod b/go.mod index a2454949d..8367fd6bb 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module github.com/lightninglabs/pool require ( - github.com/btcsuite/btcd v0.24.2-beta.rc1.0.20240403021926-ae5533602c46 - github.com/btcsuite/btcd/btcec/v2 v2.3.3 + github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53 + github.com/btcsuite/btcd/btcec/v2 v2.3.4 github.com/btcsuite/btcd/btcutil v1.1.5 github.com/btcsuite/btcd/btcutil/psbt v1.1.8 github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f - github.com/btcsuite/btcwallet v0.16.10-0.20240410030101-6fe19a472a62 + github.com/btcsuite/btcwallet v0.16.10-0.20240809133323-7d3434c65ae2 github.com/btcsuite/btcwallet/wallet/txrules v1.2.1 github.com/btcsuite/btcwallet/wtxmgr v1.5.3 github.com/davecgh/go-spew v1.1.1 @@ -15,12 +15,13 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 github.com/jessevdk/go-flags v1.4.0 github.com/lightninglabs/aperture v0.3.2-beta - github.com/lightninglabs/lndclient v0.18.0-1 + github.com/lightninglabs/lndclient v0.18.4-0 github.com/lightninglabs/pool/auctioneerrpc v1.1.2 github.com/lightninglabs/pool/poolrpc v1.0.0 - github.com/lightningnetwork/lnd v0.18.0-beta.1 + github.com/lightningnetwork/lnd v0.18.3-beta.rc3.0.20241011124628-ca3bde901eb8 github.com/lightningnetwork/lnd/cert v1.2.2 - github.com/lightningnetwork/lnd/kvdb v1.4.8 + github.com/lightningnetwork/lnd/fn v1.2.1 + github.com/lightningnetwork/lnd/kvdb v1.4.10 github.com/lightningnetwork/lnd/tlv v1.2.6 github.com/lightningnetwork/lnd/tor v1.1.2 github.com/stretchr/testify v1.9.0 @@ -93,10 +94,11 @@ require ( 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.3.1 // indirect github.com/jackpal/gateway v1.0.5 // indirect github.com/jackpal/go-nat-pmp v0.0.0-20170405195558-28a68d0c24ad // indirect github.com/jonboulle/clockwork v0.2.2 // indirect - github.com/jrick/logrotate v1.0.0 // indirect + github.com/jrick/logrotate v1.1.2 // indirect github.com/json-iterator/go v1.1.11 // indirect github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4 // indirect github.com/kkdai/bstream v1.0.0 // indirect @@ -104,12 +106,11 @@ require ( github.com/lightninglabs/gozmq v0.0.0-20191113021534-d20a764486bf // indirect github.com/lightninglabs/neutrino v0.16.1-0.20240425105051-602843d34ffd // indirect github.com/lightninglabs/neutrino/cache v1.1.2 // indirect - github.com/lightningnetwork/lightning-onion v1.2.1-0.20230823005744-06182b1d7d2f // indirect + github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb // indirect github.com/lightningnetwork/lnd/clock v1.1.1 // indirect - github.com/lightningnetwork/lnd/fn v1.0.5 // indirect - github.com/lightningnetwork/lnd/healthcheck v1.2.4 // indirect + github.com/lightningnetwork/lnd/healthcheck v1.2.5 // indirect github.com/lightningnetwork/lnd/queue v1.1.1 // indirect - github.com/lightningnetwork/lnd/sqldb v1.0.2 // indirect + github.com/lightningnetwork/lnd/sqldb v1.0.4 // indirect github.com/lightningnetwork/lnd/ticker v1.1.1 // indirect github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -185,7 +186,7 @@ require ( modernc.org/libc v1.49.3 // indirect modernc.org/mathutil v1.6.0 // indirect modernc.org/memory v1.8.0 // indirect - modernc.org/sqlite v1.29.8 // indirect + modernc.org/sqlite v1.29.10 // indirect modernc.org/strutil v1.2.0 // indirect modernc.org/token v1.1.0 // indirect sigs.k8s.io/yaml v1.2.0 // indirect @@ -199,4 +200,4 @@ replace github.com/lightninglabs/pool/auctioneerrpc => ./auctioneerrpc replace github.com/lightninglabs/pool/poolrpc => ./poolrpc -go 1.22.3 +go 1.22.6 diff --git a/go.sum b/go.sum index 1b4513bcf..66e6a4bc0 100644 --- a/go.sum +++ b/go.sum @@ -646,12 +646,12 @@ github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= -github.com/btcsuite/btcd v0.24.2-beta.rc1.0.20240403021926-ae5533602c46 h1:tjpNTdZNQqE14menwDGAxWfzN0DFHVTXFEyEL8yvA/4= -github.com/btcsuite/btcd v0.24.2-beta.rc1.0.20240403021926-ae5533602c46/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= +github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53 h1:XOZ/wRGHkKv0AqxfDks5IkzaQ1Ge6fq322ZOOG5VIkU= +github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53/go.mod h1:zHK7t7sw8XbsCkD64WePHE3r3k9/XoGAcf6mXV14c64= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.3 h1:6+iXlDKE8RMtKsvK0gshlXIuPbyWM/h84Ensb7o3sC0= -github.com/btcsuite/btcd/btcec/v2 v2.3.3/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= github.com/btcsuite/btcd/btcutil v1.1.5 h1:+wER79R5670vs/ZusMTF1yTcRYE5GUsFbdjdisflzM8= @@ -665,8 +665,8 @@ github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtyd github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcwallet v0.16.10-0.20240410030101-6fe19a472a62 h1:MtcTVTcDbGdTJhfDc7LLikojyl0PYtSRNLwoRaLVbWI= -github.com/btcsuite/btcwallet v0.16.10-0.20240410030101-6fe19a472a62/go.mod h1:2C3Q/MhYAKmk7F+Tey6LfKtKRTdQsrCf8AAAzzDPmH4= +github.com/btcsuite/btcwallet v0.16.10-0.20240809133323-7d3434c65ae2 h1:qa4Avm7p97JroZZyMJADbEb9u853pjleJYSeitENvLc= +github.com/btcsuite/btcwallet v0.16.10-0.20240809133323-7d3434c65ae2/go.mod h1:X2xDre+j1QphTRo54y2TikUzeSvreL1t1aMXrD8Kc5A= github.com/btcsuite/btcwallet/wallet/txauthor v1.3.4 h1:poyHFf7+5+RdxNp5r2T6IBRD7RyraUsYARYbp/7t4D8= github.com/btcsuite/btcwallet/wallet/txauthor v1.3.4/go.mod h1:GETGDQuyq+VFfH1S/+/7slLM/9aNa4l7P4ejX6dJfb0= github.com/btcsuite/btcwallet/wallet/txrules v1.2.1 h1:UZo7YRzdHbwhK7Rhv3PO9bXgTxiOH45edK5qdsdiatk= @@ -1026,6 +1026,8 @@ github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQ 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.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= +github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= 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= @@ -1039,8 +1041,9 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0 h1:lQ1bL/n9mBNeIXoTUoYRlK4dHuNJVofX9oWqBtPnSzI= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/jrick/logrotate v1.1.2 h1:6ePk462NCX7TfKtNp5JJ7MbA2YIslkpfgP03TlTYMN0= +github.com/jrick/logrotate v1.1.2/go.mod h1:f9tdWggSVK3iqavGpyvegq5IhNois7KXmasU6/N96OQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= @@ -1104,32 +1107,32 @@ github.com/lightninglabs/aperture v0.3.2-beta h1:J2GQwBmSHxpr5VOatXbgrTogF/qN2l6 github.com/lightninglabs/aperture v0.3.2-beta/go.mod h1:M/5dPzHjHvuYXQuxzicqaGiCclHUvKW6N0ay1t/HGiM= github.com/lightninglabs/gozmq v0.0.0-20191113021534-d20a764486bf h1:HZKvJUHlcXI/f/O0Avg7t8sqkPo78HFzjmeYFl6DPnc= github.com/lightninglabs/gozmq v0.0.0-20191113021534-d20a764486bf/go.mod h1:vxmQPeIQxPf6Jf9rM8R+B4rKBqLA2AjttNxkFBL2Plk= -github.com/lightninglabs/lndclient v0.18.0-1 h1:b9ur24NTbNRUOfotkhio6SAlkvXADLz9k7QLIlLYpSk= -github.com/lightninglabs/lndclient v0.18.0-1/go.mod h1:GBIttLpj+W82XrZrFvQ1gpQH074aTcwisP/zvdGbqE4= +github.com/lightninglabs/lndclient v0.18.4-0 h1:TdorvV9UIw3fjZrNpVKn3fpsOdw2KWF2Eqdx7+++lcY= +github.com/lightninglabs/lndclient v0.18.4-0/go.mod h1:LbINSPfKEdZuTGqqJ+ZmUxXWNvUCaDqrZeJ7/Al0Z3Y= github.com/lightninglabs/neutrino v0.16.1-0.20240425105051-602843d34ffd h1:D8aRocHpoCv43hL8egXEMYyPmyOiefFHZ66338KQB2s= github.com/lightninglabs/neutrino v0.16.1-0.20240425105051-602843d34ffd/go.mod h1:x3OmY2wsA18+Kc3TSV2QpSUewOCiscw2mKpXgZv2kZk= github.com/lightninglabs/neutrino/cache v1.1.2 h1:C9DY/DAPaPxbFC+xNNEI/z1SJY9GS3shmlu5hIQ798g= github.com/lightninglabs/neutrino/cache v1.1.2/go.mod h1:XJNcgdOw1LQnanGjw8Vj44CvguYA25IMKjWFZczwZuo= 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/lightningnetwork/lightning-onion v1.2.1-0.20230823005744-06182b1d7d2f h1:Pua7+5TcFEJXIIZ1I2YAUapmbcttmLj4TTi786bIi3s= -github.com/lightningnetwork/lightning-onion v1.2.1-0.20230823005744-06182b1d7d2f/go.mod h1:c0kvRShutpj3l6B9WtTsNTBUtjSmjZXbJd9ZBRQOSKI= -github.com/lightningnetwork/lnd v0.18.0-beta.1 h1:7DpRre4rtUmLim4JC5oPd3KEd1Q3QpWTH6jQgSOGNYM= -github.com/lightningnetwork/lnd v0.18.0-beta.1/go.mod h1:1SA9iv9rZddNAcfP38SN9lNSVT1zf5aqmukLUoomjDU= +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.18.3-beta.rc3.0.20241011124628-ca3bde901eb8 h1:+z0s8M0QItH51qMPgFGlRvi6uBltbURQj6u1srTyRb4= +github.com/lightningnetwork/lnd v0.18.3-beta.rc3.0.20241011124628-ca3bde901eb8/go.mod h1:gzVQkOCZxTLzlUPqnI6t68FVGLbiO6Jj+TcLb4b78n0= 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= github.com/lightningnetwork/lnd/clock v1.1.1/go.mod h1:mGnAhPyjYZQJmebS7aevElXKTFDuO+uNFFfMXK1W8xQ= -github.com/lightningnetwork/lnd/fn v1.0.5 h1:ffDgMSn83avw6rNzxhbt6w5/2oIrwQKTPGfyaLupZtE= -github.com/lightningnetwork/lnd/fn v1.0.5/go.mod h1:P027+0CyELd92H9gnReUkGGAqbFA1HwjHWdfaDFD51U= -github.com/lightningnetwork/lnd/healthcheck v1.2.4 h1:lLPLac+p/TllByxGSlkCwkJlkddqMP5UCoawCj3mgFQ= -github.com/lightningnetwork/lnd/healthcheck v1.2.4/go.mod h1:G7Tst2tVvWo7cx6mSBEToQC5L1XOGxzZTPB29g9Rv2I= -github.com/lightningnetwork/lnd/kvdb v1.4.8 h1:xH0a5Vi1yrcZ5BEeF2ba3vlKBRxrL9uYXlWTjOjbNTY= -github.com/lightningnetwork/lnd/kvdb v1.4.8/go.mod h1:J2diNABOoII9UrMnxXS5w7vZwP7CA1CStrl8MnIrb3A= +github.com/lightningnetwork/lnd/fn v1.2.1 h1:pPsVGrwi9QBwdLJzaEGK33wmiVKOxs/zc8H7+MamFf0= +github.com/lightningnetwork/lnd/fn v1.2.1/go.mod h1:SyFohpVrARPKH3XVAJZlXdVe+IwMYc4OMAvrDY32kw0= +github.com/lightningnetwork/lnd/healthcheck v1.2.5 h1:aTJy5xeBpcWgRtW/PGBDe+LMQEmNm/HQewlQx2jt7OA= +github.com/lightningnetwork/lnd/healthcheck v1.2.5/go.mod h1:G7Tst2tVvWo7cx6mSBEToQC5L1XOGxzZTPB29g9Rv2I= +github.com/lightningnetwork/lnd/kvdb v1.4.10 h1:vK89IVv1oVH9ubQWU+EmoCQFeVRaC8kfmOrqHbY5zoY= +github.com/lightningnetwork/lnd/kvdb v1.4.10/go.mod h1:J2diNABOoII9UrMnxXS5w7vZwP7CA1CStrl8MnIrb3A= 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.2 h1:PfuYzScYMD9/QonKo/QvgsbXfTnH5DfldIimkfdW4Bk= -github.com/lightningnetwork/lnd/sqldb v1.0.2/go.mod h1:V2Xl6JNWLTKE97WJnwfs0d0TYJdIQTqK8/3aAwkd3qI= +github.com/lightningnetwork/lnd/sqldb v1.0.4 h1:9cMwPxcrLQG8UmyZO4q8SpR7NmxSwBMbj3AispdcwHg= +github.com/lightningnetwork/lnd/sqldb v1.0.4/go.mod h1:4cQOkdymlZ1znnjuRNvMoatQGJkRneTj2CoPSPaQhWo= 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.2.6 h1:icvQG2yDr6k3ZuZzfRdG3EJp6pHurcuh3R6dg0gv/Mw= @@ -1154,8 +1157,6 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= -github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= @@ -1242,8 +1243,9 @@ github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= @@ -2149,8 +2151,8 @@ modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= -modernc.org/sqlite v1.29.8 h1:nGKglNx9K5v0As+zF0/Gcl1kMkmaU1XynYyq92PbsC8= -modernc.org/sqlite v1.29.8/go.mod h1:lQPm27iqa4UNZpmr4Aor0MH0HkCLbt1huYDfWylLZFk= +modernc.org/sqlite v1.29.10 h1:3u93dz83myFnMilBGCOLbr+HjklS6+5rJLx4q86RDAg= +modernc.org/sqlite v1.29.10/go.mod h1:ItX2a1OVGgNsFh6Dv60JQvGfJfTPHPVpV6DF59akYOA= modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= diff --git a/internal/test/lightning_mock.go b/internal/test/lightning_mock.go index 1e3f54470..fe146d1c3 100644 --- a/internal/test/lightning_mock.go +++ b/internal/test/lightning_mock.go @@ -177,13 +177,7 @@ func (m *MockLightning) AddInvoice(_ context.Context, SignCompact: func(hash []byte) ([]byte, error) { // ecdsa.SignCompact returns a // pubkey-recoverable signature. - sig, err := ecdsa.SignCompact( - privKey, hash, true, - ) - if err != nil { - return nil, fmt.Errorf("can't sign "+ - "the hash: %v", err) - } + sig := ecdsa.SignCompact(privKey, hash, true) return sig, nil }, diff --git a/internal/test/mock_interfaces.go b/internal/test/mock_interfaces.go index 3f889373e..f4233f668 100644 --- a/internal/test/mock_interfaces.go +++ b/internal/test/mock_interfaces.go @@ -25,6 +25,8 @@ import ( chainntnfs "github.com/lightningnetwork/lnd/chainntnfs" input "github.com/lightningnetwork/lnd/input" keychain "github.com/lightningnetwork/lnd/keychain" + chainrpc "github.com/lightningnetwork/lnd/lnrpc/chainrpc" + signrpc "github.com/lightningnetwork/lnd/lnrpc/signrpc" walletrpc "github.com/lightningnetwork/lnd/lnrpc/walletrpc" lnwallet "github.com/lightningnetwork/lnd/lnwallet" chainfee "github.com/lightningnetwork/lnd/lnwallet/chainfee" @@ -164,6 +166,22 @@ func (mr *MockSignerClientMockRecorder) MuSig2Sign(ctx, sessionID, message, clea return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MuSig2Sign", reflect.TypeOf((*MockSignerClient)(nil).MuSig2Sign), ctx, sessionID, message, cleanup) } +// RawClientWithMacAuth mocks base method. +func (m *MockSignerClient) RawClientWithMacAuth(parentCtx context.Context) (context.Context, time.Duration, signrpc.SignerClient) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RawClientWithMacAuth", parentCtx) + ret0, _ := ret[0].(context.Context) + ret1, _ := ret[1].(time.Duration) + ret2, _ := ret[2].(signrpc.SignerClient) + return ret0, ret1, ret2 +} + +// RawClientWithMacAuth indicates an expected call of RawClientWithMacAuth. +func (mr *MockSignerClientMockRecorder) RawClientWithMacAuth(parentCtx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RawClientWithMacAuth", reflect.TypeOf((*MockSignerClient)(nil).RawClientWithMacAuth), parentCtx) +} + // SignMessage mocks base method. func (m *MockSignerClient) SignMessage(ctx context.Context, msg []byte, locator keychain.KeyLocator, opts ...lndclient.SignMessageOption) ([]byte, error) { m.ctrl.T.Helper() @@ -487,6 +505,22 @@ func (mr *MockWalletKitClientMockRecorder) PublishTransaction(ctx, tx, label any return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PublishTransaction", reflect.TypeOf((*MockWalletKitClient)(nil).PublishTransaction), ctx, tx, label) } +// RawClientWithMacAuth mocks base method. +func (m *MockWalletKitClient) RawClientWithMacAuth(parentCtx context.Context) (context.Context, time.Duration, walletrpc.WalletKitClient) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RawClientWithMacAuth", parentCtx) + ret0, _ := ret[0].(context.Context) + ret1, _ := ret[1].(time.Duration) + ret2, _ := ret[2].(walletrpc.WalletKitClient) + return ret0, ret1, ret2 +} + +// RawClientWithMacAuth indicates an expected call of RawClientWithMacAuth. +func (mr *MockWalletKitClientMockRecorder) RawClientWithMacAuth(parentCtx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RawClientWithMacAuth", reflect.TypeOf((*MockWalletKitClient)(nil).RawClientWithMacAuth), parentCtx) +} + // ReleaseOutput mocks base method. func (m *MockWalletKitClient) ReleaseOutput(ctx context.Context, lockID wtxmgr.LockID, op wire.OutPoint) error { m.ctrl.T.Helper() @@ -554,6 +588,22 @@ func (m *MockChainNotifierClient) EXPECT() *MockChainNotifierClientMockRecorder return m.recorder } +// RawClientWithMacAuth mocks base method. +func (m *MockChainNotifierClient) RawClientWithMacAuth(parentCtx context.Context) (context.Context, time.Duration, chainrpc.ChainNotifierClient) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RawClientWithMacAuth", parentCtx) + ret0, _ := ret[0].(context.Context) + ret1, _ := ret[1].(time.Duration) + ret2, _ := ret[2].(chainrpc.ChainNotifierClient) + return ret0, ret1, ret2 +} + +// RawClientWithMacAuth indicates an expected call of RawClientWithMacAuth. +func (mr *MockChainNotifierClientMockRecorder) RawClientWithMacAuth(parentCtx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RawClientWithMacAuth", reflect.TypeOf((*MockChainNotifierClient)(nil).RawClientWithMacAuth), parentCtx) +} + // RegisterBlockEpochNtfn mocks base method. func (m *MockChainNotifierClient) RegisterBlockEpochNtfn(ctx context.Context) (chan int32, chan error, error) { m.ctrl.T.Helper() diff --git a/internal/test/signer_mock.go b/internal/test/signer_mock.go index beb907748..0fa6ff634 100644 --- a/internal/test/signer_mock.go +++ b/internal/test/signer_mock.go @@ -4,12 +4,14 @@ import ( "bytes" "context" "fmt" + "time" "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/wire" "github.com/lightninglabs/lndclient" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" + "github.com/lightningnetwork/lnd/lnrpc/signrpc" ) var ( @@ -47,6 +49,13 @@ type MockSigner struct { var _ lndclient.SignerClient = (*MockSigner)(nil) +func (s *MockSigner) RawClientWithMacAuth( + ctx context.Context) (context.Context, time.Duration, + signrpc.SignerClient) { + + return ctx, 0, nil +} + func (s *MockSigner) SignOutputRaw(_ context.Context, tx *wire.MsgTx, signDescriptors []*lndclient.SignDescriptor, prevOutputs []*wire.TxOut) ([][]byte, error) { diff --git a/internal/test/walletkit_mock.go b/internal/test/walletkit_mock.go index d13595232..4937bf4eb 100644 --- a/internal/test/walletkit_mock.go +++ b/internal/test/walletkit_mock.go @@ -42,6 +42,13 @@ type MockWalletKit struct { var _ lndclient.WalletKitClient = (*MockWalletKit)(nil) +func (m *MockWalletKit) RawClientWithMacAuth( + ctx context.Context) (context.Context, time.Duration, + walletrpc.WalletKitClient) { + + return ctx, 0, nil +} + func (m *MockWalletKit) ListUnspent(context.Context, int32, int32, ...lndclient.ListUnspentOption) ([]*lnwallet.Utxo, error) { diff --git a/poolscript/script.go b/poolscript/script.go index 00b2e0edb..665c20856 100644 --- a/poolscript/script.go +++ b/poolscript/script.go @@ -9,10 +9,12 @@ import ( "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/btcec/v2/schnorr" "github.com/btcsuite/btcd/btcec/v2/schnorr/musig2" + "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/wire" secp "github.com/decred/dcrd/dcrec/secp256k1/v4" "github.com/lightninglabs/lndclient" + "github.com/lightningnetwork/lnd/fn" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lnrpc" @@ -846,6 +848,7 @@ func FundingOutput(commitmentType lnrpc.CommitmentType, ourKey, "remote key %x", ourKey, theirKey) _, fundingOutput, err := input.GenTaprootFundingScript( ourPubKey, theirPubKey, chanSize, + fn.None[chainhash.Hash](), ) if err != nil { return nil, err diff --git a/tools/Dockerfile b/tools/Dockerfile index 17555ef16..03a276891 100644 --- a/tools/Dockerfile +++ b/tools/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.22.3-bookworm +FROM golang:1.22.6-bookworm RUN apt-get update && apt-get install -y git ENV GOCACHE=/tmp/build/.cache