Skip to content

Commit 8a1044b

Browse files
committed
itest: add itest for MinRelayFee check
This commit adds an integration test for the MinRelayFee check. The test ensures that transactions with fees below the minimum relay fee are rejected.
1 parent 8e06572 commit 8a1044b

File tree

4 files changed

+85
-12
lines changed

4 files changed

+85
-12
lines changed

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/btcsuite/btcd/btcec/v2 v2.3.4
88
github.com/btcsuite/btcd/btcutil v1.1.5
99
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0
10-
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f
10+
github.com/btcsuite/btclog v0.0.0-20241003133417-09c4e92e319c
1111
github.com/btcsuite/btcwallet/walletdb v1.4.4
1212
github.com/davecgh/go-spew v1.1.1
1313
github.com/go-errors/errors v1.0.1
@@ -18,16 +18,16 @@ require (
1818
github.com/lightninglabs/lightning-node-connect v0.3.2-alpha.0.20240822142323-ee4e7ff52f83
1919
github.com/lightninglabs/lightning-terminal/autopilotserverrpc v0.0.1
2020
github.com/lightninglabs/lightning-terminal/litrpc v1.0.0
21-
github.com/lightninglabs/lndclient v0.18.4-0
21+
github.com/lightninglabs/lndclient v1.0.1-0.20241029210655-24c5cf716f4c
2222
github.com/lightninglabs/loop v0.28.8-beta.0.20241022072406-1e8ae31ddc27
2323
github.com/lightninglabs/loop/looprpc v1.0.0
2424
github.com/lightninglabs/loop/swapserverrpc v1.0.10
2525
github.com/lightninglabs/pool v0.6.5-beta.0.20241015105339-044cb451b5df
2626
github.com/lightninglabs/pool v0.6.5-beta.0.20241015105339-044cb451b5df
2727
github.com/lightninglabs/pool/auctioneerrpc v1.1.2
2828
github.com/lightninglabs/pool/poolrpc v1.0.0
29-
github.com/lightninglabs/taproot-assets v0.4.2-0.20241022143621-54f007d7cfc3
30-
github.com/lightningnetwork/lnd v0.18.3-beta.rc3.0.20241021112623-6f0d7f9a87d3
29+
github.com/lightninglabs/taproot-assets v0.4.2-0.20241030163343-51a03fdddba6
30+
github.com/lightningnetwork/lnd v0.18.3-beta.rc3.0.20241025090009-615f3d633e61
3131
github.com/lightningnetwork/lnd/cert v1.2.2
3232
github.com/lightningnetwork/lnd/fn v1.2.3
3333
github.com/lightningnetwork/lnd/kvdb v1.4.10

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,8 +1179,8 @@ github.com/lightninglabs/lightning-node-connect v0.3.2-alpha.0.20240822142323-ee
11791179
github.com/lightninglabs/lightning-node-connect v0.3.2-alpha.0.20240822142323-ee4e7ff52f83/go.mod h1:+SasPOt0evcJdfApb/ALTaTz4x3a2/kWy5KqFoTpiX8=
11801180
github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.2 h1:Er1miPZD2XZwcfE4xoS5AILqP1mj7kqnhbBSxW9BDxY=
11811181
github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.2/go.mod h1:antQGRDRJiuyQF6l+k6NECCSImgCpwaZapATth2Chv4=
1182-
github.com/lightninglabs/lndclient v0.18.4-0 h1:TdorvV9UIw3fjZrNpVKn3fpsOdw2KWF2Eqdx7+++lcY=
1183-
github.com/lightninglabs/lndclient v0.18.4-0/go.mod h1:LbINSPfKEdZuTGqqJ+ZmUxXWNvUCaDqrZeJ7/Al0Z3Y=
1182+
github.com/lightninglabs/lndclient v1.0.1-0.20241029210655-24c5cf716f4c h1:fLyqber+dwqYO06tIi9HthrUo6XFfET1hb8ISkRAGpo=
1183+
github.com/lightninglabs/lndclient v1.0.1-0.20241029210655-24c5cf716f4c/go.mod h1:/HLqmZGL9MtP8F1g+laq+L9VrsugBN5tsTct3C5wWCg=
11841184
github.com/lightninglabs/loop v0.28.8-beta.0.20241022072406-1e8ae31ddc27 h1:eZBvG9XvDL0zsUIqFfD7SCk+Ex8rGWEL8j5UQ/aqjco=
11851185
github.com/lightninglabs/loop v0.28.8-beta.0.20241022072406-1e8ae31ddc27/go.mod h1:4B1DqrcOc5Yv9KyclAeQJY9Ah9UMX7RpI4Uru7aEzl4=
11861186
github.com/lightninglabs/loop/looprpc v1.0.0 h1:xry4QPCZShPww660xJm1BVcNFj8etgNeN2vMpfsv3c4=
@@ -1203,18 +1203,18 @@ github.com/lightninglabs/pool/poolrpc v1.0.0 h1:vvosrgNx9WXF4mcHGqLjZOW8wNM0q+BL
12031203
github.com/lightninglabs/pool/poolrpc v1.0.0/go.mod h1:ZqpEpBFRMMBAerMmilEjh27tqauSXDwLaLR0O3jvmMA=
12041204
github.com/lightninglabs/protobuf-go-hex-display v1.34.2-hex-display h1:w7FM5LH9Z6CpKxl13mS48idsu6F+cEZf0lkyiV+Dq9g=
12051205
github.com/lightninglabs/protobuf-go-hex-display v1.34.2-hex-display/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
1206-
github.com/lightninglabs/taproot-assets v0.4.2-0.20241022143621-54f007d7cfc3 h1:TFSJVnDMKwQZpyjEHc3u+5T5Q++XlLM33dABKlLDxfg=
1207-
github.com/lightninglabs/taproot-assets v0.4.2-0.20241022143621-54f007d7cfc3/go.mod h1:IlJS9fgVouE3sQuWnEq4DMMVvaKTN3qM+rucyY6BR9M=
1206+
github.com/lightninglabs/taproot-assets v0.4.2-0.20241030163343-51a03fdddba6 h1:LIZglsCZNcMlyv4zZNUEw+Ojlku5SpZEJelmH1eS3bM=
1207+
github.com/lightninglabs/taproot-assets v0.4.2-0.20241030163343-51a03fdddba6/go.mod h1:/utOjTqIngeQkC/gRWWYbASXlCDfbMfID/ShaoEUomY=
12081208
github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb h1:yfM05S8DXKhuCBp5qSMZdtSwvJ+GFzl94KbXMNB1JDY=
12091209
github.com/lightningnetwork/lightning-onion v1.2.1-0.20240712235311-98bd56499dfb/go.mod h1:c0kvRShutpj3l6B9WtTsNTBUtjSmjZXbJd9ZBRQOSKI=
1210-
github.com/lightningnetwork/lnd v0.18.3-beta.rc3.0.20241021112623-6f0d7f9a87d3 h1:J3wuk/7KNrtYZFcYeMA8enJnTTT1Nhbxodt1nPZDVpM=
1211-
github.com/lightningnetwork/lnd v0.18.3-beta.rc3.0.20241021112623-6f0d7f9a87d3/go.mod h1:BcBxbCOsAm7Fq3HNdN5qFKngDDO4vYHKC1LybDW8rxY=
1210+
github.com/lightningnetwork/lnd v0.18.3-beta.rc3.0.20241025090009-615f3d633e61 h1:EcBM2tz+iyspYRFaDVjUe5a2bkuBWFxOWD2mzdCraUc=
1211+
github.com/lightningnetwork/lnd v0.18.3-beta.rc3.0.20241025090009-615f3d633e61/go.mod h1:q2DlXwj6ev8TMbo+CvfJ3BIrqw42HFM/fSBoyCFrjdc=
12121212
github.com/lightningnetwork/lnd/cert v1.2.2 h1:71YK6hogeJtxSxw2teq3eGeuy4rHGKcFf0d0Uy4qBjI=
12131213
github.com/lightningnetwork/lnd/cert v1.2.2/go.mod h1:jQmFn/Ez4zhDgq2hnYSw8r35bqGVxViXhX6Cd7HXM6U=
12141214
github.com/lightningnetwork/lnd/clock v1.1.1 h1:OfR3/zcJd2RhH0RU+zX/77c0ZiOnIMsDIBjgjWdZgA0=
12151215
github.com/lightningnetwork/lnd/clock v1.1.1/go.mod h1:mGnAhPyjYZQJmebS7aevElXKTFDuO+uNFFfMXK1W8xQ=
1216-
github.com/lightningnetwork/lnd/fn v1.2.1 h1:pPsVGrwi9QBwdLJzaEGK33wmiVKOxs/zc8H7+MamFf0=
1217-
github.com/lightningnetwork/lnd/fn v1.2.1/go.mod h1:SyFohpVrARPKH3XVAJZlXdVe+IwMYc4OMAvrDY32kw0=
1216+
github.com/lightningnetwork/lnd/fn v1.2.3 h1:Q1OrgNSgQynVheBNa16CsKVov1JI5N2AR6G07x9Mles=
1217+
github.com/lightningnetwork/lnd/fn v1.2.3/go.mod h1:SyFohpVrARPKH3XVAJZlXdVe+IwMYc4OMAvrDY32kw0=
12181218
github.com/lightningnetwork/lnd/healthcheck v1.2.5 h1:aTJy5xeBpcWgRtW/PGBDe+LMQEmNm/HQewlQx2jt7OA=
12191219
github.com/lightningnetwork/lnd/healthcheck v1.2.5/go.mod h1:G7Tst2tVvWo7cx6mSBEToQC5L1XOGxzZTPB29g9Rv2I=
12201220
github.com/lightningnetwork/lnd/kvdb v1.4.10 h1:vK89IVv1oVH9ubQWU+EmoCQFeVRaC8kfmOrqHbY5zoY=

itest/litd_custom_channels_test.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/lightningnetwork/lnd/lntest"
2828
"github.com/lightningnetwork/lnd/lntest/port"
2929
"github.com/lightningnetwork/lnd/lntest/wait"
30+
"github.com/lightningnetwork/lnd/lnwallet/chainfee"
3031
"github.com/lightningnetwork/lnd/lnwire"
3132
"github.com/stretchr/testify/require"
3233
)
@@ -2637,3 +2638,71 @@ func testCustomChannelsOraclePricing(_ context.Context,
26372638
noOpCoOpCloseBalanceCheck,
26382639
)
26392640
}
2641+
2642+
// testCustomChannelsFee tests the whether the custom channel funding process
2643+
// fails if the proposed fee rate is lower than the minimum relay fee.
2644+
func testCustomChannelsFee(_ context.Context,
2645+
net *NetworkHarness, t *harnessTest) {
2646+
2647+
ctxb := context.Background()
2648+
lndArgs := slices.Clone(lndArgsTemplate)
2649+
litdArgs := slices.Clone(litdArgsTemplate)
2650+
2651+
zane, err := net.NewNode(
2652+
t.t, "Zane", lndArgs, false, true, litdArgs...,
2653+
)
2654+
require.NoError(t.t, err)
2655+
2656+
litdArgs = append(litdArgs, fmt.Sprintf(
2657+
"--taproot-assets.proofcourieraddr=%s://%s",
2658+
proof.UniverseRpcCourierType, zane.Cfg.LitAddr(),
2659+
))
2660+
2661+
charlie, err := net.NewNode(
2662+
t.t, "Charlie", lndArgs, false, true, litdArgs...,
2663+
)
2664+
require.NoError(t.t, err)
2665+
dave, err := net.NewNode(t.t, "Dave", lndArgs, false, true, litdArgs...)
2666+
require.NoError(t.t, err)
2667+
2668+
nodes := []*HarnessNode{charlie, dave}
2669+
connectAllNodes(t.t, net, nodes)
2670+
fundAllNodes(t.t, net, nodes)
2671+
2672+
charlieTap := newTapClient(t.t, charlie)
2673+
daveTap := newTapClient(t.t, dave)
2674+
2675+
// Mint an assets on Charlie and sync Dave to Charlie as the universe.
2676+
mintedAssets := itest.MintAssetsConfirmBatch(
2677+
t.t, t.lndHarness.Miner.Client, charlieTap,
2678+
[]*mintrpc.MintAssetRequest{
2679+
{
2680+
Asset: itestAsset,
2681+
},
2682+
},
2683+
)
2684+
cents := mintedAssets[0]
2685+
assetID := cents.AssetGenesis.AssetId
2686+
2687+
t.Logf("Minted %d lightning cents, syncing universes...", cents.Amount)
2688+
syncUniverses(t.t, charlieTap, dave)
2689+
t.Logf("Universes synced between all nodes, distributing assets...")
2690+
2691+
// Fund a channel with a fee rate that is too low.
2692+
tooLowFeeRate := uint32(1)
2693+
tooLowFeeRateAmount := chainfee.SatPerVByte(tooLowFeeRate)
2694+
2695+
_, err = charlieTap.FundChannel(
2696+
ctxb, &tchrpc.FundChannelRequest{
2697+
AssetAmount: cents.Amount,
2698+
AssetId: assetID,
2699+
PeerPubkey: daveTap.node.PubKey[:],
2700+
FeeRateSatPerVbyte: tooLowFeeRate,
2701+
PushSat: 0,
2702+
},
2703+
)
2704+
2705+
errStr := fmt.Sprintf("fee rate %s too low, min_relay_fee: ",
2706+
tooLowFeeRateAmount.FeePerKWeight())
2707+
require.ErrorContains(t.t, err, errStr)
2708+
}

itest/litd_test_list_on_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,8 @@ var allTestCases = []*testCase{
6060
name: "test custom channels oracle pricing",
6161
test: testCustomChannelsOraclePricing,
6262
},
63+
{
64+
name: "test custom channels fee",
65+
test: testCustomChannelsFee,
66+
},
6367
}

0 commit comments

Comments
 (0)