From 527a11a2bbe59e172649d5c22b87878d86859806 Mon Sep 17 00:00:00 2001 From: Cian Hatton Date: Wed, 6 Jul 2022 11:04:28 +0100 Subject: [PATCH 1/9] Script to dynamically generate list of e2e tests (E2E #1) (#1644) --- .github/scripts/build_test_matrix.go | 130 +++++++++++++++++ .github/scripts/build_test_matrix_test.go | 162 ++++++++++++++++++++++ .github/workflows/test.yml | 2 +- Makefile | 2 +- 4 files changed, 294 insertions(+), 2 deletions(-) create mode 100644 .github/scripts/build_test_matrix.go create mode 100644 .github/scripts/build_test_matrix_test.go diff --git a/.github/scripts/build_test_matrix.go b/.github/scripts/build_test_matrix.go new file mode 100644 index 00000000000..c86324b31f8 --- /dev/null +++ b/.github/scripts/build_test_matrix.go @@ -0,0 +1,130 @@ +package main + +import ( + "encoding/json" + "fmt" + "go/ast" + "go/parser" + "go/token" + "io/fs" + "os" + "path/filepath" + "strings" +) + +const ( + testNamePrefix = "Test" + testFileNameSuffix = "_test.go" + e2eTestDirectory = "e2e" +) + +// GithubActionTestMatrix represents +type GithubActionTestMatrix struct { + Include []TestSuitePair `json:"include"` +} + +type TestSuitePair struct { + Test string `json:"test"` + Suite string `json:"suite"` +} + +func main() { + githubActionMatrix, err := getGithubActionMatrixForTests(e2eTestDirectory) + if err != nil { + fmt.Printf("error generating github action json: %s", err) + os.Exit(1) + } + + ghBytes, err := json.Marshal(githubActionMatrix) + if err != nil { + fmt.Printf("error marshalling github action json: %s", err) + os.Exit(1) + } + fmt.Println(string(ghBytes)) +} + +// getGithubActionMatrixForTests returns a json string representing the contents that should go in the matrix +// field in a github action workflow. This string can be used with `fromJSON(str)` to dynamically build +// the workflow matrix to include all E2E tests under the e2eRootDirectory directory. +func getGithubActionMatrixForTests(e2eRootDirectory string) (GithubActionTestMatrix, error) { + testSuiteMapping := map[string][]string{} + fset := token.NewFileSet() + err := filepath.Walk(e2eRootDirectory, func(path string, info fs.FileInfo, err error) error { + // only look at test files + if !strings.HasSuffix(path, testFileNameSuffix) { + return nil + } + + f, err := parser.ParseFile(fset, path, nil, 0) + if err != nil { + return fmt.Errorf("failed parsing file: %s", err) + } + + suiteNameForFile, testCases, err := extractSuiteAndTestNames(f) + if err != nil { + return fmt.Errorf("failed extracting test suite name and test cases: %s", err) + } + + testSuiteMapping[suiteNameForFile] = testCases + + return nil + }) + + if err != nil { + return GithubActionTestMatrix{}, err + } + + gh := GithubActionTestMatrix{ + Include: []TestSuitePair{}, + } + + for testSuiteName, testCases := range testSuiteMapping { + for _, testCaseName := range testCases { + gh.Include = append(gh.Include, TestSuitePair{ + Test: testCaseName, + Suite: testSuiteName, + }) + } + } + + return gh, nil +} + +// extractSuiteAndTestNames extracts the name of the test suite function as well +// as all tests associated with it in the same file. +func extractSuiteAndTestNames(file *ast.File) (string, []string, error) { + var suiteNameForFile string + var testCases []string + + for _, d := range file.Decls { + if f, ok := d.(*ast.FuncDecl); ok { + functionName := f.Name.Name + if isTestSuiteMethod(f) { + if suiteNameForFile != "" { + return "", nil, fmt.Errorf("found a second test function: %s when %s was already found", f.Name.Name, suiteNameForFile) + } + suiteNameForFile = functionName + continue + } + if isTestFunction(f) { + testCases = append(testCases, functionName) + } + } + } + if suiteNameForFile == "" { + return "", nil, fmt.Errorf("file %s had no test suite test case", file.Name.Name) + } + return suiteNameForFile, testCases, nil +} + +// isTestSuiteMethod returns true if the function is a test suite function. +// e.g. func TestFeeMiddlewareTestSuite(t *testing.T) { ... } +func isTestSuiteMethod(f *ast.FuncDecl) bool { + return strings.HasPrefix(f.Name.Name, testNamePrefix) && len(f.Type.Params.List) == 1 +} + +// isTestFunction returns true if the function name starts with "Test" and has no parameters. +// as test suite functions do not accept a *testing.T. +func isTestFunction(f *ast.FuncDecl) bool { + return strings.HasPrefix(f.Name.Name, testNamePrefix) && len(f.Type.Params.List) == 0 +} diff --git a/.github/scripts/build_test_matrix_test.go b/.github/scripts/build_test_matrix_test.go new file mode 100644 index 00000000000..47de4d981c2 --- /dev/null +++ b/.github/scripts/build_test_matrix_test.go @@ -0,0 +1,162 @@ +package main + +import ( + "os" + "path" + "sort" + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +const ( + nonTestFile = "not_test_file.go" + goTestFileNameOne = "first_go_file_test.go" + goTestFileNameTwo = "second_go_file_test.go" +) + +func TestGetGithubActionMatrixForTests(t *testing.T) { + t.Run("empty dir does not fail", func(t *testing.T) { + testingDir := t.TempDir() + _, err := getGithubActionMatrixForTests(testingDir) + assert.NoError(t, err) + }) + + t.Run("only test functions are picked up", func(t *testing.T) { + testingDir := t.TempDir() + createFileWithTestSuiteAndTests(t, "FeeMiddlewareTestSuite", "TestA", "TestB", testingDir, goTestFileNameOne) + + gh, err := getGithubActionMatrixForTests(testingDir) + assert.NoError(t, err) + + expected := GithubActionTestMatrix{ + Include: []TestSuitePair{ + { + Suite: "TestFeeMiddlewareTestSuite", + Test: "TestA", + }, + { + Suite: "TestFeeMiddlewareTestSuite", + Test: "TestB", + }, + }, + } + assertGithubActionTestMatricesEqual(t, expected, gh) + }) + + t.Run("all files are picked up", func(t *testing.T) { + testingDir := t.TempDir() + createFileWithTestSuiteAndTests(t, "FeeMiddlewareTestSuite", "TestA", "TestB", testingDir, goTestFileNameOne) + createFileWithTestSuiteAndTests(t, "TransferTestSuite", "TestC", "TestD", testingDir, goTestFileNameTwo) + + gh, err := getGithubActionMatrixForTests(testingDir) + assert.NoError(t, err) + + expected := GithubActionTestMatrix{ + Include: []TestSuitePair{ + { + Suite: "TestTransferTestSuite", + Test: "TestC", + }, + { + Suite: "TestFeeMiddlewareTestSuite", + Test: "TestA", + }, + { + Suite: "TestFeeMiddlewareTestSuite", + Test: "TestB", + }, + { + Suite: "TestTransferTestSuite", + Test: "TestD", + }, + }, + } + + assertGithubActionTestMatricesEqual(t, expected, gh) + }) + + t.Run("non test files are not picked up", func(t *testing.T) { + testingDir := t.TempDir() + createFileWithTestSuiteAndTests(t, "FeeMiddlewareTestSuite", "TestA", "TestB", testingDir, nonTestFile) + + gh, err := getGithubActionMatrixForTests(testingDir) + assert.NoError(t, err) + assert.Empty(t, gh.Include) + }) + + t.Run("fails when there are multiple suite runs", func(t *testing.T) { + testingDir := t.TempDir() + createFileWithTestSuiteAndTests(t, "FeeMiddlewareTestSuite", "TestA", "TestB", testingDir, nonTestFile) + + fileWithTwoSuites := `package foo +func SuiteOne(t *testing.T) { + suite.Run(t, new(FeeMiddlewareTestSuite)) +} + +func SuiteTwo(t *testing.T) { + suite.Run(t, new(FeeMiddlewareTestSuite)) +} + +type FeeMiddlewareTestSuite struct {} +` + + err := os.WriteFile(path.Join(testingDir, goTestFileNameOne), []byte(fileWithTwoSuites), os.FileMode(777)) + assert.NoError(t, err) + + _, err = getGithubActionMatrixForTests(testingDir) + assert.Error(t, err) + }) +} + +func assertGithubActionTestMatricesEqual(t *testing.T, expected, actual GithubActionTestMatrix) { + // sort by both suite and test as the order of the end result does not matter as + // all tests will be run. + sort.SliceStable(expected.Include, func(i, j int) bool { + memberI := expected.Include[i] + memberJ := expected.Include[j] + if memberI.Suite == memberJ.Suite { + return memberI.Test < memberJ.Test + } + return memberI.Suite < memberJ.Suite + }) + + sort.SliceStable(actual.Include, func(i, j int) bool { + memberI := actual.Include[i] + memberJ := actual.Include[j] + if memberI.Suite == memberJ.Suite { + return memberI.Test < memberJ.Test + } + return memberI.Suite < memberJ.Suite + }) + assert.Equal(t, expected.Include, actual.Include) +} + +func goTestFileContents(suiteName, fnName1, fnName2 string) string { + + replacedSuiteName := strings.ReplaceAll(`package foo + +func TestSuiteName(t *testing.T) { + suite.Run(t, new(SuiteName)) +} + +type SuiteName struct {} + +func (s *SuiteName) fnName1() {} +func (s *SuiteName) fnName2() {} + +func (s *SuiteName) suiteHelper() {} + +func helper() {} +`, "SuiteName", suiteName) + + replacedFn1Name := strings.ReplaceAll(replacedSuiteName, "fnName1", fnName1) + return strings.ReplaceAll(replacedFn1Name, "fnName2", fnName2) +} + +func createFileWithTestSuiteAndTests(t *testing.T, suiteName, fn1Name, fn2Name, dir, filename string) { + goFileContents := goTestFileContents(suiteName, fn1Name, fn2Name) + err := os.WriteFile(path.Join(dir, filename), []byte(goFileContents), os.FileMode(777)) + assert.NoError(t, err) +} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c915db779cd..ff8ed4d65d9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -63,7 +63,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Create a file with all the pkgs - run: go list ./... > pkgs.txt + run: go list ./... ./.github/scripts > pkgs.txt - name: Split pkgs into 4 files run: split -d -n l/4 pkgs.txt pkgs.txt.part. # cache multiple diff --git a/Makefile b/Makefile index 0ea7f0c10c5..9beb4ab61bc 100644 --- a/Makefile +++ b/Makefile @@ -216,7 +216,7 @@ view-docs: test: test-unit test-all: test-unit test-ledger-mock test-race test-cover -TEST_PACKAGES=./... +TEST_PACKAGES=./... ./.github/scripts TEST_TARGETS := test-unit test-unit-amino test-unit-proto test-ledger-mock test-race test-ledger test-race # Test runs-specific rules. To add a new test target, just add From 40771a6e582d4f806880dc8942af81070a039f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Jul 2022 12:31:41 +0200 Subject: [PATCH 2/9] apply remaining changes for crossing hello removal Deprecate previous channel id with proto tag Remove unnecessary test cases from 04-channel Remove crossing hello check in transfer application and the associated test case --- CHANGELOG.md | 2 +- .../adr-006-02-client-refactor.md | 40 +++++++++++++++++++ modules/apps/29-fee/ibc_middleware_test.go | 22 ++-------- modules/apps/transfer/ibc_module.go | 11 +---- modules/apps/transfer/ibc_module_test.go | 4 +- .../core/04-channel/keeper/handshake_test.go | 14 ------- proto/ibc/core/channel/v1/tx.proto | 6 +-- testing/coordinator.go | 21 ---------- 8 files changed, 50 insertions(+), 70 deletions(-) create mode 100644 docs/architecture/adr-006-02-client-refactor.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f29f71a503..0de36fb4c9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,7 +62,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (modules/core/04-channel) [\#1232](https://github.com/cosmos/ibc-go/pull/1232) Updating params on `NewPacketId` and moving to bottom of file. * (app/29-fee) [\#1305](https://github.com/cosmos/ibc-go/pull/1305) Change version string for fee module to `ics29-1` * (app/29-fee) [\#1341](https://github.com/cosmos/ibc-go/pull/1341) Check if the fee module is locked and if the fee module is enabled before refunding all fees -* (modules/core/04-channel) [\#1317](https://github.com/cosmos/ibc-go/pull/1317) Remove crossing hellos from ChanOpenTry +* (modules/core/04-channel) [\#1317](https://github.com/cosmos/ibc-go/pull/1317) Remove corssing hellos from channel handshakes. The `PreviousChannelId` in `MsgChannelOpenTry` has been deprecated. * (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. * (testing/simapp) [\#1397](https://github.com/cosmos/ibc-go/pull/1397) Adding mock module to maccperms and adding check to ensure mock module is not a blocked account address. * (core/02-client) [\#1570](https://github.com/cosmos/ibc-go/pull/1570) Emitting an event when handling an upgrade client proposal. diff --git a/docs/architecture/adr-006-02-client-refactor.md b/docs/architecture/adr-006-02-client-refactor.md new file mode 100644 index 00000000000..55ff76544cb --- /dev/null +++ b/docs/architecture/adr-006-02-client-refactor.md @@ -0,0 +1,40 @@ +# ADR 006: 02-client refactor + +## Changelog +* 18 May 2022: Initial Draft + +## Status + +Accepted + +## Context + +> This section contains all the context one needs to understand the current state, and why there is a problem. It should be as succinct as possible and introduce the high level idea behind the solution. + +## Decision + +> This section explains all of the details of the proposed solution, including implementation details. +It should also describe affects / corollary items that may need to be changed as a part of this. +If the proposed change will be large, please also indicate a way to do the change to maximize ease of review. +(e.g. the optimal split of things to do between separate PR's) + +## Consequences + +> This section describes the consequences, after applying the decision. All consequences should be summarized here, not just the "positive" ones. + +### Positive + +### Negative + +### Neutral + +## References + +The primary discussion which motivated these changes was documented in issue [#284](https://github.com/cosmos/ibc-go/issues/284). + +Issues: +* {reference link} + +PRs: +* {ref} + diff --git a/modules/apps/29-fee/ibc_middleware_test.go b/modules/apps/29-fee/ibc_middleware_test.go index 6f0de4b1971..ea7cdcae8b6 100644 --- a/modules/apps/29-fee/ibc_middleware_test.go +++ b/modules/apps/29-fee/ibc_middleware_test.go @@ -141,38 +141,27 @@ func (suite *FeeTestSuite) TestOnChanOpenTry() { testCases := []struct { name string cpVersion string - crossing bool expPass bool }{ { "success - valid fee middleware version", string(types.ModuleCdc.MustMarshalJSON(&types.Metadata{FeeVersion: types.Version, AppVersion: ibcmock.Version})), - false, true, }, { "success - valid mock version", ibcmock.Version, - false, - true, - }, - { - "success - crossing hellos: valid fee middleware", - string(types.ModuleCdc.MustMarshalJSON(&types.Metadata{FeeVersion: types.Version, AppVersion: ibcmock.Version})), - true, true, }, { "invalid fee middleware version", string(types.ModuleCdc.MustMarshalJSON(&types.Metadata{FeeVersion: "invalid-ics29-1", AppVersion: ibcmock.Version})), false, - false, }, { "invalid mock version", string(types.ModuleCdc.MustMarshalJSON(&types.Metadata{FeeVersion: types.Version, AppVersion: "invalid-mock-version"})), false, - false, }, } @@ -201,14 +190,9 @@ func (suite *FeeTestSuite) TestOnChanOpenTry() { ok bool err error ) - if tc.crossing { - suite.path.EndpointA.ChanOpenInit() - chanCap, ok = suite.chainA.GetSimApp().ScopedFeeMockKeeper.GetCapability(suite.chainA.GetContext(), host.ChannelCapabilityPath(suite.path.EndpointA.ChannelConfig.PortID, suite.path.EndpointA.ChannelID)) - suite.Require().True(ok) - } else { - chanCap, err = suite.chainA.App.GetScopedIBCKeeper().NewCapability(suite.chainA.GetContext(), host.ChannelCapabilityPath(suite.path.EndpointA.ChannelConfig.PortID, suite.path.EndpointA.ChannelID)) - suite.Require().NoError(err) - } + + chanCap, err = suite.chainA.App.GetScopedIBCKeeper().NewCapability(suite.chainA.GetContext(), host.ChannelCapabilityPath(suite.path.EndpointA.ChannelConfig.PortID, suite.path.EndpointA.ChannelID)) + suite.Require().NoError(err) suite.path.EndpointA.ChannelID = ibctesting.FirstChannelID diff --git a/modules/apps/transfer/ibc_module.go b/modules/apps/transfer/ibc_module.go index 7b87b33408c..d2b78001e99 100644 --- a/modules/apps/transfer/ibc_module.go +++ b/modules/apps/transfer/ibc_module.go @@ -111,15 +111,8 @@ func (im IBCModule) OnChanOpenTry( return "", sdkerrors.Wrapf(types.ErrInvalidVersion, "invalid counterparty version: got: %s, expected %s", counterpartyVersion, types.Version) } - // Module may have already claimed capability in OnChanOpenInit in the case of crossing hellos - // (ie chainA and chainB both call ChanOpenInit before one of them calls ChanOpenTry) - // If module can already authenticate the capability then module already owns it so we don't need to claim - // Otherwise, module does not have channel capability and we must claim it from IBC - if !im.keeper.AuthenticateCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)) { - // Only claim channel capability passed back by IBC module if we do not already own it - if err := im.keeper.ClaimCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)); err != nil { - return "", err - } + if err := im.keeper.ClaimCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)); err != nil { + return "", err } return types.Version, nil diff --git a/modules/apps/transfer/ibc_module_test.go b/modules/apps/transfer/ibc_module_test.go index 3b8e0175517..3ff7b25679e 100644 --- a/modules/apps/transfer/ibc_module_test.go +++ b/modules/apps/transfer/ibc_module_test.go @@ -124,10 +124,10 @@ func (suite *TransferTestSuite) TestOnChanOpenTry() { }, false, }, { - "capability already claimed in INIT should pass", func() { + "capability already claimed", func() { err := suite.chainA.GetSimApp().ScopedTransferKeeper.ClaimCapability(suite.chainA.GetContext(), chanCap, host.ChannelCapabilityPath(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID)) suite.Require().NoError(err) - }, true, + }, false, }, { "invalid order - ORDERED", func() { diff --git a/modules/core/04-channel/keeper/handshake_test.go b/modules/core/04-channel/keeper/handshake_test.go index 9e62c030aba..e8750f85b05 100644 --- a/modules/core/04-channel/keeper/handshake_test.go +++ b/modules/core/04-channel/keeper/handshake_test.go @@ -157,20 +157,6 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { suite.chainB.CreatePortCapability(suite.chainB.GetSimApp().ScopedIBCMockKeeper, ibctesting.MockPort) portCap = suite.chainB.GetPortCapability(ibctesting.MockPort) }, true}, - {"success with crossing hello", func() { - suite.coordinator.SetupConnections(path) - path.SetChannelOrdered() - err := suite.coordinator.ChanOpenInitOnBothChains(path) - suite.Require().NoError(err) - - portCap = suite.chainB.GetPortCapability(ibctesting.MockPort) - }, true}, - {"previous channel with invalid state", func() { - suite.coordinator.SetupConnections(path) - - // make previous channel have wrong ordering - path.EndpointA.ChanOpenInit() - }, false}, {"connection doesn't exist", func() { path.EndpointA.ConnectionID = ibctesting.FirstConnectionID path.EndpointB.ConnectionID = ibctesting.FirstConnectionID diff --git a/proto/ibc/core/channel/v1/tx.proto b/proto/ibc/core/channel/v1/tx.proto index 210b7a71732..19101aef797 100644 --- a/proto/ibc/core/channel/v1/tx.proto +++ b/proto/ibc/core/channel/v1/tx.proto @@ -79,10 +79,8 @@ message MsgChannelOpenTry { option (gogoproto.goproto_getters) = false; string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""]; - // in the case of crossing hello's, when both chains call OpenInit, we need - // the channel identifier of the previous channel in state INIT - // Deprecated: this field has been deprecated and will be ignored by core IBC because now we don't need to protect against crossing hellos anymore. - string previous_channel_id = 2 [(gogoproto.moretags) = "yaml:\"previous_channel_id\""]; + // Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC. + string previous_channel_id = 2 [deprecated = true, (gogoproto.moretags) = "yaml:\"previous_channel_id\""]; // NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC. Channel channel = 3 [(gogoproto.nullable) = false]; string counterparty_version = 4 [(gogoproto.moretags) = "yaml:\"counterparty_version\""]; diff --git a/testing/coordinator.go b/testing/coordinator.go index dde3eb56b1a..6aaf2ab748f 100644 --- a/testing/coordinator.go +++ b/testing/coordinator.go @@ -212,24 +212,3 @@ func (coord *Coordinator) ConnOpenInitOnBothChains(path *Path) error { return path.EndpointB.UpdateClient() } - -// ChanOpenInitOnBothChains initializes a channel on the source chain and counterparty chain -// with the state INIT using the OpenInit handshake call. -func (coord *Coordinator) ChanOpenInitOnBothChains(path *Path) error { - // NOTE: only creation of a capability for a transfer or mock port is supported - // Other applications must bind to the port in InitGenesis or modify this code. - - if err := path.EndpointA.ChanOpenInit(); err != nil { - return err - } - - if err := path.EndpointB.ChanOpenInit(); err != nil { - return err - } - - if err := path.EndpointA.UpdateClient(); err != nil { - return err - } - - return path.EndpointB.UpdateClient() -} From c2eecabe525b50dd2fb20065bcb2ec49f041b87e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Jul 2022 12:35:22 +0200 Subject: [PATCH 3/9] remove previous channel check in WriteChannelOpenTry --- modules/core/04-channel/keeper/handshake.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/modules/core/04-channel/keeper/handshake.go b/modules/core/04-channel/keeper/handshake.go index 602ebc0a8f3..579ae9a25f1 100644 --- a/modules/core/04-channel/keeper/handshake.go +++ b/modules/core/04-channel/keeper/handshake.go @@ -188,18 +188,15 @@ func (k Keeper) WriteOpenTryChannel( counterparty types.Counterparty, version string, ) { - previousChannel, previousChannelFound := k.GetChannel(ctx, portID, channelID) - if !previousChannelFound { - k.SetNextSequenceSend(ctx, portID, channelID, 1) - k.SetNextSequenceRecv(ctx, portID, channelID, 1) - k.SetNextSequenceAck(ctx, portID, channelID, 1) - } + k.SetNextSequenceSend(ctx, portID, channelID, 1) + k.SetNextSequenceRecv(ctx, portID, channelID, 1) + k.SetNextSequenceAck(ctx, portID, channelID, 1) channel := types.NewChannel(types.TRYOPEN, order, counterparty, connectionHops, version) k.SetChannel(ctx, portID, channelID, channel) - k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousChannel.State.String(), "new-state", "TRYOPEN") + k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", "NONE", "new-state", "TRYOPEN") defer func() { telemetry.IncrCounter(1, "ibc", "channel", "open-try") From 4f7e88a94802ff6cda6ed73e812dbc2f5f9b94ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Jul 2022 12:37:57 +0200 Subject: [PATCH 4/9] regenerate proto files --- docs/ibc/proto-docs.md | 2 +- modules/core/04-channel/types/tx.pb.go | 169 ++++++++++++------------- proto/ibc/core/channel/v1/tx.proto | 2 +- 3 files changed, 86 insertions(+), 87 deletions(-) diff --git a/docs/ibc/proto-docs.md b/docs/ibc/proto-docs.md index 30c6d350bd1..ced55cfbc75 100644 --- a/docs/ibc/proto-docs.md +++ b/docs/ibc/proto-docs.md @@ -2949,7 +2949,7 @@ value will be ignored by core IBC. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `port_id` | [string](#string) | | | -| `previous_channel_id` | [string](#string) | | in the case of crossing hello's, when both chains call OpenInit, we need the channel identifier of the previous channel in state INIT | +| `previous_channel_id` | [string](#string) | | **Deprecated.** Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC. | | `channel` | [Channel](#ibc.core.channel.v1.Channel) | | NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC. | | `counterparty_version` | [string](#string) | | | | `proof_init` | [bytes](#bytes) | | | diff --git a/modules/core/04-channel/types/tx.pb.go b/modules/core/04-channel/types/tx.pb.go index 4c8d176bd15..6ad733decee 100644 --- a/modules/core/04-channel/types/tx.pb.go +++ b/modules/core/04-channel/types/tx.pb.go @@ -160,9 +160,8 @@ func (m *MsgChannelOpenInitResponse) GetVersion() string { // value will be ignored by core IBC. type MsgChannelOpenTry struct { PortId string `protobuf:"bytes,1,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty" yaml:"port_id"` - // in the case of crossing hello's, when both chains call OpenInit, we need - // the channel identifier of the previous channel in state INIT - PreviousChannelId string `protobuf:"bytes,2,opt,name=previous_channel_id,json=previousChannelId,proto3" json:"previous_channel_id,omitempty" yaml:"previous_channel_id"` + // Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC. + PreviousChannelId string `protobuf:"bytes,2,opt,name=previous_channel_id,json=previousChannelId,proto3" json:"previous_channel_id,omitempty" yaml:"previous_channel_id"` // Deprecated: Do not use. // NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC. Channel Channel `protobuf:"bytes,3,opt,name=channel,proto3" json:"channel"` CounterpartyVersion string `protobuf:"bytes,4,opt,name=counterparty_version,json=counterpartyVersion,proto3" json:"counterparty_version,omitempty" yaml:"counterparty_version"` @@ -918,88 +917,88 @@ func init() { func init() { proto.RegisterFile("ibc/core/channel/v1/tx.proto", fileDescriptor_bc4637e0ac3fc7b7) } var fileDescriptor_bc4637e0ac3fc7b7 = []byte{ - // 1294 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4d, 0x6f, 0xe2, 0x56, - 0x17, 0xc6, 0x40, 0x20, 0x39, 0xe4, 0x4d, 0x88, 0x49, 0x32, 0xc4, 0x24, 0x98, 0xd7, 0x8b, 0x49, - 0x94, 0x2a, 0x30, 0xc9, 0x64, 0x54, 0x4d, 0x54, 0xa9, 0x0a, 0x94, 0x51, 0xa3, 0x36, 0x1f, 0x32, - 0xa4, 0x52, 0xd3, 0xaa, 0x08, 0xcc, 0x1d, 0x62, 0x01, 0x36, 0xb5, 0x0d, 0x33, 0xfc, 0x83, 0x51, - 0x56, 0xb3, 0x1e, 0x29, 0xd2, 0x54, 0x5d, 0x55, 0x5d, 0x4c, 0x7f, 0xc6, 0x2c, 0x67, 0xd5, 0x56, - 0x5d, 0xa0, 0x2a, 0xd9, 0x74, 0xcd, 0x2f, 0xa8, 0x7c, 0x7d, 0x6d, 0x0c, 0xd8, 0x8a, 0x33, 0x93, - 0x64, 0xba, 0xf3, 0xbd, 0xe7, 0xb9, 0xe7, 0x9c, 0xfb, 0x9c, 0xe7, 0x7e, 0x19, 0x96, 0xc5, 0x8a, - 0x90, 0x11, 0x64, 0x05, 0x65, 0x84, 0xd3, 0xb2, 0x24, 0xa1, 0x46, 0xa6, 0xb3, 0x99, 0xd1, 0x9e, - 0xa7, 0x5b, 0x8a, 0xac, 0xc9, 0x74, 0x4c, 0xac, 0x08, 0x69, 0xdd, 0x9a, 0x26, 0xd6, 0x74, 0x67, - 0x93, 0x99, 0xaf, 0xc9, 0x35, 0x19, 0xdb, 0x33, 0xfa, 0x97, 0x01, 0x65, 0xd8, 0x81, 0xa3, 0x86, - 0x88, 0x24, 0x4d, 0xf7, 0x63, 0x7c, 0x11, 0xc0, 0xff, 0x9d, 0x22, 0x99, 0x6e, 0x31, 0x84, 0xfb, - 0x89, 0x02, 0x7a, 0x5f, 0xad, 0xe5, 0x8c, 0xce, 0xc3, 0x16, 0x92, 0xf6, 0x24, 0x51, 0xa3, 0x3f, - 0x81, 0x70, 0x4b, 0x56, 0xb4, 0x92, 0x58, 0x8d, 0x53, 0x29, 0x6a, 0x6d, 0x2a, 0x4b, 0xf7, 0x7b, - 0xec, 0x4c, 0xb7, 0xdc, 0x6c, 0xec, 0x70, 0xc4, 0xc0, 0xf1, 0x21, 0xfd, 0x6b, 0xaf, 0x4a, 0x7f, - 0x06, 0x61, 0xe2, 0x34, 0xee, 0x4f, 0x51, 0x6b, 0x91, 0xad, 0xe5, 0xb4, 0xc3, 0x24, 0xd2, 0x24, - 0x46, 0x36, 0xf8, 0xb6, 0xc7, 0xfa, 0x78, 0x73, 0x08, 0xbd, 0x08, 0x21, 0x55, 0xac, 0x49, 0x48, - 0x89, 0x07, 0xf4, 0x48, 0x3c, 0x69, 0xed, 0x4c, 0xbe, 0x78, 0xcd, 0xfa, 0xfe, 0x79, 0xcd, 0xfa, - 0xb8, 0x06, 0x30, 0xe3, 0x29, 0xf2, 0x48, 0x6d, 0xc9, 0x92, 0x8a, 0xe8, 0x6d, 0x00, 0xe2, 0x6a, - 0x90, 0xed, 0x42, 0xbf, 0xc7, 0xce, 0x19, 0xd9, 0x0e, 0x6c, 0x1c, 0x3f, 0x45, 0x1a, 0x7b, 0x55, - 0x3a, 0x0e, 0xe1, 0x0e, 0x52, 0x54, 0x51, 0x96, 0x70, 0xce, 0x53, 0xbc, 0xd9, 0xe4, 0x7e, 0x0f, - 0xc0, 0xdc, 0x70, 0xb8, 0xa2, 0xd2, 0xbd, 0x1e, 0x21, 0x07, 0x10, 0x6b, 0x29, 0xa8, 0x23, 0xca, - 0x6d, 0xb5, 0x64, 0xcb, 0x0d, 0x07, 0xca, 0x26, 0xfb, 0x3d, 0x96, 0x21, 0x03, 0xc7, 0x41, 0x1c, - 0x3f, 0x67, 0xf6, 0xe6, 0xac, 0x64, 0x6d, 0x04, 0x07, 0xae, 0x4f, 0x30, 0x0f, 0xf3, 0x82, 0xdc, - 0x96, 0x34, 0xa4, 0xb4, 0xca, 0x8a, 0xd6, 0x2d, 0x99, 0xf3, 0x0e, 0xe2, 0x74, 0xd8, 0x7e, 0x8f, - 0x4d, 0x10, 0xaa, 0x1c, 0x50, 0x1c, 0x1f, 0xb3, 0x77, 0x7f, 0x63, 0xf4, 0xea, 0xa4, 0xb7, 0x14, - 0x59, 0x7e, 0x5a, 0x12, 0x25, 0x51, 0x8b, 0x4f, 0xa4, 0xa8, 0xb5, 0x69, 0x3b, 0xe9, 0x03, 0x1b, - 0xc7, 0x4f, 0xe1, 0x06, 0x56, 0xd5, 0x09, 0x4c, 0x1b, 0x96, 0x53, 0x24, 0xd6, 0x4e, 0xb5, 0x78, - 0x08, 0x4f, 0x86, 0xb1, 0x4d, 0xc6, 0x50, 0x6f, 0x67, 0x33, 0xfd, 0x25, 0x46, 0x64, 0x13, 0xfa, - 0x54, 0xfa, 0x3d, 0x36, 0x66, 0xf7, 0x6b, 0x8c, 0xe6, 0xf8, 0x08, 0x6e, 0x1a, 0x48, 0x9b, 0x8c, - 0xc2, 0x2e, 0x32, 0x7a, 0x04, 0x4b, 0x63, 0x75, 0xb5, 0x54, 0x64, 0xd3, 0x03, 0x35, 0xac, 0x87, - 0x3f, 0xc6, 0xf4, 0xb0, 0x2b, 0xd4, 0xaf, 0xa7, 0x87, 0x61, 0x89, 0xfa, 0x3d, 0x4a, 0xf4, 0x04, - 0xee, 0x0d, 0x55, 0xc4, 0xe6, 0x02, 0xaf, 0x94, 0x2c, 0xd7, 0xef, 0xb1, 0x49, 0x87, 0xd2, 0xd9, - 0xfd, 0x2d, 0xd8, 0x2d, 0x03, 0x45, 0xdd, 0x86, 0x26, 0x36, 0xc1, 0x28, 0x75, 0x49, 0x53, 0xba, - 0x44, 0x12, 0xf3, 0xfd, 0x1e, 0x1b, 0xb5, 0x97, 0x4e, 0x53, 0xba, 0x1c, 0x3f, 0x89, 0xbf, 0xf5, - 0x55, 0xf5, 0x71, 0x05, 0x91, 0x18, 0x15, 0xc4, 0xae, 0x50, 0x37, 0x05, 0xc1, 0xfd, 0xea, 0x87, - 0x85, 0x61, 0x6b, 0x4e, 0x96, 0x9e, 0x8a, 0x4a, 0xf3, 0x2e, 0x4a, 0x6f, 0x51, 0x59, 0x16, 0xea, - 0xb8, 0xd8, 0x0e, 0x54, 0x96, 0x85, 0xba, 0x49, 0xa5, 0x2e, 0xc8, 0x51, 0x2a, 0x83, 0xb7, 0x42, - 0xe5, 0x84, 0x0b, 0x95, 0x2c, 0xac, 0x38, 0x92, 0x65, 0xd1, 0xf9, 0x8a, 0x82, 0xd8, 0x00, 0x91, - 0x6b, 0xc8, 0x2a, 0xba, 0xfe, 0x41, 0xf3, 0x7e, 0x64, 0x5e, 0x7d, 0xc0, 0xac, 0x40, 0xc2, 0x21, - 0x37, 0x2b, 0xf7, 0x37, 0x7e, 0x58, 0x1c, 0xb1, 0xdf, 0xa1, 0x16, 0x86, 0xb7, 0xda, 0xc0, 0x7b, - 0x6e, 0xb5, 0x77, 0x2b, 0x87, 0x14, 0x24, 0x9d, 0x09, 0xb3, 0x38, 0x7d, 0xe9, 0x87, 0xff, 0xed, - 0xab, 0x35, 0x1e, 0x09, 0x9d, 0xa3, 0xb2, 0x50, 0x47, 0x1a, 0xfd, 0x18, 0x42, 0x2d, 0xfc, 0x85, - 0x99, 0x8c, 0x6c, 0x25, 0x1c, 0xcf, 0x38, 0x03, 0x4c, 0x8e, 0x38, 0x32, 0x80, 0x7e, 0x02, 0x51, - 0x23, 0x5d, 0x41, 0x6e, 0x36, 0x45, 0xad, 0x89, 0x24, 0x0d, 0xd3, 0x3b, 0x9d, 0x4d, 0xf4, 0x7b, - 0xec, 0x3d, 0xfb, 0x84, 0x06, 0x08, 0x8e, 0x9f, 0xc5, 0x5d, 0x39, 0xab, 0x67, 0x8c, 0xb4, 0xc0, - 0xad, 0x90, 0x16, 0x74, 0x21, 0xed, 0x07, 0xbc, 0xe1, 0x0c, 0x18, 0xb1, 0xce, 0xa6, 0xcf, 0x21, - 0xa4, 0x20, 0xb5, 0xdd, 0x30, 0x98, 0x99, 0xd9, 0x5a, 0x75, 0x64, 0xc6, 0x84, 0xf3, 0x18, 0x5a, - 0xec, 0xb6, 0x10, 0x4f, 0x86, 0xed, 0x04, 0xf5, 0x18, 0xdc, 0x5f, 0x7e, 0x80, 0x7d, 0xb5, 0x56, - 0x14, 0x9b, 0x48, 0x6e, 0xdf, 0x0c, 0xdf, 0x6d, 0x49, 0x41, 0x02, 0x12, 0x3b, 0xa8, 0xea, 0xc6, - 0xf7, 0x00, 0x61, 0xf2, 0x7d, 0x6c, 0xf5, 0xdc, 0x2a, 0xdf, 0x5f, 0x01, 0x2d, 0xa1, 0xe7, 0x5a, - 0x49, 0x45, 0x3f, 0xb6, 0x91, 0x24, 0xa0, 0x92, 0x82, 0x84, 0x0e, 0xe6, 0x3e, 0x98, 0x5d, 0xe9, - 0xf7, 0xd8, 0x25, 0xc3, 0xc3, 0x38, 0x86, 0xe3, 0xa3, 0x7a, 0x67, 0x81, 0xf4, 0xe9, 0xf5, 0xf0, - 0xa0, 0xf8, 0xef, 0xf0, 0x35, 0x9a, 0x70, 0x7b, 0xd3, 0x95, 0x7b, 0x65, 0x5c, 0x41, 0x88, 0xf7, - 0x43, 0x09, 0xaf, 0xa8, 0xff, 0x42, 0x01, 0x3f, 0x85, 0x08, 0x59, 0x56, 0x7a, 0x46, 0x64, 0x73, - 0x5a, 0xec, 0xf7, 0x58, 0x7a, 0x68, 0xcd, 0xe9, 0x46, 0x8e, 0x37, 0xb6, 0x31, 0x23, 0xf7, 0xdb, - 0xdc, 0x9e, 0x9c, 0x2b, 0x3f, 0xf1, 0xa1, 0x95, 0x0f, 0xb9, 0x54, 0xbe, 0x82, 0x6f, 0x11, 0xc3, - 0xb5, 0xb9, 0x69, 0x01, 0xfc, 0xe6, 0xc7, 0xf2, 0xda, 0x15, 0xea, 0x92, 0xfc, 0xac, 0x81, 0xaa, - 0x35, 0x84, 0xf7, 0xab, 0x0f, 0x50, 0xc0, 0x1a, 0xcc, 0x96, 0x87, 0xbd, 0x19, 0x02, 0xe0, 0x47, - 0xbb, 0x07, 0x35, 0xd6, 0x07, 0x56, 0xdd, 0x6a, 0x8c, 0x8d, 0x66, 0x8d, 0x77, 0xf5, 0xc6, 0x47, - 0x3e, 0x82, 0x04, 0xfc, 0x68, 0x1c, 0x61, 0xec, 0x86, 0xeb, 0xb2, 0xfe, 0x0b, 0x05, 0xf4, 0x38, - 0x88, 0x7e, 0x04, 0x29, 0x3e, 0x5f, 0x38, 0x3a, 0x3c, 0x28, 0xe4, 0x4b, 0x7c, 0xbe, 0x70, 0xfc, - 0x75, 0xb1, 0x54, 0xfc, 0xf6, 0x28, 0x5f, 0x3a, 0x3e, 0x28, 0x1c, 0xe5, 0x73, 0x7b, 0x4f, 0xf6, - 0xf2, 0x5f, 0x44, 0x7d, 0xcc, 0xec, 0xd9, 0x79, 0x2a, 0x62, 0xeb, 0xa2, 0x57, 0x61, 0xc9, 0x71, - 0xd8, 0xc1, 0xe1, 0xe1, 0x51, 0x94, 0x62, 0x26, 0xcf, 0xce, 0x53, 0x41, 0xfd, 0x9b, 0xde, 0x80, - 0x65, 0x47, 0x60, 0xe1, 0x38, 0x97, 0xcb, 0x17, 0x0a, 0x51, 0x3f, 0x13, 0x39, 0x3b, 0x4f, 0x85, - 0x49, 0x93, 0x09, 0xbe, 0xf8, 0x39, 0xe9, 0xdb, 0x7a, 0x33, 0x09, 0x81, 0x7d, 0xb5, 0x46, 0xd7, - 0x61, 0x76, 0xf4, 0xb5, 0xef, 0x3c, 0xfb, 0xf1, 0x37, 0x37, 0x93, 0xf1, 0x08, 0xb4, 0x78, 0x3e, - 0x85, 0x99, 0x91, 0x87, 0xf4, 0x7d, 0x0f, 0x2e, 0x8a, 0x4a, 0x97, 0x49, 0x7b, 0xc3, 0xb9, 0x44, - 0xd2, 0x6f, 0xc4, 0x5e, 0x22, 0xed, 0x0a, 0x75, 0x4f, 0x91, 0x6c, 0x2f, 0x03, 0x5a, 0x03, 0xda, - 0xe1, 0x55, 0xb0, 0xee, 0xc1, 0x0b, 0xc1, 0x32, 0x5b, 0xde, 0xb1, 0x56, 0x54, 0x09, 0xa2, 0x63, - 0x97, 0xe7, 0xb5, 0x2b, 0xfc, 0x58, 0x48, 0xe6, 0x81, 0x57, 0xa4, 0x15, 0xef, 0x19, 0xc4, 0x1c, - 0x2f, 0xbc, 0x5e, 0x1c, 0x99, 0xf3, 0x7c, 0x78, 0x0d, 0xb0, 0x15, 0xf8, 0x7b, 0x00, 0xdb, 0xad, - 0x90, 0x73, 0x73, 0x31, 0xc0, 0x30, 0xeb, 0x57, 0x63, 0x2c, 0xef, 0x05, 0x08, 0x9b, 0x17, 0x20, - 0xd6, 0x6d, 0x18, 0x01, 0x30, 0xab, 0x57, 0x00, 0xec, 0xda, 0x1b, 0x39, 0x9b, 0xef, 0x5f, 0x31, - 0x94, 0xe0, 0xdc, 0xb5, 0xe7, 0x72, 0x9e, 0xd4, 0x61, 0x76, 0xf4, 0x10, 0x70, 0xcd, 0x72, 0x04, - 0xe8, 0xbe, 0x78, 0x5d, 0x36, 0xc9, 0x6c, 0xe1, 0xed, 0x45, 0x92, 0x7a, 0x77, 0x91, 0xa4, 0xfe, - 0xbe, 0x48, 0x52, 0x2f, 0x2f, 0x93, 0xbe, 0x77, 0x97, 0x49, 0xdf, 0x9f, 0x97, 0x49, 0xdf, 0xc9, - 0xe3, 0x9a, 0xa8, 0x9d, 0xb6, 0x2b, 0x69, 0x41, 0x6e, 0x66, 0x04, 0x59, 0x6d, 0xca, 0x6a, 0x46, - 0xac, 0x08, 0x1b, 0x35, 0x39, 0xd3, 0xd9, 0xce, 0x34, 0xe5, 0x6a, 0xbb, 0x81, 0x54, 0xe3, 0xc7, - 0xe3, 0x83, 0xed, 0x0d, 0xf3, 0xdf, 0xa3, 0xd6, 0x6d, 0x21, 0xb5, 0x12, 0xc2, 0xff, 0x1d, 0x1f, - 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x1a, 0x39, 0xd7, 0x06, 0x15, 0x00, 0x00, + // 1295 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xdf, 0x6f, 0xda, 0xd6, + 0x17, 0xc7, 0x40, 0x21, 0x39, 0xf4, 0x9b, 0x10, 0x93, 0xa4, 0xc4, 0x24, 0x98, 0xaf, 0x1f, 0x9a, + 0x28, 0x53, 0xa0, 0x49, 0x53, 0x4d, 0x8d, 0x26, 0x4d, 0x81, 0x51, 0x2d, 0xda, 0x92, 0x20, 0x43, + 0x26, 0x2d, 0x9b, 0x86, 0xc0, 0xdc, 0x12, 0x0b, 0xb0, 0x99, 0x6d, 0x68, 0xf9, 0x0f, 0xaa, 0x3c, + 0xf5, 0xb9, 0x52, 0xa4, 0x4e, 0x7b, 0x9a, 0xf6, 0xd0, 0xfd, 0x19, 0x7d, 0xec, 0xdb, 0xaa, 0x3d, + 0xa0, 0x29, 0x79, 0xd9, 0x33, 0x7f, 0xc1, 0xe4, 0xeb, 0x6b, 0x63, 0xc0, 0x56, 0x9c, 0x36, 0x49, + 0xf7, 0xe6, 0x7b, 0xcf, 0xe7, 0x9e, 0x73, 0xee, 0xe7, 0x7c, 0xee, 0x2f, 0xc3, 0xb2, 0x58, 0x15, + 0x32, 0x82, 0xac, 0xa0, 0x8c, 0x70, 0x52, 0x91, 0x24, 0xd4, 0xcc, 0x74, 0x37, 0x33, 0xda, 0xf3, + 0x74, 0x5b, 0x91, 0x35, 0x99, 0x8e, 0x89, 0x55, 0x21, 0xad, 0x5b, 0xd3, 0xc4, 0x9a, 0xee, 0x6e, + 0x32, 0xf3, 0x75, 0xb9, 0x2e, 0x63, 0x7b, 0x46, 0xff, 0x32, 0xa0, 0x0c, 0x3b, 0x74, 0xd4, 0x14, + 0x91, 0xa4, 0xe9, 0x7e, 0x8c, 0x2f, 0x02, 0xf8, 0xbf, 0x53, 0x24, 0xd3, 0x2d, 0x86, 0x70, 0xbf, + 0x50, 0x40, 0xef, 0xab, 0xf5, 0x9c, 0xd1, 0x79, 0xd8, 0x46, 0xd2, 0x9e, 0x24, 0x6a, 0xf4, 0x67, + 0x10, 0x6e, 0xcb, 0x8a, 0x56, 0x16, 0x6b, 0x71, 0x2a, 0x45, 0xad, 0x4d, 0x67, 0xe9, 0x41, 0x9f, + 0x9d, 0xe9, 0x55, 0x5a, 0xcd, 0x1d, 0x8e, 0x18, 0x38, 0x3e, 0xa4, 0x7f, 0xed, 0xd5, 0xe8, 0x2f, + 0x20, 0x4c, 0x9c, 0xc6, 0xfd, 0x29, 0x6a, 0x2d, 0xb2, 0xb5, 0x9c, 0x76, 0x98, 0x44, 0x9a, 0xc4, + 0xc8, 0x06, 0xdf, 0xf6, 0x59, 0x1f, 0x6f, 0x0e, 0xa1, 0x17, 0x21, 0xa4, 0x8a, 0x75, 0x09, 0x29, + 0xf1, 0x80, 0x1e, 0x89, 0x27, 0xad, 0x9d, 0xa9, 0x17, 0xaf, 0x59, 0xdf, 0x3f, 0xaf, 0x59, 0x1f, + 0xd7, 0x04, 0x66, 0x32, 0x45, 0x1e, 0xa9, 0x6d, 0x59, 0x52, 0x11, 0xbd, 0x0d, 0x40, 0x5c, 0x0d, + 0xb3, 0x5d, 0x18, 0xf4, 0xd9, 0x39, 0x23, 0xdb, 0xa1, 0x8d, 0xe3, 0xa7, 0x49, 0x63, 0xaf, 0x46, + 0xc7, 0x21, 0xdc, 0x45, 0x8a, 0x2a, 0xca, 0x12, 0xce, 0x79, 0x9a, 0x37, 0x9b, 0xdc, 0xfb, 0x00, + 0xcc, 0x8d, 0x86, 0x2b, 0x29, 0xbd, 0xab, 0x11, 0x52, 0x80, 0x58, 0x5b, 0x41, 0x5d, 0x51, 0xee, + 0xa8, 0x65, 0x5b, 0x6e, 0x38, 0x50, 0x36, 0x35, 0xe8, 0xb3, 0x0c, 0x19, 0x38, 0x09, 0xe2, 0xe2, + 0x14, 0x3f, 0x67, 0xf6, 0xe7, 0xac, 0x74, 0x6d, 0x14, 0x07, 0xae, 0x4e, 0x31, 0x0f, 0xf3, 0x82, + 0xdc, 0x91, 0x34, 0xa4, 0xb4, 0x2b, 0x8a, 0xd6, 0x2b, 0x9b, 0x33, 0x0f, 0xe2, 0x84, 0xd8, 0x41, + 0x9f, 0x4d, 0x10, 0xb2, 0x1c, 0x50, 0x1c, 0x1f, 0xb3, 0x77, 0x7f, 0x67, 0xf4, 0xea, 0xb4, 0xb7, + 0x15, 0x59, 0x7e, 0x5a, 0x16, 0x25, 0x51, 0x8b, 0xdf, 0x49, 0x51, 0x6b, 0x77, 0xed, 0xb4, 0x0f, + 0x6d, 0x1c, 0x3f, 0x8d, 0x1b, 0x58, 0x57, 0xc7, 0x70, 0xd7, 0xb0, 0x9c, 0x20, 0xb1, 0x7e, 0xa2, + 0xc5, 0x43, 0x78, 0x32, 0x8c, 0x6d, 0x32, 0x86, 0x7e, 0xbb, 0x9b, 0xe9, 0xaf, 0x31, 0x22, 0x9b, + 0xd0, 0xa7, 0x32, 0xe8, 0xb3, 0x31, 0xbb, 0x5f, 0x63, 0x34, 0xc7, 0x47, 0x70, 0xd3, 0x40, 0xda, + 0x84, 0x14, 0x76, 0x11, 0xd2, 0x23, 0x58, 0x9a, 0xa8, 0xac, 0xa5, 0x23, 0x9b, 0x22, 0xa8, 0x51, + 0x45, 0xfc, 0x39, 0xa1, 0x88, 0x5d, 0xa1, 0x71, 0x35, 0x45, 0x8c, 0x8a, 0xd4, 0xef, 0x51, 0xa4, + 0xc7, 0x70, 0x6f, 0xa4, 0x22, 0x36, 0x17, 0x78, 0xad, 0x64, 0xb9, 0x41, 0x9f, 0x4d, 0x3a, 0x94, + 0xce, 0xee, 0x6f, 0xc1, 0x6e, 0x19, 0x2a, 0xea, 0x26, 0x34, 0xb1, 0x09, 0x46, 0xa9, 0xcb, 0x9a, + 0xd2, 0x23, 0x92, 0x98, 0x1f, 0xf4, 0xd9, 0xa8, 0xbd, 0x74, 0x9a, 0xd2, 0xe3, 0xf8, 0x29, 0xfc, + 0xad, 0xaf, 0xab, 0x4f, 0x2b, 0x88, 0xc4, 0xb8, 0x20, 0x76, 0x85, 0x86, 0x29, 0x08, 0xee, 0x77, + 0x3f, 0x2c, 0x8c, 0x5a, 0x73, 0xb2, 0xf4, 0x54, 0x54, 0x5a, 0xb7, 0x51, 0x7a, 0x8b, 0xca, 0x8a, + 0xd0, 0xc0, 0xc5, 0x76, 0xa0, 0xb2, 0x22, 0x34, 0x4c, 0x2a, 0x75, 0x41, 0x8e, 0x53, 0x19, 0xbc, + 0x11, 0x2a, 0xef, 0xb8, 0x50, 0xc9, 0xc2, 0x8a, 0x23, 0x59, 0x16, 0x9d, 0xaf, 0x28, 0x88, 0x0d, + 0x11, 0xb9, 0xa6, 0xac, 0xa2, 0xab, 0x1f, 0x35, 0x1f, 0x46, 0xe6, 0xe5, 0x47, 0xcc, 0x0a, 0x24, + 0x1c, 0x72, 0xb3, 0x72, 0x7f, 0xe3, 0x87, 0xc5, 0x31, 0xfb, 0x2d, 0x6a, 0x61, 0x74, 0xab, 0x0d, + 0x7c, 0xe0, 0x56, 0x7b, 0xbb, 0x72, 0x48, 0x41, 0xd2, 0x99, 0x30, 0x8b, 0xd3, 0x97, 0x7e, 0xf8, + 0xdf, 0xbe, 0x5a, 0xe7, 0x91, 0xd0, 0x2d, 0x54, 0x84, 0x06, 0xd2, 0xe8, 0xc7, 0x10, 0x6a, 0xe3, + 0x2f, 0xcc, 0x64, 0x64, 0x2b, 0xe1, 0x78, 0xc6, 0x19, 0x60, 0x72, 0xc4, 0x91, 0x01, 0xf4, 0x13, + 0x88, 0x1a, 0xe9, 0x0a, 0x72, 0xab, 0x25, 0x6a, 0x2d, 0x24, 0x69, 0x98, 0xde, 0xbb, 0xd9, 0xc4, + 0xa0, 0xcf, 0xde, 0xb3, 0x4f, 0x68, 0x88, 0xe0, 0xf8, 0x59, 0xdc, 0x95, 0xb3, 0x7a, 0x26, 0x48, + 0x0b, 0xdc, 0x08, 0x69, 0x41, 0x17, 0xd2, 0x7e, 0xc2, 0x1b, 0xce, 0x90, 0x11, 0xeb, 0x6c, 0xfa, + 0x12, 0x42, 0x0a, 0x52, 0x3b, 0x4d, 0x83, 0x99, 0x99, 0xad, 0x55, 0x47, 0x66, 0x4c, 0x38, 0x8f, + 0xa1, 0xa5, 0x5e, 0x1b, 0xf1, 0x64, 0xd8, 0x4e, 0x50, 0x8f, 0xc1, 0xfd, 0xe5, 0x07, 0xd8, 0x57, + 0xeb, 0x25, 0xb1, 0x85, 0xe4, 0xce, 0xf5, 0xf0, 0xdd, 0x91, 0x14, 0x24, 0x20, 0xb1, 0x8b, 0x6a, + 0x6e, 0x7c, 0x0f, 0x11, 0x26, 0xdf, 0x47, 0x56, 0xcf, 0x8d, 0xf2, 0xfd, 0x0d, 0xd0, 0x12, 0x7a, + 0xae, 0x95, 0x55, 0xf4, 0x73, 0x07, 0x49, 0x02, 0x2a, 0x2b, 0x48, 0xe8, 0x62, 0xee, 0x83, 0xd9, + 0x95, 0x41, 0x9f, 0x5d, 0x32, 0x3c, 0x4c, 0x62, 0x38, 0x3e, 0xaa, 0x77, 0x16, 0x49, 0x9f, 0x5e, + 0x0f, 0x0f, 0x8a, 0xff, 0x01, 0x5f, 0xa4, 0x09, 0xb7, 0xd7, 0x5d, 0xb9, 0x57, 0xc6, 0x15, 0x84, + 0x78, 0x3f, 0x94, 0xf0, 0x8a, 0xfa, 0x2f, 0x14, 0xf0, 0x73, 0x88, 0x90, 0x65, 0xa5, 0x67, 0x44, + 0x36, 0xa7, 0xc5, 0x41, 0x9f, 0xa5, 0x47, 0xd6, 0x9c, 0x6e, 0xe4, 0x78, 0x63, 0x1b, 0x33, 0x72, + 0xbf, 0xc9, 0xed, 0xc9, 0xb9, 0xf2, 0x77, 0x3e, 0xb6, 0xf2, 0x21, 0x97, 0xca, 0x57, 0xf1, 0x2d, + 0x62, 0xb4, 0x36, 0xd7, 0x2d, 0x80, 0x3f, 0xfc, 0x58, 0x5e, 0xbb, 0x42, 0x43, 0x92, 0x9f, 0x35, + 0x51, 0xad, 0x8e, 0xf0, 0x7e, 0xf5, 0x11, 0x0a, 0x58, 0x83, 0xd9, 0xca, 0xa8, 0x37, 0x43, 0x00, + 0xfc, 0x78, 0xf7, 0xb0, 0xc6, 0xfa, 0xc0, 0x9a, 0x5b, 0x8d, 0xb1, 0xd1, 0xac, 0xf1, 0xae, 0xde, + 0xf8, 0xc4, 0x47, 0x90, 0x80, 0x9f, 0x8d, 0x63, 0x8c, 0x5d, 0x73, 0x5d, 0xd6, 0x7f, 0xa3, 0x80, + 0x9e, 0x04, 0xd1, 0x8f, 0x20, 0xc5, 0xe7, 0x8b, 0x85, 0xc3, 0x83, 0x62, 0xbe, 0xcc, 0xe7, 0x8b, + 0x47, 0xdf, 0x96, 0xca, 0xa5, 0xef, 0x0b, 0xf9, 0xf2, 0xd1, 0x41, 0xb1, 0x90, 0xcf, 0xed, 0x3d, + 0xd9, 0xcb, 0x7f, 0x15, 0xf5, 0x31, 0xb3, 0xa7, 0x67, 0xa9, 0x88, 0xad, 0x8b, 0x5e, 0x85, 0x25, + 0xc7, 0x61, 0x07, 0x87, 0x87, 0x85, 0x28, 0xc5, 0x4c, 0x9d, 0x9e, 0xa5, 0x82, 0xfa, 0x37, 0xbd, + 0x01, 0xcb, 0x8e, 0xc0, 0xe2, 0x51, 0x2e, 0x97, 0x2f, 0x16, 0xa3, 0x7e, 0x26, 0x72, 0x7a, 0x96, + 0x0a, 0x93, 0x26, 0x13, 0x7c, 0xf1, 0x6b, 0xd2, 0xb7, 0xf5, 0x66, 0x0a, 0x02, 0xfb, 0x6a, 0x9d, + 0x6e, 0xc0, 0xec, 0xf8, 0x7b, 0xdf, 0x79, 0xf6, 0x93, 0xaf, 0x6e, 0x26, 0xe3, 0x11, 0x68, 0xf1, + 0x7c, 0x02, 0x33, 0x63, 0x4f, 0xe9, 0xfb, 0x1e, 0x5c, 0x94, 0x94, 0x1e, 0x93, 0xf6, 0x86, 0x73, + 0x89, 0xa4, 0xdf, 0x88, 0xbd, 0x44, 0xda, 0x15, 0x1a, 0x9e, 0x22, 0xd9, 0x5e, 0x06, 0xb4, 0x06, + 0xb4, 0xc3, 0xab, 0x60, 0xdd, 0x83, 0x17, 0x82, 0x65, 0xb6, 0xbc, 0x63, 0xad, 0xa8, 0x12, 0x44, + 0x27, 0x2e, 0xcf, 0x6b, 0x97, 0xf8, 0xb1, 0x90, 0xcc, 0x03, 0xaf, 0x48, 0x2b, 0xde, 0x33, 0x88, + 0x39, 0x5e, 0x78, 0xbd, 0x38, 0x32, 0xe7, 0xf9, 0xf0, 0x0a, 0x60, 0x2b, 0xf0, 0x8f, 0x00, 0xb6, + 0x5b, 0x21, 0xe7, 0xe6, 0x62, 0x88, 0x61, 0xd6, 0x2f, 0xc7, 0x58, 0xde, 0x8b, 0x10, 0x36, 0x2f, + 0x40, 0xac, 0xdb, 0x30, 0x02, 0x60, 0x56, 0x2f, 0x01, 0xd8, 0xb5, 0x37, 0x76, 0x36, 0xdf, 0xbf, + 0x64, 0x28, 0xc1, 0xb9, 0x6b, 0xcf, 0xe5, 0x3c, 0x69, 0xc0, 0xec, 0xf8, 0x21, 0xe0, 0x9a, 0xe5, + 0x18, 0xd0, 0x7d, 0xf1, 0xba, 0x6c, 0x92, 0xd9, 0xe2, 0xdb, 0xf3, 0x24, 0xf5, 0xee, 0x3c, 0x49, + 0xfd, 0x7d, 0x9e, 0xa4, 0x5e, 0x5e, 0x24, 0x7d, 0xef, 0x2e, 0x92, 0xbe, 0xf7, 0x17, 0x49, 0xdf, + 0xf1, 0xe3, 0xba, 0xa8, 0x9d, 0x74, 0xaa, 0x69, 0x41, 0x6e, 0x65, 0x04, 0x59, 0x6d, 0xc9, 0x6a, + 0x46, 0xac, 0x0a, 0x1b, 0x75, 0x39, 0xd3, 0xdd, 0xce, 0xb4, 0xe4, 0x5a, 0xa7, 0x89, 0x54, 0xe3, + 0xd7, 0xe3, 0x83, 0xed, 0x0d, 0xf3, 0xef, 0xa3, 0xd6, 0x6b, 0x23, 0xb5, 0x1a, 0xc2, 0x7f, 0x1e, + 0x1f, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x58, 0xd3, 0x8a, 0x27, 0x08, 0x15, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/proto/ibc/core/channel/v1/tx.proto b/proto/ibc/core/channel/v1/tx.proto index 19101aef797..75248aeb5b1 100644 --- a/proto/ibc/core/channel/v1/tx.proto +++ b/proto/ibc/core/channel/v1/tx.proto @@ -79,7 +79,7 @@ message MsgChannelOpenTry { option (gogoproto.goproto_getters) = false; string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""]; - // Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC. + // Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC. string previous_channel_id = 2 [deprecated = true, (gogoproto.moretags) = "yaml:\"previous_channel_id\""]; // NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC. Channel channel = 3 [(gogoproto.nullable) = false]; From 9856d241be7102c87cd100b0e22d4da20961a08b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Jul 2022 12:41:57 +0200 Subject: [PATCH 5/9] update documentation --- docs/ibc/apps.md | 12 +++--------- modules/apps/transfer/ibc_module.go | 1 + 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/docs/ibc/apps.md b/docs/ibc/apps.md index 267a2e5ca55..11fa1e84b7e 100644 --- a/docs/ibc/apps.md +++ b/docs/ibc/apps.md @@ -73,15 +73,9 @@ OnChanOpenTry( counterparty channeltypes.Counterparty, counterpartyVersion string, ) (string, error) { - // Module may have already claimed capability in OnChanOpenInit in the case of crossing hellos - // (ie chainA and chainB both call ChanOpenInit before one of them calls ChanOpenTry) - // If the module can already authenticate the capability then the module already owns it so we don't need to claim - // Otherwise, module does not have channel capability and we must claim it from IBC - if !k.AuthenticateCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)) { - // Only claim channel capability passed back by IBC module if we do not already own it - if err := k.scopedKeeper.ClaimCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)); err != nil { - return err - } + // OpenTry must claim the channelCapability that IBC passes into the callback + if err := k.scopedKeeper.ClaimCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)); err != nil { + return err } // ... do custom initialization logic diff --git a/modules/apps/transfer/ibc_module.go b/modules/apps/transfer/ibc_module.go index d2b78001e99..6472c2998b0 100644 --- a/modules/apps/transfer/ibc_module.go +++ b/modules/apps/transfer/ibc_module.go @@ -111,6 +111,7 @@ func (im IBCModule) OnChanOpenTry( return "", sdkerrors.Wrapf(types.ErrInvalidVersion, "invalid counterparty version: got: %s, expected %s", counterpartyVersion, types.Version) } + // OpenTry must claim the channelCapability that IBC passes into the callback if err := im.keeper.ClaimCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)); err != nil { return "", err } From a75219d3b4d92552c0a915a99452b594a718e66e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Jul 2022 12:46:47 +0200 Subject: [PATCH 6/9] add migration documentation --- docs/migrations/v3-to-v4.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/migrations/v3-to-v4.md b/docs/migrations/v3-to-v4.md index 903c027ce4b..4fffedc9399 100644 --- a/docs/migrations/v3-to-v4.md +++ b/docs/migrations/v3-to-v4.md @@ -18,6 +18,10 @@ No genesis or in-place migrations required when upgrading from v1 or v2 of ibc-g ## Chains +- No relevant changes were made in this release. + +## IBC Apps + ### ICS04 - Channel The `WriteAcknowledgement` API now takes the `exported.Acknowledgement` type instead of passing in the acknowledgement byte array directly. @@ -30,6 +34,10 @@ The `NewErrorAcknowledgement` method signature has changed. It now accepts an `error` rather than a `string`. This was done in order to prevent accidental state changes. All error acknowledgements now contain a deterministic ABCI code and error message. It is the responsibility of the application developer to emit error details in events. +Crossing hellos have been removed from 04-channel handshake negotiation. +IBC Applications no longer need to account from already claimed capabilities in the `OnChanOpenTry` callback. The capability provided by core IBC must be able to be claimed with error. +`PreviousChannelId` in `MsgChannelOpenTry` has been deprecated and is no longer used by core IBC. + ### ICS27 - Interchain Accounts The `RegisterInterchainAccount` API has been modified to include an additional `version` argument. This change has been made in order to support ICS29 fee middleware, for relayer incentivization of ICS27 packets. @@ -91,3 +99,5 @@ if err := k.icaControllerKeeper.RegisterInterchainAccount(ctx, msg.ConnectionId, ## Relayers When using the `DenomTrace` gRPC, the full IBC denomination with the `ibc/` prefix may now be passed in. + +Crossing hello's are no longer supported by core IBC. The handshake should be completed in the logical 4 step process (INIT, TRY, ACK, CONFIRM). From dbb9b0e46a56c548d65f2feac5bba79ec656df69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Jul 2022 13:26:22 +0200 Subject: [PATCH 7/9] remove unnecessary doc --- .../adr-006-02-client-refactor.md | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 docs/architecture/adr-006-02-client-refactor.md diff --git a/docs/architecture/adr-006-02-client-refactor.md b/docs/architecture/adr-006-02-client-refactor.md deleted file mode 100644 index 55ff76544cb..00000000000 --- a/docs/architecture/adr-006-02-client-refactor.md +++ /dev/null @@ -1,40 +0,0 @@ -# ADR 006: 02-client refactor - -## Changelog -* 18 May 2022: Initial Draft - -## Status - -Accepted - -## Context - -> This section contains all the context one needs to understand the current state, and why there is a problem. It should be as succinct as possible and introduce the high level idea behind the solution. - -## Decision - -> This section explains all of the details of the proposed solution, including implementation details. -It should also describe affects / corollary items that may need to be changed as a part of this. -If the proposed change will be large, please also indicate a way to do the change to maximize ease of review. -(e.g. the optimal split of things to do between separate PR's) - -## Consequences - -> This section describes the consequences, after applying the decision. All consequences should be summarized here, not just the "positive" ones. - -### Positive - -### Negative - -### Neutral - -## References - -The primary discussion which motivated these changes was documented in issue [#284](https://github.com/cosmos/ibc-go/issues/284). - -Issues: -* {reference link} - -PRs: -* {ref} - From c890576083b419c0b229199f7ab9921416113a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Jul 2022 13:48:05 +0200 Subject: [PATCH 8/9] remove crossing hello notion from ChanOpenAck --- modules/core/04-channel/keeper/handshake.go | 7 ++----- modules/core/04-channel/keeper/handshake_test.go | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/modules/core/04-channel/keeper/handshake.go b/modules/core/04-channel/keeper/handshake.go index 579ae9a25f1..1d9cfd6382c 100644 --- a/modules/core/04-channel/keeper/handshake.go +++ b/modules/core/04-channel/keeper/handshake.go @@ -222,11 +222,8 @@ func (k Keeper) ChanOpenAck( return sdkerrors.Wrapf(types.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - if !(channel.State == types.INIT || channel.State == types.TRYOPEN) { - return sdkerrors.Wrapf( - types.ErrInvalidChannelState, - "channel state should be INIT or TRYOPEN (got %s)", channel.State.String(), - ) + if channel.State != types.INIT { + return sdkerrors.Wrapf(types.ErrInvalidChannelState, "channel state should be INIT (got %s)", channel.State.String()) } if !k.scopedKeeper.AuthenticateCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)) { diff --git a/modules/core/04-channel/keeper/handshake_test.go b/modules/core/04-channel/keeper/handshake_test.go index e8750f85b05..88ca88887b4 100644 --- a/modules/core/04-channel/keeper/handshake_test.go +++ b/modules/core/04-channel/keeper/handshake_test.go @@ -322,7 +322,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { channelCap = suite.chainA.GetChannelCapability(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID) }, true}, {"channel doesn't exist", func() {}, false}, - {"channel state is not INIT or TRYOPEN", func() { + {"channel state is not INIT", func() { // create fully open channels on both chains suite.coordinator.Setup(path) channelCap = suite.chainA.GetChannelCapability(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID) From 86d61ed5b1cf8858e85c624a2d10b9108836853b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Jul 2022 13:52:22 +0200 Subject: [PATCH 9/9] apply review suggestions --- CHANGELOG.md | 2 +- docs/migrations/v3-to-v4.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0de36fb4c9a..e1fdccd2092 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### API Breaking +* (modules/core/04-channel) [\#1317](https://github.com/cosmos/ibc-go/pull/1317) Remove crossing hellos from channel handshakes. The `PreviousChannelId` in `MsgChannelOpenTry` has been deprecated. * (transfer) [\#1250](https://github.com/cosmos/ibc-go/pull/1250) Deprecate `GetTransferAccount` since the `transfer` module account is never used. * (channel) [\#1283](https://github.com/cosmos/ibc-go/pull/1283) The `OnChanOpenInit` application callback now returns a version string in line with the latest [spec changes](https://github.com/cosmos/ibc/pull/629). * (modules/29-fee)[\#1338](https://github.com/cosmos/ibc-go/pull/1338) Renaming `Result` field in `IncentivizedAcknowledgement` to `AppAcknowledgement`. @@ -62,7 +63,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (modules/core/04-channel) [\#1232](https://github.com/cosmos/ibc-go/pull/1232) Updating params on `NewPacketId` and moving to bottom of file. * (app/29-fee) [\#1305](https://github.com/cosmos/ibc-go/pull/1305) Change version string for fee module to `ics29-1` * (app/29-fee) [\#1341](https://github.com/cosmos/ibc-go/pull/1341) Check if the fee module is locked and if the fee module is enabled before refunding all fees -* (modules/core/04-channel) [\#1317](https://github.com/cosmos/ibc-go/pull/1317) Remove corssing hellos from channel handshakes. The `PreviousChannelId` in `MsgChannelOpenTry` has been deprecated. * (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. * (testing/simapp) [\#1397](https://github.com/cosmos/ibc-go/pull/1397) Adding mock module to maccperms and adding check to ensure mock module is not a blocked account address. * (core/02-client) [\#1570](https://github.com/cosmos/ibc-go/pull/1570) Emitting an event when handling an upgrade client proposal. diff --git a/docs/migrations/v3-to-v4.md b/docs/migrations/v3-to-v4.md index 4fffedc9399..9d6a1fb3f31 100644 --- a/docs/migrations/v3-to-v4.md +++ b/docs/migrations/v3-to-v4.md @@ -100,4 +100,4 @@ if err := k.icaControllerKeeper.RegisterInterchainAccount(ctx, msg.ConnectionId, When using the `DenomTrace` gRPC, the full IBC denomination with the `ibc/` prefix may now be passed in. -Crossing hello's are no longer supported by core IBC. The handshake should be completed in the logical 4 step process (INIT, TRY, ACK, CONFIRM). +Crossing hellos are no longer supported by core IBC. The handshake should be completed in the logical 4 step process (INIT, TRY, ACK, CONFIRM).