Skip to content

Commit 68e944f

Browse files
chore: rm misbehaviour endpoint (#8516)
Co-authored-by: Gjermund Garaba <[email protected]>
1 parent b0550d6 commit 68e944f

File tree

12 files changed

+176
-795
lines changed

12 files changed

+176
-795
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
4848
### API Breaking
4949
* (apps) [\#8476](https://github.com/cosmos/ibc-go/pull/8476) Remove `ParamSubspace` from all `Keeper` constructors
5050
* (light-clients/08-wasm) [\#8511](https://github.com/cosmos/ibc-go/pull/8511) Remove deprecated `Checksums` type
51+
* (core/02-client) [\#8516](https://github.com/cosmos/ibc-go/pull/8516) Remove deprecated `SubmitMisbehaviour` message handler
5152

5253
### State Machine Breaking
5354

modules/core/02-client/client/cli/cli.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ func NewTxCmd() *cobra.Command {
5151
newCreateClientCmd(),
5252
newAddCounterpartyCmd(),
5353
newUpdateClientCmd(),
54-
newSubmitMisbehaviourCmd(), // Deprecated
5554
newUpgradeClientCmd(),
5655
newSubmitRecoverClientProposalCmd(),
5756
newScheduleIBCUpgradeProposalCmd(),

modules/core/02-client/client/cli/tx.go

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -226,53 +226,6 @@ func newUpdateClientCmd() *cobra.Command {
226226
return cmd
227227
}
228228

229-
// newSubmitMisbehaviourCmd defines the command to submit a misbehaviour to prevent
230-
// future updates.
231-
// Deprecated: NewSubmitMisbehaviourCmd is deprecated and will be removed in a future release.
232-
// Please use NewUpdateClientCmd instead.
233-
func newSubmitMisbehaviourCmd() *cobra.Command {
234-
cmd := &cobra.Command{
235-
Use: "misbehaviour [clientID] [path/to/misbehaviour.json]",
236-
Short: "submit a client misbehaviour",
237-
Long: "submit a client misbehaviour to prevent future updates",
238-
Example: fmt.Sprintf("%s tx ibc %s misbehaviour [clientID] [path/to/misbehaviour.json] --from node0 --home ../node0/<app>cli --chain-id $CID", version.AppName, types.SubModuleName),
239-
Args: cobra.ExactArgs(2),
240-
RunE: func(cmd *cobra.Command, args []string) error {
241-
clientCtx, err := client.GetClientTxContext(cmd)
242-
if err != nil {
243-
return err
244-
}
245-
cdc := codec.NewProtoCodec(clientCtx.InterfaceRegistry)
246-
247-
var misbehaviour exported.ClientMessage
248-
clientID := args[0]
249-
misbehaviourContentOrFileName := args[1]
250-
if err := cdc.UnmarshalInterfaceJSON([]byte(misbehaviourContentOrFileName), &misbehaviour); err != nil {
251-
252-
// check for file path if JSON input is not provided
253-
contents, err := os.ReadFile(misbehaviourContentOrFileName)
254-
if err != nil {
255-
return fmt.Errorf("neither JSON input nor path to .json file for misbehaviour were provided: %w", err)
256-
}
257-
258-
if err := cdc.UnmarshalInterfaceJSON(contents, &misbehaviour); err != nil {
259-
return fmt.Errorf("error unmarshalling misbehaviour file: %w", err)
260-
}
261-
}
262-
263-
msg, err := types.NewMsgSubmitMisbehaviour(clientID, misbehaviour, clientCtx.GetFromAddress().String())
264-
if err != nil {
265-
return err
266-
}
267-
268-
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
269-
},
270-
}
271-
272-
flags.AddTxFlagsToCmd(cmd)
273-
return cmd
274-
}
275-
276229
// newUpgradeClientCmd defines the command to upgrade an IBC light client.
277230
func newUpgradeClientCmd() *cobra.Command {
278231
cmd := &cobra.Command{

modules/core/02-client/types/codec.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
5050
&MsgCreateClient{},
5151
&MsgUpdateClient{},
5252
&MsgUpgradeClient{},
53-
&MsgSubmitMisbehaviour{},
5453
&MsgRecoverClient{},
5554
&MsgIBCSoftwareUpgrade{},
5655
&MsgUpdateParams{},

modules/core/02-client/types/codec_test.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,6 @@ func (suite *TypesTestSuite) TestCodecTypeRegistration() {
191191
sdk.MsgTypeURL(&types.MsgUpgradeClient{}),
192192
nil,
193193
},
194-
{
195-
"success: MsgSubmitMisbehaviour",
196-
sdk.MsgTypeURL(&types.MsgSubmitMisbehaviour{}),
197-
nil,
198-
},
199194
{
200195
"success: MsgRecoverClient",
201196
sdk.MsgTypeURL(&types.MsgRecoverClient{}),

modules/core/02-client/types/msgs.go

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
var (
1616
_ sdk.Msg = (*MsgCreateClient)(nil)
1717
_ sdk.Msg = (*MsgUpdateClient)(nil)
18-
_ sdk.Msg = (*MsgSubmitMisbehaviour)(nil)
1918
_ sdk.Msg = (*MsgUpgradeClient)(nil)
2019
_ sdk.Msg = (*MsgUpdateParams)(nil)
2120
_ sdk.Msg = (*MsgIBCSoftwareUpgrade)(nil)
@@ -24,7 +23,6 @@ var (
2423

2524
_ sdk.HasValidateBasic = (*MsgCreateClient)(nil)
2625
_ sdk.HasValidateBasic = (*MsgUpdateClient)(nil)
27-
_ sdk.HasValidateBasic = (*MsgSubmitMisbehaviour)(nil)
2826
_ sdk.HasValidateBasic = (*MsgUpgradeClient)(nil)
2927
_ sdk.HasValidateBasic = (*MsgUpdateParams)(nil)
3028
_ sdk.HasValidateBasic = (*MsgIBCSoftwareUpgrade)(nil)
@@ -33,7 +31,6 @@ var (
3331

3432
_ codectypes.UnpackInterfacesMessage = (*MsgCreateClient)(nil)
3533
_ codectypes.UnpackInterfacesMessage = (*MsgUpdateClient)(nil)
36-
_ codectypes.UnpackInterfacesMessage = (*MsgSubmitMisbehaviour)(nil)
3734
_ codectypes.UnpackInterfacesMessage = (*MsgUpgradeClient)(nil)
3835
_ codectypes.UnpackInterfacesMessage = (*MsgIBCSoftwareUpgrade)(nil)
3936
)
@@ -200,43 +197,6 @@ func (msg MsgUpgradeClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) er
200197
return unpacker.UnpackAny(msg.ConsensusState, &consState)
201198
}
202199

203-
// NewMsgSubmitMisbehaviour creates a new MsgSubmitMisbehaviour instance.
204-
func NewMsgSubmitMisbehaviour(clientID string, misbehaviour exported.ClientMessage, signer string) (*MsgSubmitMisbehaviour, error) {
205-
anyMisbehaviour, err := PackClientMessage(misbehaviour)
206-
if err != nil {
207-
return nil, err
208-
}
209-
210-
return &MsgSubmitMisbehaviour{
211-
ClientId: clientID,
212-
Misbehaviour: anyMisbehaviour,
213-
Signer: signer,
214-
}, nil
215-
}
216-
217-
// ValidateBasic performs basic (non-state-dependant) validation on a MsgSubmitMisbehaviour.
218-
func (msg MsgSubmitMisbehaviour) ValidateBasic() error {
219-
_, err := sdk.AccAddressFromBech32(msg.Signer)
220-
if err != nil {
221-
return errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "string could not be parsed as address: %v", err)
222-
}
223-
misbehaviour, err := UnpackClientMessage(msg.Misbehaviour)
224-
if err != nil {
225-
return err
226-
}
227-
if err := misbehaviour.ValidateBasic(); err != nil {
228-
return err
229-
}
230-
231-
return host.ClientIdentifierValidator(msg.ClientId)
232-
}
233-
234-
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
235-
func (msg MsgSubmitMisbehaviour) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
236-
var misbehaviour exported.ClientMessage
237-
return unpacker.UnpackAny(msg.Misbehaviour, &misbehaviour)
238-
}
239-
240200
// NewMsgRecoverClient creates a new MsgRecoverClient instance
241201
func NewMsgRecoverClient(signer, subjectClientID, substituteClientID string) *MsgRecoverClient {
242202
return &MsgRecoverClient{

modules/core/02-client/types/msgs_test.go

Lines changed: 0 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package types_test
33
import (
44
"errors"
55
"testing"
6-
"time"
76

87
"github.com/golang/protobuf/proto" //nolint:staticcheck
98
"github.com/stretchr/testify/require"
@@ -470,155 +469,6 @@ func (suite *TypesTestSuite) TestMsgUpgradeClient_ValidateBasic() {
470469
}
471470
}
472471

473-
// tests that different misbehaviours within MsgSubmitMisbehaviour can be marshaled
474-
// and unmarshaled.
475-
func (suite *TypesTestSuite) TestMarshalMsgSubmitMisbehaviour() {
476-
var (
477-
msg *types.MsgSubmitMisbehaviour
478-
err error
479-
)
480-
481-
testCases := []struct {
482-
name string
483-
malleate func()
484-
}{
485-
{
486-
"solo machine client", func() {
487-
soloMachine := ibctesting.NewSolomachine(suite.T(), suite.chainA.Codec, "solomachine", "", 2)
488-
msg, err = types.NewMsgSubmitMisbehaviour(soloMachine.ClientID, soloMachine.CreateMisbehaviour(), suite.chainA.SenderAccount.GetAddress().String())
489-
suite.Require().NoError(err)
490-
},
491-
},
492-
{
493-
"tendermint client", func() {
494-
height := types.NewHeight(0, uint64(suite.chainA.ProposedHeader.Height))
495-
heightMinus1 := types.NewHeight(0, uint64(suite.chainA.ProposedHeader.Height)-1)
496-
header1 := suite.chainA.CreateTMClientHeader(suite.chainA.ChainID, int64(height.RevisionHeight), heightMinus1, suite.chainA.ProposedHeader.Time, suite.chainA.Vals, suite.chainA.Vals, suite.chainA.Vals, suite.chainA.Signers)
497-
header2 := suite.chainA.CreateTMClientHeader(suite.chainA.ChainID, int64(height.RevisionHeight), heightMinus1, suite.chainA.ProposedHeader.Time.Add(time.Minute), suite.chainA.Vals, suite.chainA.Vals, suite.chainA.Vals, suite.chainA.Signers)
498-
499-
misbehaviour := ibctm.NewMisbehaviour("tendermint", header1, header2)
500-
msg, err = types.NewMsgSubmitMisbehaviour("tendermint", misbehaviour, suite.chainA.SenderAccount.GetAddress().String())
501-
suite.Require().NoError(err)
502-
},
503-
},
504-
}
505-
506-
for _, tc := range testCases {
507-
suite.Run(tc.name, func() {
508-
suite.SetupTest()
509-
510-
tc.malleate()
511-
512-
cdc := suite.chainA.App.AppCodec()
513-
514-
// marshal message
515-
bz, err := cdc.MarshalJSON(msg)
516-
suite.Require().NoError(err)
517-
518-
// unmarshal message
519-
newMsg := &types.MsgSubmitMisbehaviour{}
520-
err = cdc.UnmarshalJSON(bz, newMsg)
521-
suite.Require().NoError(err)
522-
523-
suite.Require().True(proto.Equal(msg, newMsg))
524-
})
525-
}
526-
}
527-
528-
func (suite *TypesTestSuite) TestMsgSubmitMisbehaviour_ValidateBasic() {
529-
var (
530-
msg = &types.MsgSubmitMisbehaviour{}
531-
err error
532-
)
533-
534-
cases := []struct {
535-
name string
536-
malleate func()
537-
expErr error
538-
}{
539-
{
540-
"invalid client-id",
541-
func() {
542-
msg.ClientId = ""
543-
},
544-
errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "string could not be parsed as address: empty address string is not allowed"),
545-
},
546-
{
547-
"valid - tendermint misbehaviour",
548-
func() {
549-
height := types.NewHeight(0, uint64(suite.chainA.ProposedHeader.Height))
550-
heightMinus1 := types.NewHeight(0, uint64(suite.chainA.ProposedHeader.Height)-1)
551-
header1 := suite.chainA.CreateTMClientHeader(suite.chainA.ChainID, int64(height.RevisionHeight), heightMinus1, suite.chainA.ProposedHeader.Time, suite.chainA.Vals, suite.chainA.Vals, suite.chainA.Vals, suite.chainA.Signers)
552-
header2 := suite.chainA.CreateTMClientHeader(suite.chainA.ChainID, int64(height.RevisionHeight), heightMinus1, suite.chainA.ProposedHeader.Time.Add(time.Minute), suite.chainA.Vals, suite.chainA.Vals, suite.chainA.Vals, suite.chainA.Signers)
553-
554-
misbehaviour := ibctm.NewMisbehaviour("tendermint", header1, header2)
555-
msg, err = types.NewMsgSubmitMisbehaviour("tendermint", misbehaviour, suite.chainA.SenderAccount.GetAddress().String())
556-
suite.Require().NoError(err)
557-
},
558-
nil,
559-
},
560-
{
561-
"invalid tendermint misbehaviour",
562-
func() {
563-
msg, err = types.NewMsgSubmitMisbehaviour("tendermint", &ibctm.Misbehaviour{}, suite.chainA.SenderAccount.GetAddress().String())
564-
suite.Require().NoError(err)
565-
},
566-
errorsmod.Wrap(ibctm.ErrInvalidHeader, "misbehaviour Header1 cannot be nil"),
567-
},
568-
{
569-
"failed to unpack misbehaviourt",
570-
func() {
571-
msg.Misbehaviour = nil
572-
},
573-
errorsmod.Wrap(ibcerrors.ErrUnpackAny, "protobuf Any message cannot be nil"),
574-
},
575-
{
576-
"invalid signer",
577-
func() {
578-
msg.Signer = ""
579-
},
580-
errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "string could not be parsed as address: empty address string is not allowed"),
581-
},
582-
{
583-
"valid - solomachine misbehaviour",
584-
func() {
585-
soloMachine := ibctesting.NewSolomachine(suite.T(), suite.chainA.Codec, "solomachine", "", 2)
586-
msg, err = types.NewMsgSubmitMisbehaviour(soloMachine.ClientID, soloMachine.CreateMisbehaviour(), suite.chainA.SenderAccount.GetAddress().String())
587-
suite.Require().NoError(err)
588-
},
589-
nil,
590-
},
591-
{
592-
"invalid solomachine misbehaviour",
593-
func() {
594-
msg, err = types.NewMsgSubmitMisbehaviour("solomachine", &solomachine.Misbehaviour{}, suite.chainA.SenderAccount.GetAddress().String())
595-
suite.Require().NoError(err)
596-
},
597-
errorsmod.Wrapf(types.ErrInvalidMisbehaviour, "sequence cannot be 0"),
598-
},
599-
{
600-
"client-id too short",
601-
func() {
602-
soloMachineMisbehaviour := ibctesting.NewSolomachine(suite.T(), suite.chainA.Codec, "solomachine", "", 2).CreateMisbehaviour()
603-
msg, err = types.NewMsgSubmitMisbehaviour("ext", soloMachineMisbehaviour, suite.chainA.SenderAccount.GetAddress().String())
604-
suite.Require().NoError(err)
605-
},
606-
errorsmod.Wrapf(host.ErrInvalidID, "identifier external has invalid length: 3, must be between 4-64 characters"),
607-
},
608-
}
609-
610-
for _, tc := range cases {
611-
tc.malleate()
612-
err = msg.ValidateBasic()
613-
if tc.expErr == nil {
614-
suite.Require().NoError(err, tc.name)
615-
} else {
616-
suite.Require().Error(err, tc.name)
617-
suite.Require().ErrorIs(err, tc.expErr)
618-
}
619-
}
620-
}
621-
622472
// TestMsgRecoverClientValidateBasic tests ValidateBasic for MsgRecoverClient
623473
func (suite *TypesTestSuite) TestMsgRecoverClientValidateBasic() {
624474
var msg *types.MsgRecoverClient

0 commit comments

Comments
 (0)