Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ica)!: support json tx encoding for interchain accounts #3796

Merged
merged 141 commits into from
Jul 3, 2023

Conversation

srdtrk
Copy link
Member

@srdtrk srdtrk commented Jun 8, 2023

Description

This PR;

  • Adds support for json tx encoding for interchain accounts
  • Modifies all existing tests to also test with json encoding if possible.
  • Implements new unit and integration tests for json encoding.

closes: #3246

Changes

The code for encoding and decoding json messages are adden in to /27-interchain-accounts/types/codec.go. The new tests for json encoding reside in codec_test.go and relay_test.go.

In general, there are 4 packages we might want to use for json encoding, and these are:

JSON Format

In this implementation, our main goal is to support json messages coming from cosmwasm. Communicating go modules should use protobuf encoding. In this implementation, we've opted to use the sdk's JSONCodec found in cosmos-sdk/codec. This causes the ica module to expect a very specific json format for Any. I'll explain this format with an example. Consider a legacy text governance proposal, the expected json object for this proposal would be:

{
  "messages": [
    {
      "@type": "/cosmos.gov.v1beta1.MsgSubmitProposal",
      "content": {
        "@type": "/cosmos.gov.v1beta1.TextProposal",
        "title": "IBC Gov Proposal",
        "description": "tokens for all!"
      },
      "initial_deposit": [{ "denom": "stake", "amount": "5000" }],
      "proposer": "cosmos1k4epd6js8aa7fk4e5l7u6dwttxfarwu6yald9hlyckngv59syuyqnlqvk8"
    }
  ]
}

Cosmwasm Serialization

After this PR, cosmwasm developers would have to serialize their transactions using the following format:

IMPORTANT NOTE: Notice that deserialize is not derived. This is because if you use deserialize with serde tags, your contract code cannot be stored on chain. See this cosmwasm issue (#1443)

use cosmwasm_std::Coin;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Clone, Debug)]
#[serde(tag = "@type")]
pub enum CosmosMessages {
    #[serde(rename = "/cosmos.bank.v1beta1.MsgSend")]
    MsgSend {
        /// Sender's address.
        from_address: String,
        /// Recipient's address.
        to_address: String,
        /// Amount to send
        amount: Vec<Coin>,
    },
    #[serde(rename = "/cosmos.staking.v1beta1.MsgDelegate")]
    MsgDelegate {
        /// Delegator's address.
        delegator_address: String,
        /// Validator's address.
        validator_address: String,
        amount: Coin,
    },
    #[serde(rename = "/cosmos.gov.v1beta1.MsgVote")]
    MsgVote {
        /// Voter's address.
        voter: String,
        /// Proposal's ID.
        proposal_id: u64,
        /// Vote option.
        option: u32,
    },
    #[serde(rename = "/cosmos.gov.v1beta1.MsgSubmitProposal")]
    MsgSubmitProposalLegacy {
        content: Box<CosmosMessages>,
        initial_deposit: Vec<Coin>,
        proposer: String,
    },
    #[serde(rename = "/cosmos.gov.v1beta1.TextProposal")]
    TextProposal { title: String, description: String },
    #[serde(rename = "/cosmos.gov.v1beta1.MsgDeposit")]
    MsgDeposit {
        proposal_id: u64,
        depositor: String,
        amount: Vec<Coin>,
    },
}

#[derive(Serialize, Debug)]
pub struct CosmosTx {
    pub messages: Vec<CosmosMessages>,
}

#[derive(Serialize)]
pub struct InterchainAccountPacketData {
    #[serde(rename = "type")]
    pub type_: u32,
    pub data: Vec<u8>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub memo: Option<String>,
}

Commit Message / Changelog Entry

feat(ica)!: support json tx encoding for interchain accounts

see the guidelines for commit messages. (view raw markdown for examples)


Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

  • Targeted PR against correct branch (see CONTRIBUTING.md).
  • Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
  • Code follows the module structure standards and Go style guide.
  • Wrote unit and integration tests.
  • Updated relevant documentation (docs/) or specification (x/<module>/spec/).
  • Added relevant godoc comments.
  • Provide a commit message to be used for the changelog entry in the PR description for review.
  • Re-reviewed Files changed in the Github PR explorer.
  • Review Codecov Report in the comment section below once CI passes.

srdtrk added 30 commits May 30, 2023 16:54
Copy link
Contributor

@crodriguezvega crodriguezvega left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fantastic work, @srdtrk! 🔥 🚀

modules/apps/27-interchain-accounts/host/keeper/keeper.go Outdated Show resolved Hide resolved
@@ -47,21 +56,32 @@ func (suite *KeeperTestSuite) SetupTest() {
suite.chainC = suite.coordinator.GetChain(ibctesting.GetChainID(3))
}

func NewICAPath(chainA, chainB *ibctesting.TestChain) *ibctesting.Path {
func NewICAPath(chainA, chainB *ibctesting.TestChain, encoding string) *ibctesting.Path {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 for the enum type!

Copy link
Contributor

@chatton chatton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Great work on this, happy to have those remaining nits in follow ups 👍

Copy link
Contributor

@colin-axner colin-axner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!! Nice work @srdtrk 💪

@@ -27,7 +27,7 @@ import (
// Keeper defines the IBC interchain accounts controller keeper
type Keeper struct {
storeKey storetypes.StoreKey
cdc codec.BinaryCodec
cdc codec.Codec
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not strictly necessary since the controller doesn't do JSON marshaling, what prompted this change?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was your comment that prompted the change: #3796 (comment)

Lmk if you want me to revert the change before I merge today

@@ -47,21 +56,32 @@ func (suite *KeeperTestSuite) SetupTest() {
suite.chainC = suite.coordinator.GetChain(ibctesting.GetChainID(3))
}

func NewICAPath(chainA, chainB *ibctesting.TestChain) *ibctesting.Path {
func NewICAPath(chainA, chainB *ibctesting.TestChain, encoding string) *ibctesting.Path {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree it should be discussed in a separate pr. As a side note, enums are encoded differently between standard json and proto3 json. Currently ICA uses proto3 json for encoding the metadata, if it used standard json this change wouldn't be backwards compatible

The enum string value for proto3 must be the same as the existing string otherwise we will break cross compatibility for opening channels

I would also not backport this change

Copy link
Member

@damiannolan damiannolan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work @srdtrk! LGTM 🚀

@srdtrk srdtrk dismissed AdityaSripal’s stale review July 3, 2023 14:43

out of date review

@srdtrk srdtrk merged commit e5b057d into main Jul 3, 2023
52 checks passed
@srdtrk srdtrk deleted the serdar/issue#3246-alternative-approach branch July 3, 2023 14:45
mergify bot pushed a commit that referenced this pull request Jul 4, 2023
* feat(ica): added EncodingJson to supported encodings

* imp(ica): changed the type of cdc to Codec in ica/host

* imp(ica): changed the type of cdc to Codec in ica/controller

* imp(ica.test): added a test cases for EncodingJSON

* imp(ica): created invalid encoding err

* feat(ica)!: first prototype of json supporting DeserializeCosmosTx

* docs(ica): updated godoc of DeserializeCosmosTx

* docs(ica): added comments to DeserializeCosmosTx

* fix(ica.test): fixed tests for DeserializeCosmosTx

* fix(ica): fixed 'OnRecvPacket' in relay.go

* fix(ica): fixed unhandled error

* style(ica): made DeserializeCosmosTx more compact

* fix(ica/host.cli.test): fixed a cli test

* style(ica): ran gofumpt

* style(ica): changed err message

* feat(ica): first prototype of SerializeCosmosTx is implemented

* fix(ica): fixed codec tests

* fix(ica/host.test): fix test

* fix(ica/host.test): fix test

* fix(ica/host.cli): cli always uses protobuf

* nil(ica/host.test): removed unneeded comment

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(fee.test): fix test

* nit: temporary save commit

* fix(ica): fixed json serde tests not passing

* fix(ica): fix panic if message does not implement sdk.Msg

* imp(ica): improved json serde functions

* style(ica): pleased the linter

* style(ica): ran gofumpt

* fix(e2e): fix compilation errors by adding icatypes.EncodingProtobuf arg to serde functions

* feat(ica.test): added important wip test for deserializing directly from cosmwasm

* imp(ica.test): added a new test case to cw codec unit test

* imp(ica): added another test case

* imp(ica.test): added another test case

* imp(ica.test): added another test case

* style(ica.test): improved test style

* style(ica.test): improved test style

* style(ica.test): ran gofumpt

* imp(ica.test): added json encoding version string for testing

* imp(ica.test): added new 'NewJSONICAPath' function

* imp(ica.test): added encoding field to ica test setup functions

* fix(ica.test): fixed test setups using the new encoding field

* feat(ica.test): added json test case

* style(ica.test): ran gofumpt

* feat(ica.test): got two cases of cosmwasm tests working in relay

* style(ica.test): ran gofumpt

* feat(ica): started progress on recursive handling of Anys

* imp(ica.test): added a new test case for ica json encoding, this fails

* feat(ica): achieved total json serialization (excluding any lists)

* refactor(ica): made function shorter and removed duplicated code

* style(ica): ran gofumpt

* imp(ica): added more err handling code

* refactor(ica): made deserialize code shorter

* style(ica): made linter a bit more happy

* fix(ica.test): fixed one codec test case

* feat(ica): added []Any handling code

* fix(ica): added more safety

* nit: deleted testing codec.go

* feat(ica): all works

* style(ica): ran gofumpt

* style(ica): made linter happy

* refactor(ica): reduced code duplication

* nit(ica): uncommented some test cases

* imp(ica.test): added more test cases

* feat(ica.test): finished test cases

* style(ica.test): reorganized test cases

* refactor(ica.test): combined the two test cases into one

* style(ica.test): ran gofumpt

* style(ica.test): renamed wallet address

* fix(ica.test): fixed test case names

* imp(ica.test): added more test cases

* style(ica.test): ran gofumpt

* test(ica): added more codec test cases

* style(ica.test): ran gofumpt

* feat(ica): removed JSONAny and JSONCosmosTx types

* feat(ica): implemented json encoding using module codec

* fix(ica.test): tests now match the new codec implementation

* fix(ica.test): fixed the tests to the new implementation

* style(ica.test): reorgenized the order of tests so that git diff makes sense

* imp(ica/controller): controller codec need not be codec.Codec

* imp(ica): replaced BinaryCodec with Codec

* test(ica): fixed codec test

* docs(ica.test): codec comment updated

* docs(ica.test): updated comments

* style(ica.test): removed 'from cosmwasm' from test case name as it is aparent from test name

* style(ica.test): ran gofumpt

* fix: fix merge error

* deps(ica): replaced sdk.NewInt with sdkmath.NewInt

* style(ica): ran 'gofumpt'

* imp(ica): removed redundant cosmwasm tests

* revert: "imp(ica): removed redundant cosmwasm tests"

This reverts commit 5123fba.

* imp(ica.test): made codec_test  human readable

* imp(ica.test): made relay_test human readable

* style(ica.test): ran 'golanci-lint run --fix'

* imp(ica/host): created 'GetAppMetadata' function

* refactor(ica/host): used GetAppMetadata function

* imp(ica.test): removed unneeded encoding argument

* imp(ica): removed ErrUnsupportedEncoding

* imp(ica.test): used suite chainB height instead of clienttypes.NewHeight(1, 100)

* imp(ica.test): add nil check for unsupported encoding

* imp(ica.test): added a empty/nil checks

* style(ica.test): renamed version variable to TestVersionWithJSONEncoding

* imp(ica): wrapped some errors

* style(ica): ran 'golanci-lint run --fix'

* style(ica)!: renamed EncodingJSON to EncodingProto3JSON

* docs(ica): improved godocs

* imp(ica): passing codec instead of binary codec

* style(ica): improved error messages and godocs

* docs(ica.test): improved godocs for tests

* imp(ica.test): improved unsupported encoding test case slightly

* style(ica.test): test style improvements

* imp(ica.test): added expError to some codec tests

* imp(ica.test): added more error type checks to codec tests

* style(ica.test): ran 'golangci-lint run --fix'

* imp(ica/host.test): added 'TestMetadataNotFound'

* imp(ica/host.test): reduce test size

* docs(ica/host.test): updated godocs for test

* docs(ica/host): improved godoc

* imp(ica/host): made GetAppMetadata private

---------

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
(cherry picked from commit e5b057d)

# Conflicts:
#	modules/apps/27-interchain-accounts/controller/keeper/keeper.go
#	modules/apps/27-interchain-accounts/controller/keeper/msg_server_test.go
#	modules/apps/27-interchain-accounts/host/client/cli/tx_test.go
#	modules/apps/27-interchain-accounts/host/ibc_module_test.go
#	modules/apps/27-interchain-accounts/host/keeper/keeper.go
#	modules/apps/27-interchain-accounts/host/keeper/keeper_test.go
#	modules/apps/27-interchain-accounts/host/keeper/relay.go
#	modules/apps/27-interchain-accounts/host/keeper/relay_test.go
#	modules/apps/27-interchain-accounts/types/codec.go
#	modules/apps/27-interchain-accounts/types/codec_test.go
faddat pushed a commit to notional-labs/ibc-go that referenced this pull request Jul 5, 2023
…3796)

* feat(ica): added EncodingJson to supported encodings

* imp(ica): changed the type of cdc to Codec in ica/host

* imp(ica): changed the type of cdc to Codec in ica/controller

* imp(ica.test): added a test cases for EncodingJSON

* imp(ica): created invalid encoding err

* feat(ica)!: first prototype of json supporting DeserializeCosmosTx

* docs(ica): updated godoc of DeserializeCosmosTx

* docs(ica): added comments to DeserializeCosmosTx

* fix(ica.test): fixed tests for DeserializeCosmosTx

* fix(ica): fixed 'OnRecvPacket' in relay.go

* fix(ica): fixed unhandled error

* style(ica): made DeserializeCosmosTx more compact

* fix(ica/host.cli.test): fixed a cli test

* style(ica): ran gofumpt

* style(ica): changed err message

* feat(ica): first prototype of SerializeCosmosTx is implemented

* fix(ica): fixed codec tests

* fix(ica/host.test): fix test

* fix(ica/host.test): fix test

* fix(ica/host.cli): cli always uses protobuf

* nil(ica/host.test): removed unneeded comment

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(fee.test): fix test

* nit: temporary save commit

* fix(ica): fixed json serde tests not passing

* fix(ica): fix panic if message does not implement sdk.Msg

* imp(ica): improved json serde functions

* style(ica): pleased the linter

* style(ica): ran gofumpt

* fix(e2e): fix compilation errors by adding icatypes.EncodingProtobuf arg to serde functions

* feat(ica.test): added important wip test for deserializing directly from cosmwasm

* imp(ica.test): added a new test case to cw codec unit test

* imp(ica): added another test case

* imp(ica.test): added another test case

* imp(ica.test): added another test case

* style(ica.test): improved test style

* style(ica.test): improved test style

* style(ica.test): ran gofumpt

* imp(ica.test): added json encoding version string for testing

* imp(ica.test): added new 'NewJSONICAPath' function

* imp(ica.test): added encoding field to ica test setup functions

* fix(ica.test): fixed test setups using the new encoding field

* feat(ica.test): added json test case

* style(ica.test): ran gofumpt

* feat(ica.test): got two cases of cosmwasm tests working in relay

* style(ica.test): ran gofumpt

* feat(ica): started progress on recursive handling of Anys

* imp(ica.test): added a new test case for ica json encoding, this fails

* feat(ica): achieved total json serialization (excluding any lists)

* refactor(ica): made function shorter and removed duplicated code

* style(ica): ran gofumpt

* imp(ica): added more err handling code

* refactor(ica): made deserialize code shorter

* style(ica): made linter a bit more happy

* fix(ica.test): fixed one codec test case

* feat(ica): added []Any handling code

* fix(ica): added more safety

* nit: deleted testing codec.go

* feat(ica): all works

* style(ica): ran gofumpt

* style(ica): made linter happy

* refactor(ica): reduced code duplication

* nit(ica): uncommented some test cases

* imp(ica.test): added more test cases

* feat(ica.test): finished test cases

* style(ica.test): reorganized test cases

* refactor(ica.test): combined the two test cases into one

* style(ica.test): ran gofumpt

* style(ica.test): renamed wallet address

* fix(ica.test): fixed test case names

* imp(ica.test): added more test cases

* style(ica.test): ran gofumpt

* test(ica): added more codec test cases

* style(ica.test): ran gofumpt

* feat(ica): removed JSONAny and JSONCosmosTx types

* feat(ica): implemented json encoding using module codec

* fix(ica.test): tests now match the new codec implementation

* fix(ica.test): fixed the tests to the new implementation

* style(ica.test): reorgenized the order of tests so that git diff makes sense

* imp(ica/controller): controller codec need not be codec.Codec

* imp(ica): replaced BinaryCodec with Codec

* test(ica): fixed codec test

* docs(ica.test): codec comment updated

* docs(ica.test): updated comments

* style(ica.test): removed 'from cosmwasm' from test case name as it is aparent from test name

* style(ica.test): ran gofumpt

* fix: fix merge error

* deps(ica): replaced sdk.NewInt with sdkmath.NewInt

* style(ica): ran 'gofumpt'

* imp(ica): removed redundant cosmwasm tests

* revert: "imp(ica): removed redundant cosmwasm tests"

This reverts commit 5123fba.

* imp(ica.test): made codec_test  human readable

* imp(ica.test): made relay_test human readable

* style(ica.test): ran 'golanci-lint run --fix'

* imp(ica/host): created 'GetAppMetadata' function

* refactor(ica/host): used GetAppMetadata function

* imp(ica.test): removed unneeded encoding argument

* imp(ica): removed ErrUnsupportedEncoding

* imp(ica.test): used suite chainB height instead of clienttypes.NewHeight(1, 100)

* imp(ica.test): add nil check for unsupported encoding

* imp(ica.test): added a empty/nil checks

* style(ica.test): renamed version variable to TestVersionWithJSONEncoding

* imp(ica): wrapped some errors

* style(ica): ran 'golanci-lint run --fix'

* style(ica)!: renamed EncodingJSON to EncodingProto3JSON

* docs(ica): improved godocs

* imp(ica): passing codec instead of binary codec

* style(ica): improved error messages and godocs

* docs(ica.test): improved godocs for tests

* imp(ica.test): improved unsupported encoding test case slightly

* style(ica.test): test style improvements

* imp(ica.test): added expError to some codec tests

* imp(ica.test): added more error type checks to codec tests

* style(ica.test): ran 'golangci-lint run --fix'

* imp(ica/host.test): added 'TestMetadataNotFound'

* imp(ica/host.test): reduce test size

* docs(ica/host.test): updated godocs for test

* docs(ica/host): improved godoc

* imp(ica/host): made GetAppMetadata private

---------

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
srdtrk added a commit that referenced this pull request Jul 6, 2023
…#3796) (#4006)

* feat(ica)!: support json tx encoding for interchain accounts (#3796)

* feat(ica): added EncodingJson to supported encodings

* imp(ica): changed the type of cdc to Codec in ica/host

* imp(ica): changed the type of cdc to Codec in ica/controller

* imp(ica.test): added a test cases for EncodingJSON

* imp(ica): created invalid encoding err

* feat(ica)!: first prototype of json supporting DeserializeCosmosTx

* docs(ica): updated godoc of DeserializeCosmosTx

* docs(ica): added comments to DeserializeCosmosTx

* fix(ica.test): fixed tests for DeserializeCosmosTx

* fix(ica): fixed 'OnRecvPacket' in relay.go

* fix(ica): fixed unhandled error

* style(ica): made DeserializeCosmosTx more compact

* fix(ica/host.cli.test): fixed a cli test

* style(ica): ran gofumpt

* style(ica): changed err message

* feat(ica): first prototype of SerializeCosmosTx is implemented

* fix(ica): fixed codec tests

* fix(ica/host.test): fix test

* fix(ica/host.test): fix test

* fix(ica/host.cli): cli always uses protobuf

* nil(ica/host.test): removed unneeded comment

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(fee.test): fix test

* nit: temporary save commit

* fix(ica): fixed json serde tests not passing

* fix(ica): fix panic if message does not implement sdk.Msg

* imp(ica): improved json serde functions

* style(ica): pleased the linter

* style(ica): ran gofumpt

* fix(e2e): fix compilation errors by adding icatypes.EncodingProtobuf arg to serde functions

* feat(ica.test): added important wip test for deserializing directly from cosmwasm

* imp(ica.test): added a new test case to cw codec unit test

* imp(ica): added another test case

* imp(ica.test): added another test case

* imp(ica.test): added another test case

* style(ica.test): improved test style

* style(ica.test): improved test style

* style(ica.test): ran gofumpt

* imp(ica.test): added json encoding version string for testing

* imp(ica.test): added new 'NewJSONICAPath' function

* imp(ica.test): added encoding field to ica test setup functions

* fix(ica.test): fixed test setups using the new encoding field

* feat(ica.test): added json test case

* style(ica.test): ran gofumpt

* feat(ica.test): got two cases of cosmwasm tests working in relay

* style(ica.test): ran gofumpt

* feat(ica): started progress on recursive handling of Anys

* imp(ica.test): added a new test case for ica json encoding, this fails

* feat(ica): achieved total json serialization (excluding any lists)

* refactor(ica): made function shorter and removed duplicated code

* style(ica): ran gofumpt

* imp(ica): added more err handling code

* refactor(ica): made deserialize code shorter

* style(ica): made linter a bit more happy

* fix(ica.test): fixed one codec test case

* feat(ica): added []Any handling code

* fix(ica): added more safety

* nit: deleted testing codec.go

* feat(ica): all works

* style(ica): ran gofumpt

* style(ica): made linter happy

* refactor(ica): reduced code duplication

* nit(ica): uncommented some test cases

* imp(ica.test): added more test cases

* feat(ica.test): finished test cases

* style(ica.test): reorganized test cases

* refactor(ica.test): combined the two test cases into one

* style(ica.test): ran gofumpt

* style(ica.test): renamed wallet address

* fix(ica.test): fixed test case names

* imp(ica.test): added more test cases

* style(ica.test): ran gofumpt

* test(ica): added more codec test cases

* style(ica.test): ran gofumpt

* feat(ica): removed JSONAny and JSONCosmosTx types

* feat(ica): implemented json encoding using module codec

* fix(ica.test): tests now match the new codec implementation

* fix(ica.test): fixed the tests to the new implementation

* style(ica.test): reorgenized the order of tests so that git diff makes sense

* imp(ica/controller): controller codec need not be codec.Codec

* imp(ica): replaced BinaryCodec with Codec

* test(ica): fixed codec test

* docs(ica.test): codec comment updated

* docs(ica.test): updated comments

* style(ica.test): removed 'from cosmwasm' from test case name as it is aparent from test name

* style(ica.test): ran gofumpt

* fix: fix merge error

* deps(ica): replaced sdk.NewInt with sdkmath.NewInt

* style(ica): ran 'gofumpt'

* imp(ica): removed redundant cosmwasm tests

* revert: "imp(ica): removed redundant cosmwasm tests"

This reverts commit 5123fba.

* imp(ica.test): made codec_test  human readable

* imp(ica.test): made relay_test human readable

* style(ica.test): ran 'golanci-lint run --fix'

* imp(ica/host): created 'GetAppMetadata' function

* refactor(ica/host): used GetAppMetadata function

* imp(ica.test): removed unneeded encoding argument

* imp(ica): removed ErrUnsupportedEncoding

* imp(ica.test): used suite chainB height instead of clienttypes.NewHeight(1, 100)

* imp(ica.test): add nil check for unsupported encoding

* imp(ica.test): added a empty/nil checks

* style(ica.test): renamed version variable to TestVersionWithJSONEncoding

* imp(ica): wrapped some errors

* style(ica): ran 'golanci-lint run --fix'

* style(ica)!: renamed EncodingJSON to EncodingProto3JSON

* docs(ica): improved godocs

* imp(ica): passing codec instead of binary codec

* style(ica): improved error messages and godocs

* docs(ica.test): improved godocs for tests

* imp(ica.test): improved unsupported encoding test case slightly

* style(ica.test): test style improvements

* imp(ica.test): added expError to some codec tests

* imp(ica.test): added more error type checks to codec tests

* style(ica.test): ran 'golangci-lint run --fix'

* imp(ica/host.test): added 'TestMetadataNotFound'

* imp(ica/host.test): reduce test size

* docs(ica/host.test): updated godocs for test

* docs(ica/host): improved godoc

* imp(ica/host): made GetAppMetadata private

---------

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
(cherry picked from commit e5b057d)

# Conflicts:
#	modules/apps/27-interchain-accounts/controller/keeper/keeper.go
#	modules/apps/27-interchain-accounts/controller/keeper/msg_server_test.go
#	modules/apps/27-interchain-accounts/host/client/cli/tx_test.go
#	modules/apps/27-interchain-accounts/host/ibc_module_test.go
#	modules/apps/27-interchain-accounts/host/keeper/keeper.go
#	modules/apps/27-interchain-accounts/host/keeper/keeper_test.go
#	modules/apps/27-interchain-accounts/host/keeper/relay.go
#	modules/apps/27-interchain-accounts/host/keeper/relay_test.go
#	modules/apps/27-interchain-accounts/types/codec.go
#	modules/apps/27-interchain-accounts/types/codec_test.go

* fix(ica): fixed backport conflicts

* style(ica/host): Update modules/apps/27-interchain-accounts/host/keeper/keeper.go

Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>

* style(ica): ran gofumpt

---------

Co-authored-by: srdtrk <59252793+srdtrk@users.noreply.github.com>
Co-authored-by: srdtrk <srdtrk@hotmail.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
colin-axner added a commit that referenced this pull request Jul 25, 2023
* update SetupWithGenesisValSet func

* sdk 50 first go

* add go workspace

* make proto-gen, cleanup

* additiona cleanup of imports

* updates...

* handle expedited proposal bools

* restructure modules

* pre revert commit

* Revert "restructure modules"

This reverts commit 4580f76.

* correctly migrate modules

* migrate parameter store

* fix calls to NewContext

* tidy and enable thelper

* use thelper and disable depguard

* use latest golangci-lint in ci

* upgrade to go 1.20 and newer protobuf builder to reduce v50 changeset

* more cleanup, 5% of tests pass

* add go work

* bumps

* set up rootmultistore in the new way and address WrongArgCount lints

* fixing

* Merge branch 'sdk-50' of https://github.com/notional-labs/ibc-go into sdk-50

* register modulebasicmanager in app.go

* add module register in app.go

* Merge branch 'sdk-50' of https://github.com/notional-labs/ibc-go into sdk-50

* fix the upgrade module's return

* all errors now checked

* update FinalizeBlock height input

* update FinalizeBlock height input

* revert changes to the capability module path

* add circuit breaker

* Begin to use modulebasicmanager

* rename Marshaler to Codec

* account for modulebasicmanager

* fix setup()

* fix import cycle

* use appcodec for setuptestingapp

* add missing IBCKeeper initialize and remove unused module from module Manager

* update SetupWithGenesisValSet func

* fixups

* remove argument from NewContext

* remove unused code

* refactor FundAccount usage

* fix test

* coins.IsEqual -> coins.Equal

* replace errorsmod path

* fix SetupTest

* remove unused variable

* change function origin

* sdk -> storetypes

* replace name

* cleanup app.go like goland diff ~/ibc-go/testing/simapp ~/cosmos-sdk/simapp

* ModuleManager

* add makeCommit func

* fixing

* minor

* remove double imports

* linting

* add interface registry for ibc light client

* register client state

* bump cometbft to the latest commit from the v0.38.x branch

* parallel tests

* parallelize one more test

* undeprecate stuff

* unwrap sdk context: deprecated

* big ctx unwrapping

* accountI

* undeprecate events

* amino

* 29-fee amino

* add interface registry solomachine

* change to legacy context

* add dockerfile

* try debugging

* eliminate changes to .github

* Revert "parallel tests"

This reverts commit 69933c3.

* make some of the changes suggested by @alpe / review wasmd's implementation of code similar to testing/chain.go

* push changes to chain.go w/ attribution

* correctly eliminate changes from .github

* remove the compatiblity test matrices

* remove all of .github

* re-add .github checked out from the feature branch

* revert gitignore changes

* remove .dockerignore

* ensure no changes to docs and ci config

* fix setup

* revert the addition of go.work

* lint

* fix .github

* uncomment

* sync

* remove go.work.sum

* tidy

* fix issue in GetSimApp

* correct number of variables in export.go

* sdk.Context -> context.Context

* begin to fix queries for ica

* this commit will allow us to separate capability

* break out capability

* fix

* fix accountkeeper

* fix call to clear validator historical rewards in export.go

* fix transfer_authorization.go

* fix authz types in transfer_authorization_test.go

* lint

* fix: apply SDK app hash fix

* go mod tidy in capability

* tidy

* handle errors in export

* fix lint in root.go

* refactor: change sdk.Events usage to []abci.Event

* fix: e2e build

* bumps and fix the proposal test

* bumps for capability

* use 0.13.3 proto-gen

* bring in new changes to app.go and follow @alpe's advice on versioning and go-metrics

* add an abci.go file

* various bumps to resolve the go-metrics issue

* tidy capability module

* actually tidy capability module

* various updates, linting

* add attributeKeyData to emitted events

* begin with the acknowledgement

* Update modules/apps/27-interchain-accounts/module.go

Co-authored-by: Marko <marko@baricevic.me>

* Update modules/capability/module.go

Co-authored-by: Marko <marko@baricevic.me>

* Update modules/apps/27-interchain-accounts/module.go

Co-authored-by: Marko <marko@baricevic.me>

* return nil error in the capability module's beginblock

* use sdk's mustsortjson

* use the sdk's MustSortJSON

* lint

* fix: test fixes in 02-client

* fix: update mock priv val to match cometbft

* update storetypes from the sdk types library

* lint

* improvement(api)!: remove unused `EventTypeTimeoutPacketOnClose` (#3806)

* testing: add function `RelayPacketWithResults` (#3986)

* build(deps): Bump bufbuild/buf-setup-action from 1.23.0 to 1.23.1 (#3994)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.23.0 to 1.23.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/bufbuild/buf-setup-action/commit/a2450ddf330ebcbbb88645837933e7141568fd09"><code>a2450dd</code></a> Release v1.23.1 (<a href="https://redirect.github.com/bufbuild/buf-setup-action/issues/136">#136</a>)</li>
<li>See full diff in <a href="https://github.com/bufbuild/buf-setup-action/compare/v1.23.0...v1.23.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bufbuild/buf-setup-action&package-manager=github_actions&previous-version=1.23.0&new-version=1.23.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

* abcitxresult

* feat(ica)!: support json tx encoding for interchain accounts (#3796)

* feat(ica): added EncodingJson to supported encodings

* imp(ica): changed the type of cdc to Codec in ica/host

* imp(ica): changed the type of cdc to Codec in ica/controller

* imp(ica.test): added a test cases for EncodingJSON

* imp(ica): created invalid encoding err

* feat(ica)!: first prototype of json supporting DeserializeCosmosTx

* docs(ica): updated godoc of DeserializeCosmosTx

* docs(ica): added comments to DeserializeCosmosTx

* fix(ica.test): fixed tests for DeserializeCosmosTx

* fix(ica): fixed 'OnRecvPacket' in relay.go

* fix(ica): fixed unhandled error

* style(ica): made DeserializeCosmosTx more compact

* fix(ica/host.cli.test): fixed a cli test

* style(ica): ran gofumpt

* style(ica): changed err message

* feat(ica): first prototype of SerializeCosmosTx is implemented

* fix(ica): fixed codec tests

* fix(ica/host.test): fix test

* fix(ica/host.test): fix test

* fix(ica/host.cli): cli always uses protobuf

* nil(ica/host.test): removed unneeded comment

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(fee.test): fix test

* nit: temporary save commit

* fix(ica): fixed json serde tests not passing

* fix(ica): fix panic if message does not implement sdk.Msg

* imp(ica): improved json serde functions

* style(ica): pleased the linter

* style(ica): ran gofumpt

* fix(e2e): fix compilation errors by adding icatypes.EncodingProtobuf arg to serde functions

* feat(ica.test): added important wip test for deserializing directly from cosmwasm

* imp(ica.test): added a new test case to cw codec unit test

* imp(ica): added another test case

* imp(ica.test): added another test case

* imp(ica.test): added another test case

* style(ica.test): improved test style

* style(ica.test): improved test style

* style(ica.test): ran gofumpt

* imp(ica.test): added json encoding version string for testing

* imp(ica.test): added new 'NewJSONICAPath' function

* imp(ica.test): added encoding field to ica test setup functions

* fix(ica.test): fixed test setups using the new encoding field

* feat(ica.test): added json test case

* style(ica.test): ran gofumpt

* feat(ica.test): got two cases of cosmwasm tests working in relay

* style(ica.test): ran gofumpt

* feat(ica): started progress on recursive handling of Anys

* imp(ica.test): added a new test case for ica json encoding, this fails

* feat(ica): achieved total json serialization (excluding any lists)

* refactor(ica): made function shorter and removed duplicated code

* style(ica): ran gofumpt

* imp(ica): added more err handling code

* refactor(ica): made deserialize code shorter

* style(ica): made linter a bit more happy

* fix(ica.test): fixed one codec test case

* feat(ica): added []Any handling code

* fix(ica): added more safety

* nit: deleted testing codec.go

* feat(ica): all works

* style(ica): ran gofumpt

* style(ica): made linter happy

* refactor(ica): reduced code duplication

* nit(ica): uncommented some test cases

* imp(ica.test): added more test cases

* feat(ica.test): finished test cases

* style(ica.test): reorganized test cases

* refactor(ica.test): combined the two test cases into one

* style(ica.test): ran gofumpt

* style(ica.test): renamed wallet address

* fix(ica.test): fixed test case names

* imp(ica.test): added more test cases

* style(ica.test): ran gofumpt

* test(ica): added more codec test cases

* style(ica.test): ran gofumpt

* feat(ica): removed JSONAny and JSONCosmosTx types

* feat(ica): implemented json encoding using module codec

* fix(ica.test): tests now match the new codec implementation

* fix(ica.test): fixed the tests to the new implementation

* style(ica.test): reorgenized the order of tests so that git diff makes sense

* imp(ica/controller): controller codec need not be codec.Codec

* imp(ica): replaced BinaryCodec with Codec

* test(ica): fixed codec test

* docs(ica.test): codec comment updated

* docs(ica.test): updated comments

* style(ica.test): removed 'from cosmwasm' from test case name as it is aparent from test name

* style(ica.test): ran gofumpt

* fix: fix merge error

* deps(ica): replaced sdk.NewInt with sdkmath.NewInt

* style(ica): ran 'gofumpt'

* imp(ica): removed redundant cosmwasm tests

* revert: "imp(ica): removed redundant cosmwasm tests"

This reverts commit 5123fba.

* imp(ica.test): made codec_test  human readable

* imp(ica.test): made relay_test human readable

* style(ica.test): ran 'golanci-lint run --fix'

* imp(ica/host): created 'GetAppMetadata' function

* refactor(ica/host): used GetAppMetadata function

* imp(ica.test): removed unneeded encoding argument

* imp(ica): removed ErrUnsupportedEncoding

* imp(ica.test): used suite chainB height instead of clienttypes.NewHeight(1, 100)

* imp(ica.test): add nil check for unsupported encoding

* imp(ica.test): added a empty/nil checks

* style(ica.test): renamed version variable to TestVersionWithJSONEncoding

* imp(ica): wrapped some errors

* style(ica): ran 'golanci-lint run --fix'

* style(ica)!: renamed EncodingJSON to EncodingProto3JSON

* docs(ica): improved godocs

* imp(ica): passing codec instead of binary codec

* style(ica): improved error messages and godocs

* docs(ica.test): improved godocs for tests

* imp(ica.test): improved unsupported encoding test case slightly

* style(ica.test): test style improvements

* imp(ica.test): added expError to some codec tests

* imp(ica.test): added more error type checks to codec tests

* style(ica.test): ran 'golangci-lint run --fix'

* imp(ica/host.test): added 'TestMetadataNotFound'

* imp(ica/host.test): reduce test size

* docs(ica/host.test): updated godocs for test

* docs(ica/host): improved godoc

* imp(ica/host): made GetAppMetadata private

---------

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* cleanup after merging json support

* lint

* imp: refactor simapp to more closely resemble the style used in cosmos-sdk (#3874)

* fix testpb

* post-merge cleanup

* Revert "Merge remote-tracking branch 'origin/main' into ibc-go-sdk-50-mark-2"

This reverts commit 0bebbc1, reversing
changes made to a6f3e97.

* remove testing/simapp/abci.go

* remove dummy vote extension handler

* remove copylocks

* revert unneeded changes

* add GetMemKey again

* restore all use of getmemkey

* bump sdk's libraries, cleanup (#214)

* sync

* tidy root and capability

* update sdk's dependencies to ensure we are using the latest revision before debugging

* use "the cosmic condom" (replaces at the end of go.mod) just in case

* Update genesis_test.go

* revert a memkey change

* memstorekey change

* Update modules/apps/27-interchain-accounts/host/client/cli/cli.go

Co-authored-by: Marko <marko@baricevic.me>

* Update keeper_test.go

* don't add tests (reduce diff) (#215)

* don't add tests (reduce diff)

* Update keeper_test.go

* Update grpc_query_test.go

* Update capability_test.go

* use the separated capability module

* sync

* tidy

* remove an unneeded import

* fix ics27 tests

* fix: add back signer and validate basic checks

* fix: coordinator no longer updates time before committing a block

* fix: handle querying validator set for current block

* fix: correctly parse channelID from solomachine

* remove print statement

* Merge feature branch

* bump capability module to v1.0.0-rc2

* fix fee event test

* linter fixes

* comment about replace directive

* merge fix for client test

* remove unused import

* fix capability imports

* adjust timeout

* potentially a better way to test for the event

* Update modules/core/04-channel/keeper/events.go

Co-authored-by: Alexander Peters <alpe@users.noreply.github.com>

* build(deps): Bump bufbuild/buf-setup-action from 1.23.1 to 1.24.0 (#4090)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.23.1 to 1.24.0.
- [Release notes](https://github.com/bufbuild/buf-setup-action/releases)
- [Commits](bufbuild/buf-setup-action@v1.23.1...v1.24.0)

---
updated-dependencies:
- dependency-name: bufbuild/buf-setup-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Use alpine as base image for building simd. (#4067)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* fix: undo unnecessary capability changes

* testing: simplify ica codec setup

* refactor: remove unnecessary begin blocka and end block functions

* fix: add back removed events

* test: add back commented test with fixed logic

* nit: move context unwrapping to callsite

* nit: rename found to err

* nit: remove unnecessary client state registration in solo machine

* nit: formatting

* nit: undo merge conflict change

* fix: grpc err check

* nit: error formatting

* nit: add back linter check to reduce review diffs

* test: fixup channel tests

* test: add back missing tests

* simapp: match sdk structure

* refactor: remove unnecessary code

* remove: unnecessary file

* fix: add back simapp upgrades

* fix: remove added changes from merge conflict

* update sdk

* tidy

* cleanup and add to capbability

* cleanup staking keeper, account keeper, and gov router

* remove height from keeper test

* update proto builder version

* revert changes to the misbehaviour test

* eliminate unnecessary aliases

* tidy capabilities

* bump deps again (to be sure)

* cleanup with changes from sdk upstream

* fix minor delegation address setup in SetupWithGenesisValSet

* minor

* switch to ext vote set

* resolve transfer timeout-height flag redefined on cmd test err

* bump sdk

* tidy

* fix a linting issue in app.go

* use abci instead of abcitypes

* remove named returns

* use latest capability module

* rm unnecessary import alias: pkg context

* updating to latest buf tag for cosmos-sdk

* imp: add in-code docs to ica message authentication

* test: simplify test logic

* nit: testing fixes

* refactor: slim down necessary changes in testing pkg

* refactor: format upgrade handlers properly

* refactor: simapp app.go cleanup

* fix: fix build issue and simplify test code

* rm: root_v2.go

depinject is not supported for ibc-go yet
This file did not build

* refactor: remove unnecessary functions in test_helpers.go

* fix: simd cmd registration

* fix: use AND concatentation for event queries

* go mod tidy

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>
Co-authored-by: Ruslan Akhtariev <rakhtariev@icloud.com>
Co-authored-by: GnaD13 <cpt.meoz@gmail.com>
Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: sontrinh16 <48055119+sontrinh16@users.noreply.github.com>
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: srdtrk <59252793+srdtrk@users.noreply.github.com>
Co-authored-by: Alexander Peters <alpe@users.noreply.github.com>
Co-authored-by: Jim Fasarakis-Hilliard <d.f.hilliard@gmail.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>
colin-axner added a commit that referenced this pull request Sep 4, 2023
* deps: sdk v0.50-beta (#3883)

* update SetupWithGenesisValSet func

* sdk 50 first go

* add go workspace

* make proto-gen, cleanup

* additiona cleanup of imports

* updates...

* handle expedited proposal bools

* restructure modules

* pre revert commit

* Revert "restructure modules"

This reverts commit 4580f76.

* correctly migrate modules

* migrate parameter store

* fix calls to NewContext

* tidy and enable thelper

* use thelper and disable depguard

* use latest golangci-lint in ci

* upgrade to go 1.20 and newer protobuf builder to reduce v50 changeset

* more cleanup, 5% of tests pass

* add go work

* bumps

* set up rootmultistore in the new way and address WrongArgCount lints

* fixing

* Merge branch 'sdk-50' of https://github.com/notional-labs/ibc-go into sdk-50

* register modulebasicmanager in app.go

* add module register in app.go

* Merge branch 'sdk-50' of https://github.com/notional-labs/ibc-go into sdk-50

* fix the upgrade module's return

* all errors now checked

* update FinalizeBlock height input

* update FinalizeBlock height input

* revert changes to the capability module path

* add circuit breaker

* Begin to use modulebasicmanager

* rename Marshaler to Codec

* account for modulebasicmanager

* fix setup()

* fix import cycle

* use appcodec for setuptestingapp

* add missing IBCKeeper initialize and remove unused module from module Manager

* update SetupWithGenesisValSet func

* fixups

* remove argument from NewContext

* remove unused code

* refactor FundAccount usage

* fix test

* coins.IsEqual -> coins.Equal

* replace errorsmod path

* fix SetupTest

* remove unused variable

* change function origin

* sdk -> storetypes

* replace name

* cleanup app.go like goland diff ~/ibc-go/testing/simapp ~/cosmos-sdk/simapp

* ModuleManager

* add makeCommit func

* fixing

* minor

* remove double imports

* linting

* add interface registry for ibc light client

* register client state

* bump cometbft to the latest commit from the v0.38.x branch

* parallel tests

* parallelize one more test

* undeprecate stuff

* unwrap sdk context: deprecated

* big ctx unwrapping

* accountI

* undeprecate events

* amino

* 29-fee amino

* add interface registry solomachine

* change to legacy context

* add dockerfile

* try debugging

* eliminate changes to .github

* Revert "parallel tests"

This reverts commit 69933c3.

* make some of the changes suggested by @alpe / review wasmd's implementation of code similar to testing/chain.go

* push changes to chain.go w/ attribution

* correctly eliminate changes from .github

* remove the compatiblity test matrices

* remove all of .github

* re-add .github checked out from the feature branch

* revert gitignore changes

* remove .dockerignore

* ensure no changes to docs and ci config

* fix setup

* revert the addition of go.work

* lint

* fix .github

* uncomment

* sync

* remove go.work.sum

* tidy

* fix issue in GetSimApp

* correct number of variables in export.go

* sdk.Context -> context.Context

* begin to fix queries for ica

* this commit will allow us to separate capability

* break out capability

* fix

* fix accountkeeper

* fix call to clear validator historical rewards in export.go

* fix transfer_authorization.go

* fix authz types in transfer_authorization_test.go

* lint

* fix: apply SDK app hash fix

* go mod tidy in capability

* tidy

* handle errors in export

* fix lint in root.go

* refactor: change sdk.Events usage to []abci.Event

* fix: e2e build

* bumps and fix the proposal test

* bumps for capability

* use 0.13.3 proto-gen

* bring in new changes to app.go and follow @alpe's advice on versioning and go-metrics

* add an abci.go file

* various bumps to resolve the go-metrics issue

* tidy capability module

* actually tidy capability module

* various updates, linting

* add attributeKeyData to emitted events

* begin with the acknowledgement

* Update modules/apps/27-interchain-accounts/module.go

Co-authored-by: Marko <marko@baricevic.me>

* Update modules/capability/module.go

Co-authored-by: Marko <marko@baricevic.me>

* Update modules/apps/27-interchain-accounts/module.go

Co-authored-by: Marko <marko@baricevic.me>

* return nil error in the capability module's beginblock

* use sdk's mustsortjson

* use the sdk's MustSortJSON

* lint

* fix: test fixes in 02-client

* fix: update mock priv val to match cometbft

* update storetypes from the sdk types library

* lint

* improvement(api)!: remove unused `EventTypeTimeoutPacketOnClose` (#3806)

* testing: add function `RelayPacketWithResults` (#3986)

* build(deps): Bump bufbuild/buf-setup-action from 1.23.0 to 1.23.1 (#3994)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.23.0 to 1.23.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/bufbuild/buf-setup-action/commit/a2450ddf330ebcbbb88645837933e7141568fd09"><code>a2450dd</code></a> Release v1.23.1 (<a href="https://redirect.github.com/bufbuild/buf-setup-action/issues/136">#136</a>)</li>
<li>See full diff in <a href="https://github.com/bufbuild/buf-setup-action/compare/v1.23.0...v1.23.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bufbuild/buf-setup-action&package-manager=github_actions&previous-version=1.23.0&new-version=1.23.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

* abcitxresult

* feat(ica)!: support json tx encoding for interchain accounts (#3796)

* feat(ica): added EncodingJson to supported encodings

* imp(ica): changed the type of cdc to Codec in ica/host

* imp(ica): changed the type of cdc to Codec in ica/controller

* imp(ica.test): added a test cases for EncodingJSON

* imp(ica): created invalid encoding err

* feat(ica)!: first prototype of json supporting DeserializeCosmosTx

* docs(ica): updated godoc of DeserializeCosmosTx

* docs(ica): added comments to DeserializeCosmosTx

* fix(ica.test): fixed tests for DeserializeCosmosTx

* fix(ica): fixed 'OnRecvPacket' in relay.go

* fix(ica): fixed unhandled error

* style(ica): made DeserializeCosmosTx more compact

* fix(ica/host.cli.test): fixed a cli test

* style(ica): ran gofumpt

* style(ica): changed err message

* feat(ica): first prototype of SerializeCosmosTx is implemented

* fix(ica): fixed codec tests

* fix(ica/host.test): fix test

* fix(ica/host.test): fix test

* fix(ica/host.cli): cli always uses protobuf

* nil(ica/host.test): removed unneeded comment

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(ica/controller.test): fix test

* fix(fee.test): fix test

* nit: temporary save commit

* fix(ica): fixed json serde tests not passing

* fix(ica): fix panic if message does not implement sdk.Msg

* imp(ica): improved json serde functions

* style(ica): pleased the linter

* style(ica): ran gofumpt

* fix(e2e): fix compilation errors by adding icatypes.EncodingProtobuf arg to serde functions

* feat(ica.test): added important wip test for deserializing directly from cosmwasm

* imp(ica.test): added a new test case to cw codec unit test

* imp(ica): added another test case

* imp(ica.test): added another test case

* imp(ica.test): added another test case

* style(ica.test): improved test style

* style(ica.test): improved test style

* style(ica.test): ran gofumpt

* imp(ica.test): added json encoding version string for testing

* imp(ica.test): added new 'NewJSONICAPath' function

* imp(ica.test): added encoding field to ica test setup functions

* fix(ica.test): fixed test setups using the new encoding field

* feat(ica.test): added json test case

* style(ica.test): ran gofumpt

* feat(ica.test): got two cases of cosmwasm tests working in relay

* style(ica.test): ran gofumpt

* feat(ica): started progress on recursive handling of Anys

* imp(ica.test): added a new test case for ica json encoding, this fails

* feat(ica): achieved total json serialization (excluding any lists)

* refactor(ica): made function shorter and removed duplicated code

* style(ica): ran gofumpt

* imp(ica): added more err handling code

* refactor(ica): made deserialize code shorter

* style(ica): made linter a bit more happy

* fix(ica.test): fixed one codec test case

* feat(ica): added []Any handling code

* fix(ica): added more safety

* nit: deleted testing codec.go

* feat(ica): all works

* style(ica): ran gofumpt

* style(ica): made linter happy

* refactor(ica): reduced code duplication

* nit(ica): uncommented some test cases

* imp(ica.test): added more test cases

* feat(ica.test): finished test cases

* style(ica.test): reorganized test cases

* refactor(ica.test): combined the two test cases into one

* style(ica.test): ran gofumpt

* style(ica.test): renamed wallet address

* fix(ica.test): fixed test case names

* imp(ica.test): added more test cases

* style(ica.test): ran gofumpt

* test(ica): added more codec test cases

* style(ica.test): ran gofumpt

* feat(ica): removed JSONAny and JSONCosmosTx types

* feat(ica): implemented json encoding using module codec

* fix(ica.test): tests now match the new codec implementation

* fix(ica.test): fixed the tests to the new implementation

* style(ica.test): reorgenized the order of tests so that git diff makes sense

* imp(ica/controller): controller codec need not be codec.Codec

* imp(ica): replaced BinaryCodec with Codec

* test(ica): fixed codec test

* docs(ica.test): codec comment updated

* docs(ica.test): updated comments

* style(ica.test): removed 'from cosmwasm' from test case name as it is aparent from test name

* style(ica.test): ran gofumpt

* fix: fix merge error

* deps(ica): replaced sdk.NewInt with sdkmath.NewInt

* style(ica): ran 'gofumpt'

* imp(ica): removed redundant cosmwasm tests

* revert: "imp(ica): removed redundant cosmwasm tests"

This reverts commit 5123fba.

* imp(ica.test): made codec_test  human readable

* imp(ica.test): made relay_test human readable

* style(ica.test): ran 'golanci-lint run --fix'

* imp(ica/host): created 'GetAppMetadata' function

* refactor(ica/host): used GetAppMetadata function

* imp(ica.test): removed unneeded encoding argument

* imp(ica): removed ErrUnsupportedEncoding

* imp(ica.test): used suite chainB height instead of clienttypes.NewHeight(1, 100)

* imp(ica.test): add nil check for unsupported encoding

* imp(ica.test): added a empty/nil checks

* style(ica.test): renamed version variable to TestVersionWithJSONEncoding

* imp(ica): wrapped some errors

* style(ica): ran 'golanci-lint run --fix'

* style(ica)!: renamed EncodingJSON to EncodingProto3JSON

* docs(ica): improved godocs

* imp(ica): passing codec instead of binary codec

* style(ica): improved error messages and godocs

* docs(ica.test): improved godocs for tests

* imp(ica.test): improved unsupported encoding test case slightly

* style(ica.test): test style improvements

* imp(ica.test): added expError to some codec tests

* imp(ica.test): added more error type checks to codec tests

* style(ica.test): ran 'golangci-lint run --fix'

* imp(ica/host.test): added 'TestMetadataNotFound'

* imp(ica/host.test): reduce test size

* docs(ica/host.test): updated godocs for test

* docs(ica/host): improved godoc

* imp(ica/host): made GetAppMetadata private

---------

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* cleanup after merging json support

* lint

* imp: refactor simapp to more closely resemble the style used in cosmos-sdk (#3874)

* fix testpb

* post-merge cleanup

* Revert "Merge remote-tracking branch 'origin/main' into ibc-go-sdk-50-mark-2"

This reverts commit 0bebbc1, reversing
changes made to a6f3e97.

* remove testing/simapp/abci.go

* remove dummy vote extension handler

* remove copylocks

* revert unneeded changes

* add GetMemKey again

* restore all use of getmemkey

* bump sdk's libraries, cleanup (#214)

* sync

* tidy root and capability

* update sdk's dependencies to ensure we are using the latest revision before debugging

* use "the cosmic condom" (replaces at the end of go.mod) just in case

* Update genesis_test.go

* revert a memkey change

* memstorekey change

* Update modules/apps/27-interchain-accounts/host/client/cli/cli.go

Co-authored-by: Marko <marko@baricevic.me>

* Update keeper_test.go

* don't add tests (reduce diff) (#215)

* don't add tests (reduce diff)

* Update keeper_test.go

* Update grpc_query_test.go

* Update capability_test.go

* use the separated capability module

* sync

* tidy

* remove an unneeded import

* fix ics27 tests

* fix: add back signer and validate basic checks

* fix: coordinator no longer updates time before committing a block

* fix: handle querying validator set for current block

* fix: correctly parse channelID from solomachine

* remove print statement

* Merge feature branch

* bump capability module to v1.0.0-rc2

* fix fee event test

* linter fixes

* comment about replace directive

* merge fix for client test

* remove unused import

* fix capability imports

* adjust timeout

* potentially a better way to test for the event

* Update modules/core/04-channel/keeper/events.go

Co-authored-by: Alexander Peters <alpe@users.noreply.github.com>

* build(deps): Bump bufbuild/buf-setup-action from 1.23.1 to 1.24.0 (#4090)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.23.1 to 1.24.0.
- [Release notes](https://github.com/bufbuild/buf-setup-action/releases)
- [Commits](bufbuild/buf-setup-action@v1.23.1...v1.24.0)

---
updated-dependencies:
- dependency-name: bufbuild/buf-setup-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Use alpine as base image for building simd. (#4067)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* fix: undo unnecessary capability changes

* testing: simplify ica codec setup

* refactor: remove unnecessary begin blocka and end block functions

* fix: add back removed events

* test: add back commented test with fixed logic

* nit: move context unwrapping to callsite

* nit: rename found to err

* nit: remove unnecessary client state registration in solo machine

* nit: formatting

* nit: undo merge conflict change

* fix: grpc err check

* nit: error formatting

* nit: add back linter check to reduce review diffs

* test: fixup channel tests

* test: add back missing tests

* simapp: match sdk structure

* refactor: remove unnecessary code

* remove: unnecessary file

* fix: add back simapp upgrades

* fix: remove added changes from merge conflict

* update sdk

* tidy

* cleanup and add to capbability

* cleanup staking keeper, account keeper, and gov router

* remove height from keeper test

* update proto builder version

* revert changes to the misbehaviour test

* eliminate unnecessary aliases

* tidy capabilities

* bump deps again (to be sure)

* cleanup with changes from sdk upstream

* fix minor delegation address setup in SetupWithGenesisValSet

* minor

* switch to ext vote set

* resolve transfer timeout-height flag redefined on cmd test err

* bump sdk

* tidy

* fix a linting issue in app.go

* use abci instead of abcitypes

* remove named returns

* use latest capability module

* rm unnecessary import alias: pkg context

* updating to latest buf tag for cosmos-sdk

* imp: add in-code docs to ica message authentication

* test: simplify test logic

* nit: testing fixes

* refactor: slim down necessary changes in testing pkg

* refactor: format upgrade handlers properly

* refactor: simapp app.go cleanup

* fix: fix build issue and simplify test code

* rm: root_v2.go

depinject is not supported for ibc-go yet
This file did not build

* refactor: remove unnecessary functions in test_helpers.go

* fix: simd cmd registration

* fix: use AND concatentation for event queries

* go mod tidy

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>
Co-authored-by: Ruslan Akhtariev <rakhtariev@icloud.com>
Co-authored-by: GnaD13 <cpt.meoz@gmail.com>
Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: sontrinh16 <48055119+sontrinh16@users.noreply.github.com>
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: srdtrk <59252793+srdtrk@users.noreply.github.com>
Co-authored-by: Alexander Peters <alpe@users.noreply.github.com>
Co-authored-by: Jim Fasarakis-Hilliard <d.f.hilliard@gmail.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* tidy

* update cosmos-sdk

* fix changes

* lint the v50 branch and update linter version used

* chore: update sdk 50 branch from main (#4316)

* build(deps): Bump bufbuild/buf-setup-action from 1.25.0 to 1.25.1 (#4286)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.25.0 to 1.25.1.
- [Release notes](https://github.com/bufbuild/buf-setup-action/releases)
- [Commits](bufbuild/buf-setup-action@v1.25.0...v1.25.1)

---
updated-dependencies:
- dependency-name: bufbuild/buf-setup-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* deps: bump golangci-lint to v1.53.3 (#4276)

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* testing: fix usage on TimeoutPacket to use counterparty portID/channelID in nextSeqRecv query (#4319)

* build(deps): Bump bufbuild/buf-setup-action from 1.25.1 to 1.26.0 (#4321)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.25.1 to 1.26.0.
- [Release notes](https://github.com/bufbuild/buf-setup-action/releases)
- [Commits](bufbuild/buf-setup-action@v1.25.1...v1.26.0)

---
updated-dependencies:
- dependency-name: bufbuild/buf-setup-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* use go1.21

* bump cosmos-sdk

* increase golangci timeout

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>

* Implement appmodule.AppModule interface for ibc-go packages' modules (#4332)

* implement for ica

* implement for fee

* implement for transfer

* implement for core

* remove usage of basic manager in commands

* remove basic managers from tx/q cmds arguments

* Fix linting issues.

---------

Co-authored-by: DimitrisJim <d.f.hilliard@gmail.com>

* update cosmos-sdk in v50 feature branch (#4392)

* update cosmos-sdk

* update cosmos-sdk's submodules

* updadte to sdk with updated modules

* update capability module

* update to the latest versions of modules in sdk 50

* fix

* revert change to golangci-lint timeout

* Update testing/simapp/export.go

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* eliminate redundant call

* re-add status command

* fix build issues

* Update golangci.yml

---------

Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* deps: update the sdk 50 branch to main (#4391)

* build(deps): Bump bufbuild/buf-setup-action from 1.25.0 to 1.25.1 (#4286)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.25.0 to 1.25.1.
- [Release notes](https://github.com/bufbuild/buf-setup-action/releases)
- [Commits](bufbuild/buf-setup-action@v1.25.0...v1.25.1)

---
updated-dependencies:
- dependency-name: bufbuild/buf-setup-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* deps: bump golangci-lint to v1.53.3 (#4276)

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* testing: fix usage on TimeoutPacket to use counterparty portID/channelID in nextSeqRecv query (#4319)

* build(deps): Bump bufbuild/buf-setup-action from 1.25.1 to 1.26.0 (#4321)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.25.1 to 1.26.0.
- [Release notes](https://github.com/bufbuild/buf-setup-action/releases)
- [Commits](bufbuild/buf-setup-action@v1.25.1...v1.26.0)

---
updated-dependencies:
- dependency-name: bufbuild/buf-setup-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* imp: use `types.MetadataFromVersion` helper function for callback handlers (#4290)

* feat(callbacks): adr8 implementation (#3939)

* imp(callbacks.test): added 'TestUnmarshalPacketData'

* docs(callbacks): simapp comment for callback stacks updated

* imp(callbacks.test): added 'TestOnChanCloseInit'

* fix(simapp): passed feeKeeper as channel keeper to callbacks middleware

* imp(callbacks.test): added 'TestSendPacket'

* imp(callbacks.test): added TestWriteAcknowledgement

* imp(callbacks.test): added 'TestOnChanCloseConfirm'

* imp(callbacks.test): added 'TestOnAcknowledgementPacketError'

* imp(callbacks.test): added 'TestOnTimeoutPacketError'

* imp(callbacks.test): added export_test.go

* imp(callbacks.test): added 'TestProcessCallbackDataGetterError'

* imp(callbacks.test): added events tests

* imp(callbacks): using PacketDataUnmarshaler to unmarshal instead of the full app

* imp(callbacks): updated the api of getCallbackData functions

* imp(callbacks): added TestGetSourceCallbackDataTransfer and TestGetDestCallbackDataTransfer

* imp(callbacks.test): added export_test for type tests

* imp(callbacks.test): added 'TestGetCallbackDataErrors'

* imp(fee_test): added 'TestUnmarshalPacketDataError'

* style(adr8): renamed the contract api functions

* feat(callbacks.test): added incentivized transfer tests

* imp(callbacks_test): added timeout test case to fee test

* style(ica.adr8): updated godocs

* style(ica.adr8): updated godocs

* feat(adr8): replaced PacketDataUnmarshaller with PacketInfoProvider

* imp(callbacks): added sender and receiver addresses to ContractKeeper interface

* docs(ica): godocs updated

* style(adr8): renamed PacketDataUnmarshaler to PacketInfoProvider

* style(callbacks): renamed channel to ics4Wrapper

* docs(callbacks): updated godocs

* imp(adr8_test): tested new GetPacketSender and GetPacketReceiver interface functions

* feat(adr8): added IBCSendPacketCallback to ContractKeeper

* imp(testing/mock): added callback counter helpers

* imp(ica, transfer): added WithICS4Wrapper api function

* feat(callbacks_test): SendPacket tests are now passing

* imp(fee_test): added more tests to TestPacketInfoProviderInterfaceError

* style(callbacks): renamed PacketUnmarshalerIBCModule to PacketInfoProviderIBCModule

* feat(callbacks): added maxGas param to middleware

* fix(callbacks): fixed SendPacket

* feat(callbacks): implemented WriteAcknowledgement callbacks

* style(mock): updated the name of callback counter

* fix(callbacks): fixed using channelID instead of portID

* feat(callbacks): all acknowledgements implemented

* style(ica.adr8): used more consistent formating in ica and transfer

* docs(ica, transfer): updated 'WithICS4Wrapper's godocs

* imp(callbacks_test): improved WriteAcknowledgement tests

* tests(mock, callbacks): moved mock PacketUnmarshaller logic to mock module

* tests(callbacks): added mock async ack test

* ci: CODEOWNERS updated to include callbacks

* docs(callbacks_test): updated godocs

* imp(callbacks): only handling oog panic in recovery now

* style(callbacks): fix variable name

* imp(mock): mock panic is now a real oog panic

* tests(adr8): added state reversal test

* style(callbacks): renamed hasEnoughGas to remainingGasIsAtGasLimit

* tests(adr8): moved panic and error treshold to 400k and 500k gas respectively

* fix(callbacks): fixed panic handling

* imp(callbacks_test): added a low relayer gas test

* fix(transfer_test.adr8): fixed a typo in a test case

* docs(callbacks): improved godocs

* imp(callbacks): added CommitGasLimit to CallbackData for events

* imp(callbacks): AttributeKeyCallbackCommitGasLimit added to events

* fix(callbacks): fixed major gas panic issue

* imp(callbacks_test): improved the oog panic test

* style(callbacks): used '.GetData()' instead of '.Data'

* docs(adr8): updated some godocs

* style(ica/host_test): fixed test case memo styling

* style(ica/controller): docs and style fixes

* imp(ica/host): adr8 removed from icahost

* docs(adr8): updated godocs for withics4wrapper

* docs(adr8): updated godocs for gasLimit specs

* style(adr8_test): fixed test case naming

* docs(adr8): updated godocs for some interface functions

* style(fee.adr8): renamed unmarshaler to provider in some cases

* imp(adr8_test): improved mock unmarshaler

* docs(transfer.adr8): updated godocs

* docs(adr8): updated godocs

* docs(adr8): updated godocs

* docs(callbacks): updated godocs

* style(callbacks): moved SendPacket func to top

* docs(callbacks): updated godocs

* imp(callbacks): logging to debug instead of info

* style(callbacks): renamed remainingGasIsAtGasLimit -> commitTxIfOutOfGas

* docs(callbacks): updated godocs

* docs(callbacks): updated event docs

* fix(callbacks): added CallbackTypeSendPacket to events

* imp(callbacks): events emit port and channel id based on src vs dest

* docs(callbacks): updated godocs

* imp(callbacks): changed some event to a log

* imp(callbacks): improved log

* docs(callbacks): updated godocs

* imp(callbacks): unsuccessful ack now bypasses callback in 'OnRecvPacket'

* imp(callbacks_test): added mock logger

* imp(mock): created mock logger

* style: ran 'golangci-lint run --fix'

* style(callbacks): made code more concise

* style(callbacks): renamed PacketInfoProviderIBCModule to CallbacksCompatibleModule

* style(callbacks): improved they style of getCallbackData and negated the bool for better readability

* style(callbacks): used constants for 'success' and 'failure' attributes

* docs(adr8): updated godocs

* style(ica/controller): added more explicit prefix check

* imp(adr8): moved 'GetPacketSender' and 'GetPacketReceiver' to 'CallbackPacketData' interface

* style(adr8): renamed PacketInfoProvider to PacketDataUnmarshaler

* imp(callbacks_test): switched hostStack for controllerStack

* imp(callbacks_test): added missing test case

* imp(callbacks): callbacks can now reject SendPacket

* imp(callbacks_test): added TestSendPacketReject

* style(callbacks_test): using TestCoin instead

* imp(callbacks_test): added TestWriteAcknowledgementOogError and TestOnTimeoutPacketOogError

* imp(callbacks_test): added TestOnAcknowledgementPacketOogError

* imp(adr8): removed packetReceiver concept

* imp(adr8): removed srcChannelID from GetPacketSender interface

* imp(callbacks): oogError is now simply oogPanic

* imp(callbacks): added more mw initialization notnil checks

* docs(callbacks): updated godocs

* feat(adr8): moved adr8 logic to callbacks middleware

* style(callbacks): replaced AuthAddr -> SenderAddr

* imp(callbacks_test): increased codecov

* docs(adr8): improved some godocs around AdditionalPacketDataProvider interface

* revert(docs): reverted changes to adr8 specs, this needs a seperate PR

* imp(callbacks_test): improved tests slightly

* docs(callbacks): improved godocs for keys.go

* docs(mock.adr8): updated godocs for mock logger

* imp(adr8): changed GetAdditionalData function signature

* imp(callbacks): split AdditionalPacketDataProvider into two interfaces

* style(mock): used interface impl convention

* tests: removed ErrorMock

* style(callbacks_test): improved test style

* style(callbacks_test): improved test name

* style(core, apps): renamed PacketSenderRetriever to PacketData

* style(adr8): conforming to revive linter

* fix(transfer_test, ica/controller_test): fixed failing tests

* style: conforming to revive linter

* nit(ica): removed uneeded diffs

* style(callbacks): some style updates

* docs(callbacks): updated godocs

* imp(callbacks): added 'WithICS4Wrapper'

* style(callbacks): rename GasLimit -> ExecutionGasLimit

* imp(callbacks): allowRetry was removed

* style(callbacks): moved callbackAddr code block above gas logic

* style(callbacks): renamed ContractAddr,SenderAddr ->
ContractAddress,SenderAddress

* style(callbacks): updated godocs and var names for keys and errors

* docs(callbacks): updated godocs for contract keeper

* test: remove unnecessary code

* test: apply review code suggestions

* test: move SendPacket test up in layout

* refactor: panic with errors in NewIBCMiddleware

* test: refactor TestWithICS4Wrapper to simplify and reduce  LOC

* chore: rm mock logger and usage in tests

* nit: explicitly return 0 sequence when error is not nil

* lint: make use of unused test var maxCallbackGas

* imp(callbacks): reduced case logic for eventTrigger

* style(callbacks): improved event keys

* refactor(callbacks): refactored gas logic

* imp(callbacks): empty address returns an error now

* style(callbacks): styled function arguments

* refactor: simplify testing setup for callbacks

* rename: mock's keeper.go to contract_keeper.go

* refactor: remove mock keeper, use only mock contract keeper

* rename: StateCounter -> StateEntryCounter

* nit: simapp in-code docs

* refactor: simplify mock contract keeper process callback

* test: remove unnecessary test cases in transfer/fee integration tests

* imp(callbacks): moved 'callbackDataGetter' logic up a level

* refactor(callbacks): moved emit event logic up a level

* style(callbacks): styled function arguments

* docs(callbacks): improved godocs of contract keeper

* style: renamed CallbackTypeAcknowledgement -> CallbackTypeAcknowledgementPacket

* docs(callbacks): fixed events godocs

* style(callbacks_test): fixed typo

* style(callbacks): rename timeout -> timeout_packet

* style(callbacks): rename ContractAddress -> CallbackAddress

* imp(callbacks): don't handle panics for SendPacket

* style: renamed CallbackTypeWriteAcknowledgement -> CallbackTypeReceivePacket

* style: renamed CallbackType -> CallbackTrigger

* style(callbacks_test): fixed typo in test case

* docs(mock.adr8): updated godocs of contract keeper

* imp(callbacks): moved logging after possible retry

* style(callbacks): renamed function argument callbackType -> callbackTrigger

* imp(callbacks): fixed logger name

* imp(callbacks): 'LogDebugWithPacket' added

* refactor(ibc_middleware_test): turn SendPacket into table test

* test: add test cases for SendPacket table test

* refactor(ibc_middleware_test): turn OnAcknowledgementPacket tests into table tests

* test(OnAcknowledgement): add counter and state entry checks

* test(ica_test): remove duplicate tests

Remove tests which relied on older assertion in mock contract keeper
Tests for contract execution failure can be added with issue #4390

* testing: fix usage on TimeoutPacket to use counterparty portID/channelID in nextSeqRecv query

* test(ica_test): simplify timeout logic

* test(types/callback_test.go): remove unused testing bool

* style: ran golangci-lint

* style: renamed CallbackTrigger -> CallbackType

* refactor(ibc_middleware_test): turn OnTimeout into a table test

* refactor(ibc_middleware_test): turn OnRecvPacket into a table test

* style(callbacks_test): added nolint comments

* style(callbacks_test): fixed some typos

* imp(callbacks_test): added table tests for WriteAcknowledgement'

* imp(callbacks_test): removed dest_callback test cases for ica as it is not supported

* fix(callbacks): fixed send_packet panic handling

* fix(callbacks_test): fix failing tests due to SendPacket panic

* imp(callbacks): added 'AllowRetry' function

* imp(callbacks): processCallback panic recovery logic is simplified

* style(callbacks): updated style of the comment

* fix(callbacks_test): removed potential premature return

* docs(callbacks_test): updated inline comment

* imp(callbacks_test): 'TestProcessCallback' added

* imp(callbacks): upgraded the panic on timeout logic

* docs(callbacks): added inline comments

* imp(callbacks): removed 'LogDebugWithPacket'

* docs(callbacks): updated godocs and inline comments

* imp(callbacks): prevent maxCallbackGas from being 0

* imp(callbacks): removed logger

* imp(callbacks): added 'ErrCannotUnmarshalPacketData'

* imp(callbacks_test): created ''TestGetCallbackData

* imp(callbacks_test): improved 'TestNewIBCMiddleware'

* imp(callbacks): issue#4323 - add strings.Trimspace

* docs(callbacks): issue#4325 - inline comment added for explaining why nil is returned on error

* style(callbacks): passing nil instead of err to events in SendPacket

* docs(callbacks): issue#4325 - added inline comments explaining why some error are only used for event emissions

* imp(callbacks_test): added test cases for '0' user defined gas limit

* imp(simapp): removed unneeded comment

* imp(callbacks_test): using testAccAddress for transfer tests now

---------

Co-authored-by: colin axner <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* Duplicate SimApp into callbacks directory (#4337)

* Remove callbacks wiring in ibc go simapp (#4340)

* Give callbacks its own go.mod (#4341)

* imp(callbacks): remove reconstructed packet logic from 'SendPacket' (#4343)

* style: ran golangci-lint

* imp(callbacks): removed unused packet param from processCallback

* imp(callbacks): removed packet from event functions

* imp(callbacks): removed packet from callbackDataGetter functions

* style(callbacks): reorder func arguments for more consistency

* imp(callbacks_test): using ibcmock.PortID for testing instead of empty string

* style(callbacks): renamed packetData to data in 'GetCallbackData' functions

* fix(callbacks): reordered EmitCallbackEvents parameters during usage

* fix(proto): fix nested msg signer annoation (#4336)

Co-authored-by: Damian Nolan <damiannolan@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* switched back to cosmos/relayer (#4345)

* build(deps): Bump golangci/golangci-lint-action from 3.6.0 to 3.7.0 (#4349)

Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](golangci/golangci-lint-action@v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): Bump bufbuild/buf-setup-action from 1.26.0 to 1.26.1 (#4350)

Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.26.0 to 1.26.1.
- [Release notes](https://github.com/bufbuild/buf-setup-action/releases)
- [Commits](bufbuild/buf-setup-action@v1.26.0...v1.26.1)

---
updated-dependencies:
- dependency-name: bufbuild/buf-setup-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* chore: use IsOpen method in missed places (#4354)

* end of life for v4.1, v4.2, v4.3 (#4335)

* Add linting for callbacks submodule. (#4355)

* docs(simapp): fixed inline middleware wiring comments (#4361)

* docs(callbacks/simapp): fixed inline stack documentation

* docs(testing/simapp): fixed inline stack documentation

* docs(testing/simapp): fixed icacontroller inline stack documentation

* docs(simapp): improved icaController stack's documentation

* docs(callbacks/simapp): review fixes

* bump golangci-lint to latest version

* tidy

* update cosmos-sdk

* update cosmos-sdk's submodules

* updadte to sdk with updated modules

* update capability module

* update to the latest versions of modules in sdk 50

* fix

* revert change to golangci-lint timeout

* Update go.work.example (#4397)

* refactor(ica): packet data unmarshaling logic refactored (#4232)

* refactor(ica): refactored packet data's  unmarshal logic

* fix(ica_test): made tests pass

* imp(ica): changed to UnmarshalJSON api

* docs(ica): added godocs to iapd's 'UnmarshalJSON' method

* test(callbacks): checking that processCallback consumes gas (#4381)

* imp(callbacks_test): checking that processCallback consumes gas from callback execution

* imp(callbacks_test): simplified success test case a bit

* build(deps): Bump cosmossdk.io/math from 1.0.1 to 1.1.2 (#4407)

* build(deps): Bump cosmossdk.io/math from 1.0.1 to 1.1.1

Bumps [cosmossdk.io/math](https://github.com/cosmos/cosmos-sdk) from 1.0.1 to 1.1.1.
- [Release notes](https://github.com/cosmos/cosmos-sdk/releases)
- [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md)
- [Commits](cosmos/cosmos-sdk@math/v1.0.1...math/v1.1.1)

---
updated-dependencies:
- dependency-name: cosmossdk.io/math
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump in e2e, callbacks, tidy.

* bump cosmossdk.io/math to v1.1.2 across all go modules

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: DimitrisJim <d.f.hilliard@gmail.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* deps: update all modules to go 1.21 (#4398)

* refactor: add unparam linter (#4333)

* add unparam linter

* remove unused-param from revive, add comments.

---------

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Jim Fasarakis-Hilliard <d.f.hilliard@gmail.com>

* Update testing/simapp/export.go

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* eliminate redundant call

* re-add status command

* Add callbacks to dependabot. (#4410)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* correct applications -> apps (#4414)

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* deps: proto image builder and golangci-lint (#4413)

* bump the proto image builder and golangci-lint

* address implicit memory aliasing

---------

Co-authored-by: Jim Fasarakis-Hilliard <d.f.hilliard@gmail.com>

* fix build issues

* Bump golangci for callbacks, fix complaints from unparam. (#4417)

* docs(callbacks): added godocs for defensive send packet validation (#4358)

* docs(callbacks): added godocs for send packet validation

* docs(callbacks): improved godocs

* docs(callbacks): used colin and damian suggested doc string

* docs(callbacks): fixed typo

* docs(callbacks): improved a minor typo

* deps: update sdk to latest sdk v0.50 release candidate in mod/capability (#4399)

* update all modules to go 1.2.1

* update golang in the Dockerfile

* update cosmos-sdk in capability module

---------

Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>

* fix: sdk update for callbacks

* fix: update ante handler in callbacks simapp

* fix: recopy ibc-go simapp

* fix: various sdk update issues

* test(callbacks): simplified mock contract keeper's processCallback logic (#4375)

* imp(callbacks/mock/contract_keeeper): improved contract keeper logic

* imp(callbacks_test): fixed transfer_test.go

* imp(callbacks_test): fixed ica_test.go

* imp(callbacks_test): fixed fee_transfer_test.go

* style(callbacks_test): removed unneeded gas_limit

* style: ran golangci-lint

* imp(callbacks_test): implemented simplified logic

* imp(callbacks_test): removed unneeded variable

* imp(callbacks): implemented some review feedback

* docs(callbacks/simapp): updated godocs of mock contract keeper functions

* Support e2e tests for callback module SimApp (#4406)

* deps: update interchaintest to latest upstream code (#4396)

* update interchaintest to latest upstream code

* update all modules to go 1.2.1

* update golang in the Dockerfile

* use sdk math in the right places

* math to int64 where needed

* additional patches

* attempt (again)

* test the fix

* correct earlier errors

* update incorrect updates

* update incorrect iavl

* update incorrect iavl version

* re-introdue "the bug"

* use int instead of math.Int in GetAndFundTestUsers

* fix TestInterchainAccountsGroupsTest

* fix TestAuthz_InvalidTransferAuthorizations

* fix the rest of the tests ?

* convert to int64

* convert actualBalance to int64

* Revert "convert actualBalance to int64"

This reverts commit e4df8f3.

* convert balance to int64 in ica localhost test

* convert balance in interchain accounts base_test.go line 222

* convert actualBalance in line 109 of transfer's base_test.go to int64

* can we use zeroint like that?

* preassign zero

* use sdkmath.NewInt

* properly call sdkmath.ZeroInt()

---------

Co-authored-by: catShaark <gundamaster5@gmail.com>
Co-authored-by: khanh-notional <50263489+catShaark@users.noreply.github.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Jim Fasarakis-Hilliard <d.f.hilliard@gmail.com>

* docs: add docs for PacketData, PacketDataProvider, and PacketDataUnmarshaler interfaces (#4435)

* docs: add docs for PacketData and PacketDataProvider

* docs: add docs for PacketDataUnmarshaler

* Apply suggestions from code review

Co-authored-by: srdtrk <59252793+srdtrk@users.noreply.github.com>

---------

Co-authored-by: srdtrk <59252793+srdtrk@users.noreply.github.com>

* e2e: optimise running of params tests/set default allowed clients conditionally on version (#4428)

* wip: fixing failing params test

* fine tuned host enabled params test

* Use slices.DeleteFunc, fix LocalhostClientFeatureReleases docstring.

---------

Co-authored-by: DimitrisJim <d.f.hilliard@gmail.com>

* fix: update callbacks tests to v0.50 sdk

* lint

* fix: copy over root.go

* go mod tidy

* copy over main.go from simd

* fix merge conflict

* fix(callback/types): update test file to sdk v0.50

* fix: remove toolchain directive

workflow for splitting files cannot read toolchain directive

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Sishir Giri <sis1001@berkeley.edu>
Co-authored-by: srdtrk <59252793+srdtrk@users.noreply.github.com>
Co-authored-by: Cian Hatton <cian@interchain.io>
Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Jim Fasarakis-Hilliard <d.f.hilliard@gmail.com>
Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>
Co-authored-by: catShaark <gundamaster5@gmail.com>
Co-authored-by: khanh-notional <50263489+catShaark@users.noreply.github.com>

* fix: callbacks types test for events

* testing: e2e support for sdkv50 (#4485)

Co-authored-by: Jacob Gadikian <jacobgadikian@gmail.com>
Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>
Co-authored-by: Ruslan Akhtariev <rakhtariev@icloud.com>
Co-authored-by: GnaD13 <cpt.meoz@gmail.com>
Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Jim Fasarakis-Hilliard <d.f.hilliard@gmail.com>

* Apply suggestions from code review

* nits: self review

* chore: make relayer selection work correctly when determining from environmental variables

* chore: correcting string checks

* nit: switch golang lint timeout to 10m

* refactor: ccmtservice -> consensusService

* refactor: remove upgrade logic from callbacks simapp

* apply mega nits

* refactor: remove usage of extended commits in testing pkg

* review: add pointer receiver to registerUpgradeHandlers

* e2e-fixes: add back intertx types and set hermes as default relayer

* run linter

* move intertx to it's orignal registration location

* fix: use type not tag in e2e testconfig

* chore: updating sample file to use custom hermes image

* e2e: call unsafe reset all in genesis test

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Jacob Gadikian <jacobgadikian@gmail.com>
Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>
Co-authored-by: Ruslan Akhtariev <rakhtariev@icloud.com>
Co-authored-by: GnaD13 <cpt.meoz@gmail.com>
Co-authored-by: sontrinh16 <48055119+sontrinh16@users.noreply.github.com>
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: srdtrk <59252793+srdtrk@users.noreply.github.com>
Co-authored-by: Alexander Peters <alpe@users.noreply.github.com>
Co-authored-by: Jim Fasarakis-Hilliard <d.f.hilliard@gmail.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>
Co-authored-by: Ruslan Akhtariev <46343690+pysel@users.noreply.github.com>
Co-authored-by: Sishir Giri <sis1001@berkeley.edu>
Co-authored-by: Cian Hatton <cian@interchain.io>
Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: catShaark <gundamaster5@gmail.com>
Co-authored-by: khanh-notional <50263489+catShaark@users.noreply.github.com>
Co-authored-by: Charly <charly@interchain.io>
Co-authored-by: chatton <github.qpeyb@simplelogin.fr>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Support json tx encoding for interchain accounts
8 participants