From 7cd8923d2144c9c1339b3f0610342e5492cf31ec Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Fri, 2 May 2025 14:27:08 +0200 Subject: [PATCH 1/2] mod: bump tapd to latest version --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index a7c78cfe7..edf2e6b4c 100644 --- a/go.mod +++ b/go.mod @@ -29,8 +29,8 @@ require ( github.com/lightninglabs/pool v0.6.5-beta.0.20250305125211-4e860ec4e77f github.com/lightninglabs/pool/auctioneerrpc v1.1.3-0.20250305125211-4e860ec4e77f github.com/lightninglabs/pool/poolrpc v1.0.1-0.20250305125211-4e860ec4e77f - github.com/lightninglabs/taproot-assets v0.5.2-0.20250506181734-e63f1a4f4597 - github.com/lightninglabs/taproot-assets/taprpc v1.0.1 + github.com/lightninglabs/taproot-assets v0.5.2-0.20250508000445-bb5a2a6f154a + github.com/lightninglabs/taproot-assets/taprpc v1.0.2 github.com/lightningnetwork/lnd v0.19.0-beta.rc3 github.com/lightningnetwork/lnd/cert v1.2.2 github.com/lightningnetwork/lnd/clock v1.1.1 diff --git a/go.sum b/go.sum index 29384dd74..557328183 100644 --- a/go.sum +++ b/go.sum @@ -506,10 +506,10 @@ github.com/lightninglabs/pool/poolrpc v1.0.1-0.20250305125211-4e860ec4e77f h1:5p github.com/lightninglabs/pool/poolrpc v1.0.1-0.20250305125211-4e860ec4e77f/go.mod h1:lGs2hSVZ+GFpdv3btaIl9icG5/gz7BBRfvmD2iqqNl0= 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.5.2-0.20250506181734-e63f1a4f4597 h1:2gdwdH9HAPWnHk/1gnU7g1imofiw56KAEuLVBmMeoyQ= -github.com/lightninglabs/taproot-assets v0.5.2-0.20250506181734-e63f1a4f4597/go.mod h1:OdeFcj2bnJf6aaYjBB5c8KdNI3aDaEMQpsSu2EqvMlw= -github.com/lightninglabs/taproot-assets/taprpc v1.0.1 h1:aSlCWdJkagx9xa8DqK/pzHYCtY7PokU6wASse3dWayc= -github.com/lightninglabs/taproot-assets/taprpc v1.0.1/go.mod h1:Ccq0t2GsXzOtC8qF0U1ux/yTF5HcBbVrhCb0tb/jObM= +github.com/lightninglabs/taproot-assets v0.5.2-0.20250508000445-bb5a2a6f154a h1:Jd2ned2248idCMgHirLYOtgJQp54GSNMFfOPH8bVSj0= +github.com/lightninglabs/taproot-assets v0.5.2-0.20250508000445-bb5a2a6f154a/go.mod h1:OdeFcj2bnJf6aaYjBB5c8KdNI3aDaEMQpsSu2EqvMlw= +github.com/lightninglabs/taproot-assets/taprpc v1.0.2 h1:LcK62+X7UYGFEwUgGwnKXLdoTOsBPFc6FOYXm7jiFFU= +github.com/lightninglabs/taproot-assets/taprpc v1.0.2/go.mod h1:Ccq0t2GsXzOtC8qF0U1ux/yTF5HcBbVrhCb0tb/jObM= 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.0-beta.rc3 h1:XWMlyZvBrp69AnQqrshLOOPZjOl4hFWR1RD4ceCXt9k= From ab3eb9208bf0fb9d91846b1bc6e68db426f7f250 Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Fri, 2 May 2025 14:27:20 +0200 Subject: [PATCH 2/2] itest: add coop close assertion for grouped channels Makes sure we properly assert the final closing balances of coop closed grouped asset channels. --- itest/assets_test.go | 56 +++++++++++++++++++++++++++++- itest/litd_custom_channels_test.go | 5 +-- 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/itest/assets_test.go b/itest/assets_test.go index 1cb7b3448..2ead8a4ee 100644 --- a/itest/assets_test.go +++ b/itest/assets_test.go @@ -1844,6 +1844,10 @@ func defaultCoOpCloseBalanceCheck(t *testing.T, local, remote *HarnessNode, assetIDs [][]byte, groupKey []byte, universeTap *tapClient, remoteBtcBalance, remoteAssetBalance bool) { + ctxb := context.Background() + ctxt, cancel := context.WithTimeout(ctxb, defaultTimeout) + defer cancel() + // With the channel closed, we'll now assert that the co-op close // transaction was inserted into the local universe. // @@ -1941,10 +1945,34 @@ func defaultCoOpCloseBalanceCheck(t *testing.T, local, remote *HarnessNode, closeTx.TxOut[localAssetIndex].PkScript, ) + // Because we don't exactly know what asset IDs made it into the close + // transaction, we need to fetch the closed channel to find that out. + closedChans, err := local.ClosedChannels( + ctxt, &lnrpc.ClosedChannelsRequest{ + Cooperative: true, + }, + ) + require.NoError(t, err) + require.NotEmpty(t, closedChans.Channels) + + var closedJsonChannel *rfqmsg.JsonAssetChannel + for _, closedChan := range closedChans.Channels { + if closedChan.ClosingTxHash == closeTx.TxHash().String() { + closedJsonChannel = &rfqmsg.JsonAssetChannel{} + err = json.Unmarshal( + closedChan.CustomChannelData, closedJsonChannel, + ) + require.NoError(t, err) + + break + } + } + require.NotNil(t, closedJsonChannel) + // We now verify the arrival of the local balance asset proof at the // universe server. var localAssetCloseOut rfqmsg.JsonCloseOutput - err := json.Unmarshal( + err = json.Unmarshal( localCloseOut.CustomChannelData, &localAssetCloseOut, ) require.NoError(t, err) @@ -1956,6 +1984,19 @@ func defaultCoOpCloseBalanceCheck(t *testing.T, local, remote *HarnessNode, require.Contains(t, assetIDStrings, assetIDStr) + // We only check for a proof if an asset of that asset ID was + // actually in the close output, which might not always be the + // case in grouped asset channels. + localAssetIDs := fn.NewSet[string](fn.Map( + func(t rfqmsg.JsonAssetTranche) string { + return t.AssetID + }, + closedJsonChannel.LocalAssets, + )...) + if !localAssetIDs.Contains(assetIDStr) { + continue + } + assetID, err := hex.DecodeString(assetIDStr) require.NoError(t, err) @@ -1995,6 +2036,19 @@ func defaultCoOpCloseBalanceCheck(t *testing.T, local, remote *HarnessNode, require.Contains(t, assetIDStrings, assetIDStr) + // We only check for a proof if an asset of that asset ID was + // actually in the close output, which might not always be the + // case in grouped asset channels. + remoteAssetIDs := fn.NewSet[string](fn.Map( + func(t rfqmsg.JsonAssetTranche) string { + return t.AssetID + }, + closedJsonChannel.RemoteAssets, + )...) + if !remoteAssetIDs.Contains(assetIDStr) { + continue + } + assetID, err := hex.DecodeString(assetIDStr) require.NoError(t, err) diff --git a/itest/litd_custom_channels_test.go b/itest/litd_custom_channels_test.go index 3372d0d81..a9bcbdf47 100644 --- a/itest/litd_custom_channels_test.go +++ b/itest/litd_custom_channels_test.go @@ -1308,10 +1308,7 @@ func testCustomChannelsGroupTranchesForceClose(ctx context.Context, closeAssetChannelAndAssert( t, net, charlie, dave, chanPointCD, [][]byte{assetID1, assetID2}, groupKey, universeTap, - // TODO(guggero): replace this with - // assertDefaultCoOpCloseBalance(true, true) once we have the - // ability to check the custom data in the closed channel list. - noOpCoOpCloseBalanceCheck, + assertDefaultCoOpCloseBalance(true, true), ) assertSpendableBalance(