diff --git a/x/vaas/consumer/types/events.go b/x/vaas/consumer/types/events.go index ccc2616..7487306 100644 --- a/x/vaas/consumer/types/events.go +++ b/x/vaas/consumer/types/events.go @@ -1,18 +1,5 @@ package types const ( - AttributeConsumerHeight = "consumer_height" - AttributeTimestamp = "timestamp" - - EventTypeFeeDistribution = "fee_distribution" - EventTypeVSCMatured = "vsc_matured" - EventTypeConsumerSlashRequest = "consumer_slash_request" - EventTypeFeeTransferChannelOpened = "fee_transfer_channel_opened" - - AttributeDistributionCurrentHeight = "current_distribution_height" - //#nosec G101 -- (false positive) this is not a hardcoded credential - AttributeDistributionNextHeight = "next_distribution_height" - AttributeDistributionFraction = "distribution_fraction" - AttributeDistributionTotal = "total" - AttributeDistributionToProvider = "provider_amount" + EventTypeConsumerSlashRequest = "consumer_slash_request" ) diff --git a/x/vaas/consumer/types/genesis.go b/x/vaas/consumer/types/genesis.go index 6cac60b..192c7dd 100644 --- a/x/vaas/consumer/types/genesis.go +++ b/x/vaas/consumer/types/genesis.go @@ -11,8 +11,6 @@ import ( ) // NewRestartGenesisState returns a consumer GenesisState that has already been established. -// Note: OutstandingDowntimeSlashing and LastTransmissionBlockHeight are deprecated -// as slash and distribution features have been removed. func NewRestartGenesisState( clientID string, initValSet []abci.ValidatorUpdate, diff --git a/x/vaas/consumer/types/keys.go b/x/vaas/consumer/types/keys.go index 82f4c15..68505ca 100644 --- a/x/vaas/consumer/types/keys.go +++ b/x/vaas/consumer/types/keys.go @@ -21,17 +21,17 @@ const ( // Collection key prefixes for use with cosmossdk.io/collections var ( PortPrefix = collections.NewPrefix(0) - UnbondingTimePrefix = collections.NewPrefix(2) - ProviderClientIDPrefix = collections.NewPrefix(3) - PendingChangesPrefix = collections.NewPrefix(5) - PreVAASPrefix = collections.NewPrefix(7) - InitialValSetPrefix = collections.NewPrefix(8) - HistoricalInfoPrefix = collections.NewPrefix(11) - HeightValsetUpdateIDPrefix = collections.NewPrefix(13) - CrossChainValidatorPrefix = collections.NewPrefix(16) - InitGenesisHeightPrefix = collections.NewPrefix(17) - PrevStandaloneChainPrefix = collections.NewPrefix(19) - ParametersPrefix = collections.NewPrefix(22) - HighestValsetUpdateIDPrefix = collections.NewPrefix(23) - ConsumerDebtPrefix = collections.NewPrefix(24) + UnbondingTimePrefix = collections.NewPrefix(1) + ProviderClientIDPrefix = collections.NewPrefix(2) + PendingChangesPrefix = collections.NewPrefix(3) + PreVAASPrefix = collections.NewPrefix(4) + InitialValSetPrefix = collections.NewPrefix(5) + HistoricalInfoPrefix = collections.NewPrefix(6) + HeightValsetUpdateIDPrefix = collections.NewPrefix(7) + CrossChainValidatorPrefix = collections.NewPrefix(8) + InitGenesisHeightPrefix = collections.NewPrefix(9) + PrevStandaloneChainPrefix = collections.NewPrefix(10) + ParametersPrefix = collections.NewPrefix(11) + HighestValsetUpdateIDPrefix = collections.NewPrefix(12) + ConsumerDebtPrefix = collections.NewPrefix(13) ) diff --git a/x/vaas/provider/keeper/consumer_lifecycle.go b/x/vaas/provider/keeper/consumer_lifecycle.go index c777842..9b54edc 100644 --- a/x/vaas/provider/keeper/consumer_lifecycle.go +++ b/x/vaas/provider/keeper/consumer_lifecycle.go @@ -412,7 +412,7 @@ func (k Keeper) DeleteConsumerChain(ctx sdk.Context, consumerId string) (err err // TODO (PERMISSIONLESS) add newly-added state to be deleted // Note that we do not delete ConsumerIdToChainIdKey and ConsumerIdToPhase, as well - // as consumer metadata, initialization and power-shaping parameters. + // as consumer metadata and initialization parameters. // This is to enable block explorers and front ends to show information of // consumer chains that were removed without needing an archive node. diff --git a/x/vaas/provider/keeper/msg_server.go b/x/vaas/provider/keeper/msg_server.go index a2e0d7e..012a0f9 100644 --- a/x/vaas/provider/keeper/msg_server.go +++ b/x/vaas/provider/keeper/msg_server.go @@ -259,7 +259,7 @@ func (k msgServer) CreateConsumer(goCtx context.Context, msg *types.MsgCreateCon return &resp, nil } -// UpdateConsumer updates the metadata, power-shaping or initialization parameters of a consumer chain +// UpdateConsumer updates the metadata or initialization parameters of a consumer chain func (k msgServer) UpdateConsumer(goCtx context.Context, msg *types.MsgUpdateConsumer) (*types.MsgUpdateConsumerResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) resp := types.MsgUpdateConsumerResponse{} diff --git a/x/vaas/provider/keeper/relay.go b/x/vaas/provider/keeper/relay.go index 237f579..46849fd 100644 --- a/x/vaas/provider/keeper/relay.go +++ b/x/vaas/provider/keeper/relay.go @@ -307,15 +307,10 @@ func (k Keeper) QueueVSCPackets(ctx sdk.Context) error { return nil } -// BeginBlockCIS contains the BeginBlock logic needed for the Consumer Initiated Slashing sub-protocol. -// Slash throttling has been removed. -func (k Keeper) BeginBlockCIS(ctx sdk.Context) { - // Slash throttling removed - no-op -} - -// EndBlockCIS contains the EndBlock logic needed for -// the Consumer Initiated Slashing sub-protocol -func (k Keeper) EndBlockCIS(ctx sdk.Context) { +// EndBlockTrackValsetUpdates records the height-to-VSC-ID mapping for the +// next block and prunes per-consumer key-assignment entries that are no +// longer reachable. +func (k Keeper) EndBlockTrackValsetUpdates(ctx sdk.Context) { // set the ValsetUpdateBlockHeight blockHeight := uint64(ctx.BlockHeight()) + 1 valUpdateID := k.GetValidatorSetUpdateId(ctx) diff --git a/x/vaas/provider/module.go b/x/vaas/provider/module.go index 9bd5425..8b78f1d 100644 --- a/x/vaas/provider/module.go +++ b/x/vaas/provider/module.go @@ -179,7 +179,7 @@ func (am AppModule) BeginBlock(ctx context.Context) error { func (am AppModule) EndBlock(ctx context.Context) ([]abci.ValidatorUpdate, error) { sdkCtx := sdk.UnwrapSDKContext(ctx) - am.keeper.EndBlockCIS(sdkCtx) + am.keeper.EndBlockTrackValsetUpdates(sdkCtx) return am.keeper.EndBlockVSU(sdkCtx) } diff --git a/x/vaas/provider/types/errors.go b/x/vaas/provider/types/errors.go index 0123b8a..f97d3fd 100644 --- a/x/vaas/provider/types/errors.go +++ b/x/vaas/provider/types/errors.go @@ -6,27 +6,26 @@ import ( // Provider sentinel errors var ( - ErrUnknownConsumerId = errorsmod.Register(ModuleName, 3, "no consumer chain with this consumer id") - ErrConsumerKeyInUse = errorsmod.Register(ModuleName, 10, "consumer key is already in use by a validator") - ErrCannotAssignDefaultKeyAssignment = errorsmod.Register(ModuleName, 11, "cannot re-assign default key assignment") - ErrInvalidConsumerClient = errorsmod.Register(ModuleName, 16, "VAAS channel is not built on correct client") - ErrNoUnbondingTime = errorsmod.Register(ModuleName, 23, "provider unbonding time not found") - ErrUnauthorized = errorsmod.Register(ModuleName, 25, "unauthorized") - ErrInvalidPhase = errorsmod.Register(ModuleName, 27, "cannot perform action in the current phase of consumer chain") - ErrInvalidConsumerMetadata = errorsmod.Register(ModuleName, 28, "invalid consumer metadata") - ErrInvalidPowerShapingParameters = errorsmod.Register(ModuleName, 29, "invalid power shaping parameters") - ErrInvalidConsumerInitializationParameters = errorsmod.Register(ModuleName, 30, "invalid consumer initialization parameters") - ErrNoConsumerGenesis = errorsmod.Register(ModuleName, 33, "missing consumer genesis") - ErrInvalidConsumerGenesis = errorsmod.Register(ModuleName, 34, "invalid consumer genesis") - ErrNoConsumerId = errorsmod.Register(ModuleName, 35, "missing consumer id") - ErrNoOwnerAddress = errorsmod.Register(ModuleName, 37, "missing owner address") - ErrInvalidNewOwnerAddress = errorsmod.Register(ModuleName, 38, "invalid new owner address") - ErrInvalidRemovalTime = errorsmod.Register(ModuleName, 43, "invalid removal time") - ErrInvalidMsgCreateConsumer = errorsmod.Register(ModuleName, 44, "invalid create consumer message") - ErrInvalidMsgUpdateConsumer = errorsmod.Register(ModuleName, 45, "invalid update consumer message") - ErrInvalidMsgAssignConsumerKey = errorsmod.Register(ModuleName, 46, "invalid assign consumer key message") - ErrInvalidMsgSubmitConsumerMisbehaviour = errorsmod.Register(ModuleName, 47, "invalid submit consumer misbehaviour message") - ErrInvalidMsgSubmitConsumerDoubleVoting = errorsmod.Register(ModuleName, 48, "invalid submit consumer double voting message") - ErrInvalidConsumerInfractionParameters = errorsmod.Register(ModuleName, 54, "invalid consumer infraction parameters") - ErrDuplicateChainId = errorsmod.Register(ModuleName, 55, "consumer chain-id is already in use") + ErrUnknownConsumerId = errorsmod.Register(ModuleName, 1, "no consumer chain with this consumer id") + ErrConsumerKeyInUse = errorsmod.Register(ModuleName, 2, "consumer key is already in use by a validator") + ErrCannotAssignDefaultKeyAssignment = errorsmod.Register(ModuleName, 3, "cannot re-assign default key assignment") + ErrInvalidConsumerClient = errorsmod.Register(ModuleName, 4, "VAAS channel is not built on correct client") + ErrNoUnbondingTime = errorsmod.Register(ModuleName, 5, "provider unbonding time not found") + ErrUnauthorized = errorsmod.Register(ModuleName, 6, "unauthorized") + ErrInvalidPhase = errorsmod.Register(ModuleName, 7, "cannot perform action in the current phase of consumer chain") + ErrInvalidConsumerMetadata = errorsmod.Register(ModuleName, 8, "invalid consumer metadata") + ErrInvalidConsumerInitializationParameters = errorsmod.Register(ModuleName, 9, "invalid consumer initialization parameters") + ErrNoConsumerGenesis = errorsmod.Register(ModuleName, 10, "missing consumer genesis") + ErrInvalidConsumerGenesis = errorsmod.Register(ModuleName, 11, "invalid consumer genesis") + ErrNoConsumerId = errorsmod.Register(ModuleName, 12, "missing consumer id") + ErrNoOwnerAddress = errorsmod.Register(ModuleName, 13, "missing owner address") + ErrInvalidNewOwnerAddress = errorsmod.Register(ModuleName, 14, "invalid new owner address") + ErrInvalidRemovalTime = errorsmod.Register(ModuleName, 15, "invalid removal time") + ErrInvalidMsgCreateConsumer = errorsmod.Register(ModuleName, 16, "invalid create consumer message") + ErrInvalidMsgUpdateConsumer = errorsmod.Register(ModuleName, 17, "invalid update consumer message") + ErrInvalidMsgAssignConsumerKey = errorsmod.Register(ModuleName, 18, "invalid assign consumer key message") + ErrInvalidMsgSubmitConsumerMisbehaviour = errorsmod.Register(ModuleName, 19, "invalid submit consumer misbehaviour message") + ErrInvalidMsgSubmitConsumerDoubleVoting = errorsmod.Register(ModuleName, 20, "invalid submit consumer double voting message") + ErrInvalidConsumerInfractionParameters = errorsmod.Register(ModuleName, 21, "invalid consumer infraction parameters") + ErrDuplicateChainId = errorsmod.Register(ModuleName, 22, "consumer chain-id is already in use") ) diff --git a/x/vaas/provider/types/keys.go b/x/vaas/provider/types/keys.go index 62f3c8e..5fcda22 100644 --- a/x/vaas/provider/types/keys.go +++ b/x/vaas/provider/types/keys.go @@ -61,8 +61,6 @@ const ( ConsumerIdToInitializationParametersKeyName = "ConsumerIdToInitializationParametersKey" - ConsumerIdToPowerShapingParameters = "ConsumerIdToPowerShapingParametersKey" - ConsumerIdToPhaseKeyName = "ConsumerIdToPhaseKey" ConsumerIdToRemovalTimeKeyName = "ConsumerIdToRemovalTimeKey" @@ -75,8 +73,6 @@ const ( // This is the reverse lookup mechanism for IBC v2 client-based communication. ClientIdToConsumerIdKeyName = "ClientIdToConsumerIdKey" - PrioritylistKeyName = "PrioritylistKey" - ConsumerIdToInfractionParametersKeyName = "ConsumerIdToInfractionParametersKey" ConsumerIdToQueuedInfractionParametersKeyName = "ConsumerIdToQueuedInfractionParametersKeyName" @@ -88,33 +84,31 @@ const ( // Collection key prefixes for use with cosmossdk.io/collections var ( - ValidatorSetUpdateIdPrefix = collections.NewPrefix(1) - ConsumerIdToClientIdPrefix = collections.NewPrefix(4) - ValsetUpdateBlockHeightPrefix = collections.NewPrefix(5) - ConsumerGenesisPrefix = collections.NewPrefix(6) - InitChainHeightPrefix = collections.NewPrefix(7) - PendingVSCsPrefix = collections.NewPrefix(8) - ConsumerValidatorsPrefix = collections.NewPrefix(9) - ValidatorsByConsumerAddrPrefix = collections.NewPrefix(10) - EquivocationEvidenceMinHeightPrefix = collections.NewPrefix(11) - ConsumerValidatorPrefix = collections.NewPrefix(12) - ConsumerAddrsToPrunePrefix = collections.NewPrefix(13) - LastProviderConsensusVals = collections.NewPrefix(14) - ConsumerIdPrefix = collections.NewPrefix(15) - ConsumerIdToChainIdPrefix = collections.NewPrefix(16) - ConsumerIdToOwnerAddressPrefix = collections.NewPrefix(17) - ConsumerIdToMetadataPrefix = collections.NewPrefix(18) - ConsumerIdToInitializationParamsPrefix = collections.NewPrefix(19) - ConsumerIdToPowerShapingParamsPrefix = collections.NewPrefix(20) - ConsumerIdToPhasePrefix = collections.NewPrefix(21) - ConsumerIdToRemovalTimePrefix = collections.NewPrefix(22) - SpawnTimeToConsumerIdsPrefix = collections.NewPrefix(23) - RemovalTimeToConsumerIdsPrefix = collections.NewPrefix(24) - ClientIdToConsumerIdPrefix = collections.NewPrefix(25) - PrioritylistPrefix = collections.NewPrefix(26) - ConsumerIdToInfractionParamsPrefix = collections.NewPrefix(27) - ConsumerIdToQueuedInfractionPrefix = collections.NewPrefix(28) - InfractionScheduledTimePrefix = collections.NewPrefix(29) - ConsumerIdToDebtPrefix = collections.NewPrefix(30) + ValidatorSetUpdateIdPrefix = collections.NewPrefix(0) + ConsumerIdToClientIdPrefix = collections.NewPrefix(1) + ValsetUpdateBlockHeightPrefix = collections.NewPrefix(2) + ConsumerGenesisPrefix = collections.NewPrefix(3) + InitChainHeightPrefix = collections.NewPrefix(4) + PendingVSCsPrefix = collections.NewPrefix(5) + ConsumerValidatorsPrefix = collections.NewPrefix(6) + ValidatorsByConsumerAddrPrefix = collections.NewPrefix(7) + EquivocationEvidenceMinHeightPrefix = collections.NewPrefix(8) + ConsumerValidatorPrefix = collections.NewPrefix(9) + ConsumerAddrsToPrunePrefix = collections.NewPrefix(10) + LastProviderConsensusVals = collections.NewPrefix(11) + ConsumerIdPrefix = collections.NewPrefix(12) + ConsumerIdToChainIdPrefix = collections.NewPrefix(13) + ConsumerIdToOwnerAddressPrefix = collections.NewPrefix(14) + ConsumerIdToMetadataPrefix = collections.NewPrefix(15) + ConsumerIdToInitializationParamsPrefix = collections.NewPrefix(16) + ConsumerIdToPhasePrefix = collections.NewPrefix(17) + ConsumerIdToRemovalTimePrefix = collections.NewPrefix(18) + SpawnTimeToConsumerIdsPrefix = collections.NewPrefix(19) + RemovalTimeToConsumerIdsPrefix = collections.NewPrefix(20) + ClientIdToConsumerIdPrefix = collections.NewPrefix(21) + ConsumerIdToInfractionParamsPrefix = collections.NewPrefix(22) + ConsumerIdToQueuedInfractionPrefix = collections.NewPrefix(23) + InfractionScheduledTimePrefix = collections.NewPrefix(24) + ConsumerIdToDebtPrefix = collections.NewPrefix(25) ParametersPrefix = collections.NewPrefix(0xFF) ) diff --git a/x/vaas/types/denom_helpers.go b/x/vaas/types/denom_helpers.go deleted file mode 100644 index 501699f..0000000 --- a/x/vaas/types/denom_helpers.go +++ /dev/null @@ -1,188 +0,0 @@ -package types - -import ( - "crypto/sha256" - "encoding/hex" - "fmt" - "strings" - - cmtbytes "github.com/cometbft/cometbft/libs/bytes" - cmttypes "github.com/cometbft/cometbft/types" - - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - - errorsmod "cosmossdk.io/errors" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// The code in this file is removed in ibc v9. It is copied from ibc v8 to here in order to support the migration to v9 - -// ReceiverChainIsSource returns true if the denomination originally came -// from the receiving chain and false otherwise. -func ReceiverChainIsSource(sourcePort, sourceChannel, denom string) bool { - // The prefix passed in should contain the SourcePort and SourceChannel. - // If the receiver chain originally sent the token to the sender chain - // the denom will have the sender's SourcePort and SourceChannel as the - // prefix. - - voucherPrefix := GetDenomPrefix(sourcePort, sourceChannel) - return strings.HasPrefix(denom, voucherPrefix) -} - -// GetDenomPrefix returns the receiving denomination prefix -func GetDenomPrefix(portID, channelID string) string { - return fmt.Sprintf("%s/%s/", portID, channelID) -} - -// GetPrefixedDenom returns the denomination with the portID and channelID prefixed -func GetPrefixedDenom(portID, channelID, baseDenom string) string { - return fmt.Sprintf("%s/%s/%s", portID, channelID, baseDenom) -} - -// DenomTrace contains the base denomination for ICS20 fungible tokens and the -// source tracing information path. -type DenomTrace struct { - // path defines the chain of port/channel identifiers used for tracing the - // source of the fungible token. - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - // base denomination of the relayed fungible token. - BaseDenom string `protobuf:"bytes,2,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"` -} - -const DenomPrefix = "ibc" - -// ParseDenomTrace parses a string with the ibc prefix (denom trace) and the base denomination -// into a DenomTrace type. -// -// Examples: -// -// - "portidone/channel-0/uatom" => DenomTrace{Path: "portidone/channel-0", BaseDenom: "uatom"} -// - "portidone/channel-0/portidtwo/channel-1/uatom" => DenomTrace{Path: "portidone/channel-0/portidtwo/channel-1", BaseDenom: "uatom"} -// - "portidone/channel-0/gamm/pool/1" => DenomTrace{Path: "portidone/channel-0", BaseDenom: "gamm/pool/1"} -// - "gamm/pool/1" => DenomTrace{Path: "", BaseDenom: "gamm/pool/1"} -// - "uatom" => DenomTrace{Path: "", BaseDenom: "uatom"} -func ParseDenomTrace(rawDenom string) DenomTrace { - denomSplit := strings.Split(rawDenom, "/") - - if denomSplit[0] == rawDenom { - return DenomTrace{ - Path: "", - BaseDenom: rawDenom, - } - } - - path, baseDenom := extractPathAndBaseFromFullDenom(denomSplit) - return DenomTrace{ - Path: path, - BaseDenom: baseDenom, - } -} - -// Hash returns the hex bytes of the SHA256 hash of the DenomTrace fields using the following formula: -// -// hash = sha256(tracePath + "/" + baseDenom) -func (dt DenomTrace) Hash() cmtbytes.HexBytes { - hash := sha256.Sum256([]byte(dt.GetFullDenomPath())) - return hash[:] -} - -// GetPrefix returns the receiving denomination prefix composed by the trace info and a separator. -func (dt DenomTrace) GetPrefix() string { - return dt.Path + "/" -} - -// IBCDenom a coin denomination for an ICS20 fungible token in the format -// 'ibc/{hash(tracePath + baseDenom)}'. If the trace is empty, it will return the base denomination. -func (dt DenomTrace) IBCDenom() string { - if dt.Path != "" { - return fmt.Sprintf("%s/%s", DenomPrefix, dt.Hash()) - } - return dt.BaseDenom -} - -// GetFullDenomPath returns the full denomination according to the ICS20 specification: -// tracePath + "/" + baseDenom -// If there exists no trace then the base denomination is returned. -func (dt DenomTrace) GetFullDenomPath() string { - if dt.Path == "" { - return dt.BaseDenom - } - return dt.GetPrefix() + dt.BaseDenom -} - -// extractPathAndBaseFromFullDenom returns the trace path and the base denom from -// the elements that constitute the complete denom. -func extractPathAndBaseFromFullDenom(fullDenomItems []string) (string, string) { - var ( - pathSlice []string - baseDenomSlice []string - ) - - length := len(fullDenomItems) - for i := 0; i < length; i += 2 { - // The IBC specification does not guarantee the expected format of the - // destination port or destination channel identifier. A short term solution - // to determine base denomination is to expect the channel identifier to be the - // one ibc-go specifies. A longer term solution is to separate the path and base - // denomination in the ICS20 packet. If an intermediate hop prefixes the full denom - // with a channel identifier format different from our own, the base denomination - // will be incorrectly parsed, but the token will continue to be treated correctly - // as an IBC denomination. The hash used to store the token internally on our chain - // will be the same value as the base denomination being correctly parsed. - if i < length-1 && length > 2 && channeltypes.IsValidChannelID(fullDenomItems[i+1]) { - pathSlice = append(pathSlice, fullDenomItems[i], fullDenomItems[i+1]) - } else { - baseDenomSlice = fullDenomItems[i:] - break - } - } - - path := strings.Join(pathSlice, "/") - baseDenom := strings.Join(baseDenomSlice, "/") - - return path, baseDenom -} - -// ValidateIBCDenom validates that the given denomination is either: -// -// - A valid base denomination (eg: 'uatom' or 'gamm/pool/1' as in https://github.com/cosmos/ibc-go/issues/894) -// - A valid fungible token representation (i.e 'ibc/{hash}') per ADR 001 https://github.com/cosmos/ibc-go/blob/main/docs/architecture/adr-001-coin-source-tracing.md -func ValidateIBCDenom(denom string) error { - if err := sdk.ValidateDenom(denom); err != nil { - return err - } - - denomSplit := strings.SplitN(denom, "/", 2) - - switch { - case denom == DenomPrefix: - return errorsmod.Wrapf(transfertypes.ErrInvalidDenomForTransfer, "denomination should be prefixed with the format 'ibc/{hash(trace + \"/\" + %s)}'", denom) - - case len(denomSplit) == 2 && denomSplit[0] == DenomPrefix: - if strings.TrimSpace(denomSplit[1]) == "" { - return errorsmod.Wrapf(transfertypes.ErrInvalidDenomForTransfer, "denomination should be prefixed with the format 'ibc/{hash(trace + \"/\" + %s)}'", denom) - } - - if _, err := ParseHexHash(denomSplit[1]); err != nil { - return errorsmod.Wrapf(err, "invalid denom trace hash %s", denomSplit[1]) - } - } - - return nil -} - -// ParseHexHash parses a hex hash in string format to bytes and validates its correctness. -func ParseHexHash(hexHash string) (cmtbytes.HexBytes, error) { - hash, err := hex.DecodeString(hexHash) - if err != nil { - return nil, err - } - - if err := cmttypes.ValidateHash(hash); err != nil { - return nil, err - } - - return hash, nil -} diff --git a/x/vaas/types/errors.go b/x/vaas/types/errors.go index 77f8508..7340c85 100644 --- a/x/vaas/types/errors.go +++ b/x/vaas/types/errors.go @@ -11,18 +11,16 @@ var ( ErrInvalidChannelFlow = errorsmod.Register(ModuleName, 3, "invalid message sent to channel end") ErrInvalidGenesis = errorsmod.Register(ModuleName, 4, "invalid genesis state") ErrDuplicateChannel = errorsmod.Register(ModuleName, 5, "VAAS channel already exists") - ErrInvalidVSCMaturedId = errorsmod.Register(ModuleName, 6, "invalid vscId for VSC packet") - ErrInvalidVSCMaturedTime = errorsmod.Register(ModuleName, 7, "invalid maturity time for VSC packet") - ErrInvalidHandshakeMetadata = errorsmod.Register(ModuleName, 8, "invalid provider handshake metadata") - ErrChannelNotFound = errorsmod.Register(ModuleName, 9, "channel not found") - ErrClientNotFound = errorsmod.Register(ModuleName, 10, "client not found") - ErrInvalidConsumerState = errorsmod.Register(ModuleName, 11, "provider chain has invalid state for consumer chain") - ErrInvalidConsumerClient = errorsmod.Register(ModuleName, 12, "VAAS channel is not built on correct client") - ErrInvalidProposal = errorsmod.Register(ModuleName, 13, "invalid proposal") - ErrDuplicateConsumerChain = errorsmod.Register(ModuleName, 14, "consumer chain already exists") - ErrConsumerChainNotFound = errorsmod.Register(ModuleName, 15, "consumer chain not found") - ErrInvalidDoubleVotingEvidence = errorsmod.Register(ModuleName, 16, "invalid consumer double voting evidence") - ErrStoreKeyNotFound = errorsmod.Register(ModuleName, 17, "store key not found") - ErrStoreUnmarshal = errorsmod.Register(ModuleName, 18, "cannot unmarshal value from store") - ErrInvalidConsumerId = errorsmod.Register(ModuleName, 19, "invalid consumer id") + ErrInvalidHandshakeMetadata = errorsmod.Register(ModuleName, 6, "invalid provider handshake metadata") + ErrChannelNotFound = errorsmod.Register(ModuleName, 7, "channel not found") + ErrClientNotFound = errorsmod.Register(ModuleName, 8, "client not found") + ErrInvalidConsumerState = errorsmod.Register(ModuleName, 9, "provider chain has invalid state for consumer chain") + ErrInvalidConsumerClient = errorsmod.Register(ModuleName, 10, "VAAS channel is not built on correct client") + ErrInvalidProposal = errorsmod.Register(ModuleName, 11, "invalid proposal") + ErrDuplicateConsumerChain = errorsmod.Register(ModuleName, 12, "consumer chain already exists") + ErrConsumerChainNotFound = errorsmod.Register(ModuleName, 13, "consumer chain not found") + ErrInvalidDoubleVotingEvidence = errorsmod.Register(ModuleName, 14, "invalid consumer double voting evidence") + ErrStoreKeyNotFound = errorsmod.Register(ModuleName, 15, "store key not found") + ErrStoreUnmarshal = errorsmod.Register(ModuleName, 16, "cannot unmarshal value from store") + ErrInvalidConsumerId = errorsmod.Register(ModuleName, 17, "invalid consumer id") ) diff --git a/x/vaas/types/events.go b/x/vaas/types/events.go index 12d6b2d..7a5fe10 100644 --- a/x/vaas/types/events.go +++ b/x/vaas/types/events.go @@ -5,7 +5,6 @@ const ( EventTypeTimeout = "timeout" EventTypePacket = "vaas_packet" EventTypeChannelEstablished = "channel_established" - EventTypeFeeTransferChannelOpened = "fee_transfer_channel_opened" EventTypeConsumerClientCreated = "consumer_client_created" EventTypeAssignConsumerKey = "assign_consumer_key" EventTypeSubmitConsumerMisbehaviour = "submit_consumer_misbehaviour"