From 43dfc21c4470a543a3efb6f2246ff13cd319e2c2 Mon Sep 17 00:00:00 2001 From: keithsue Date: Fri, 3 Jan 2025 15:16:38 +0800 Subject: [PATCH] enhance vault type check --- x/btcbridge/types/asset.go | 5 +++++ x/btcbridge/types/msg_initiate_dkg.go | 19 +++---------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/x/btcbridge/types/asset.go b/x/btcbridge/types/asset.go index b4297d3..55db2de 100644 --- a/x/btcbridge/types/asset.go +++ b/x/btcbridge/types/asset.go @@ -17,3 +17,8 @@ func AssetTypeFromDenom(denom string, p Params) AssetType { return AssetType_ASSET_TYPE_UNSPECIFIED } + +// SupportedAssetTypes returns the currently supported asset types +func SupportedAssetTypes() []AssetType { + return []AssetType{AssetType_ASSET_TYPE_BTC, AssetType_ASSET_TYPE_RUNES} +} diff --git a/x/btcbridge/types/msg_initiate_dkg.go b/x/btcbridge/types/msg_initiate_dkg.go index c0fc9ae..89702ee 100644 --- a/x/btcbridge/types/msg_initiate_dkg.go +++ b/x/btcbridge/types/msg_initiate_dkg.go @@ -2,6 +2,7 @@ package types import ( "encoding/base64" + "slices" errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" @@ -43,22 +44,8 @@ func (m *MsgInitiateDKG) ValidateBasic() error { participants[p.ConsensusPubkey] = true } - if len(m.VaultTypes) == 0 { - return errorsmod.Wrap(ErrInvalidDKGParams, "vault types can not be empty") - } - - vaultTypes := make(map[AssetType]bool) - - for _, t := range m.VaultTypes { - if t == AssetType_ASSET_TYPE_UNSPECIFIED { - return errorsmod.Wrap(ErrInvalidDKGParams, "invalid vault type") - } - - if vaultTypes[t] { - return errorsmod.Wrap(ErrInvalidDKGParams, "duplicate vault type") - } - - vaultTypes[t] = true + if !slices.Equal(m.VaultTypes, SupportedAssetTypes()) { + return errorsmod.Wrap(ErrInvalidDKGParams, "incorrect vault types") } if m.EnableTransfer {