diff --git a/assets/client.go b/assets/client.go index 7eef98b0..4de89eb3 100644 --- a/assets/client.go +++ b/assets/client.go @@ -289,7 +289,11 @@ func getSatsFromAssetAmt(assetAmt uint64, assetRate *rfqrpc.FixedPoint) ( assetUnits := rfqmath.NewBigIntFixedPoint(assetAmt, 0) - msatAmt := rfqmath.UnitsToMilliSatoshi(assetUnits, *rateFP) + msatAmt, err := rfqmath.UnitsToMilliSatoshi(assetUnits, *rateFP) + if err != nil { + return 0, fmt.Errorf("cannot convert asset amount to msat: %w", + err) + } return msatAmt.ToSatoshis(), nil } diff --git a/assets/client_test.go b/assets/client_test.go index 5941ae44..49687e76 100644 --- a/assets/client_test.go +++ b/assets/client_test.go @@ -380,6 +380,12 @@ func TestGetRfqTimeoutSeconds(t *testing.T) { } func TestGetSatsFromAssetAmt(t *testing.T) { + msatPerBTC := uint64(lnwire.NewMSatFromSatoshis( + btcutil.SatoshiPerBitcoin, + )) + + maxAssetAmt := math.MaxUint64 / msatPerBTC + tests := []struct { assetAmt uint64 assetRate *rfqrpc.FixedPoint @@ -437,6 +443,23 @@ func TestGetSatsFromAssetAmt(t *testing.T) { }, expectError: true, }, + { + assetAmt: maxAssetAmt, + assetRate: &rfqrpc.FixedPoint{ + Coefficient: "1", Scale: 0, + }, + expected: btcutil.Amount( + maxAssetAmt * uint64(btcutil.SatoshiPerBitcoin), + ), + expectError: false, + }, + { + assetAmt: maxAssetAmt + 1, + assetRate: &rfqrpc.FixedPoint{ + Coefficient: "1", Scale: 0, + }, + expectError: true, + }, } for _, test := range tests { diff --git a/docs/release-notes/release-notes-next.md b/docs/release-notes/release-notes-next.md index 1f889227..5aa8195f 100644 --- a/docs/release-notes/release-notes-next.md +++ b/docs/release-notes/release-notes-next.md @@ -26,6 +26,9 @@ #### Maintenance +* Updated the Taproot Assets dependency to v0.8.1; asset conversions that + overflow a millisatoshi amount are now safely rejected. + * Added a CI gate and repository agent guidance requiring every pull request to include a non-empty entry in the next release notes unless it carries the `no-changelog` label. diff --git a/go.mod b/go.mod index 4a32aa7d..8ca9bde6 100644 --- a/go.mod +++ b/go.mod @@ -22,8 +22,8 @@ require ( github.com/lightninglabs/lndclient v0.21.0-2 github.com/lightninglabs/loop/looprpc v1.0.7 github.com/lightninglabs/loop/swapserverrpc v1.0.14 - github.com/lightninglabs/taproot-assets v0.8.0 - github.com/lightninglabs/taproot-assets/taprpc v1.1.0 + github.com/lightninglabs/taproot-assets v0.8.1 + github.com/lightninglabs/taproot-assets/taprpc v1.2.0 github.com/lightningnetwork/lnd v0.21.0-beta 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 9ba8984a..ef055426 100644 --- a/go.sum +++ b/go.sum @@ -392,10 +392,10 @@ github.com/lightninglabs/neutrino/cache v1.1.3 h1:rgnabC41W+XaPuBTQrdeFjFCCAVKh1 github.com/lightninglabs/neutrino/cache v1.1.3/go.mod h1:qxkJb+pUxR5p84jl5uIGFCR4dGdFkhNUwMSxw3EUWls= 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.8.0 h1:8Mky342/f5hbVm94Owj0YveIdKuTasJwFB6uqAa5/gc= -github.com/lightninglabs/taproot-assets v0.8.0/go.mod h1:SEoMeNzpENVUPnvuqllkDhl7QvNE74+Dtb/dnkbrygg= -github.com/lightninglabs/taproot-assets/taprpc v1.1.0 h1:Oum7ddGygrEaT+NHqpaQI8U6pV5jJUH4hvhezl5y00k= -github.com/lightninglabs/taproot-assets/taprpc v1.1.0/go.mod h1:X7XP753o8xCgjVI2mRu1Tvpyk3k4uybGDMFhpF6IRxI= +github.com/lightninglabs/taproot-assets v0.8.1 h1:E0xbHcQ/B+KmMZz6o3nqiYSMcDs2Vu0aWd+FuomDFYg= +github.com/lightninglabs/taproot-assets v0.8.1/go.mod h1:iq4ZybixussUx6NUaMYyo20uXMptibhbVLM3y/0ihIc= +github.com/lightninglabs/taproot-assets/taprpc v1.2.0 h1:CDiGyo19DTUyJcZTdhp5d6AQBz94N+mpGQNO0kEcnPk= +github.com/lightninglabs/taproot-assets/taprpc v1.2.0/go.mod h1:RkBWxHKN8JpPtoa/yBK5qZW5svz5pR9GAOT2rUP7oOI= github.com/lightningnetwork/lightning-onion v1.3.0 h1:FqILgHjD6euc/Muo1VOzZ4+XDPuFnw6EYROBq0rR/5c= github.com/lightningnetwork/lightning-onion v1.3.0/go.mod h1:nP85zMHG7c0si/eHBbSQpuDCtnIXfSvFrK3tW6YWzmU= github.com/lightningnetwork/lnd v0.21.0-beta h1:bDP5UH15E7DVGTztsmBPQLqgyilq5EXDrglvQFmRc3U=