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: adding 09-localhost loopback client module #3229

Merged
merged 62 commits into from
Mar 8, 2023
Merged

feat: adding 09-localhost loopback client module #3229

merged 62 commits into from
Mar 8, 2023

Conversation

damiannolan
Copy link
Contributor

@damiannolan damiannolan commented Mar 2, 2023

Description

The following PR adds v2 of the 09-localhost light client module.

closes: #3034

Commit Message / Changelog Entry

feat: adding 09-localhost loopback client module [\#3034](https://github.com/cosmos/ibc-go/issues/3034). Please see the 09-localhost documentation [here](https://ibc.cosmos.network/main/ibc/light-clients/localhost/overview.html).
feat: AllowedClients on-chain param allows chains to pause usage of specific client types by removing the client type from the param.
imp: Update all channel events to use `connection_id` attribute. The `packet_connection` attribute has been deprecated.

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.

Sorry, something went wrong.

damiannolan and others added 30 commits January 18, 2023 20:20

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
…e core IBC store for localhost clients (#3083)

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
* adding localhost AppModuleBasic to app.go. adding localhost client to InitGenesis. Fixing update localhost client

* renmaing variable

* adding migration handler for enabling localhost client

* updating to use clienttypes.GetSelfHeight()

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
* adding initial localhost client testing scaffolding

* add testing placeholders, adapt initialise code, wire AppModuleBasic

* adding happy path test cases, fixing store prefixing in verify membership/non-membership

* formatting

* adding additional test cases

* adding remaining test cases

* adding inline comments

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
* return an error from 09-localhost client VerifyClientMessage

* fix typo

---------

Co-authored-by: Carlos Rodriguez <[email protected]>

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
* disallow localhost client creation, adapt tests

* adapting logic to accomodate usage of allowed clients in InitGenesis

* move localhost check to separate conditional

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
* use temporary relayer tag for e2e testing localhost

* WIP commiting

* updating codec and handling txResp

* WIP scaffold happy path out

* adding some temporary todos

* adding msg response unmarshalling, and adding interchain accounts handshake test

* adding ica send packet testing, cleanup..etc

* adding separate test suite for localhost transfer tests (#3144)

* add separate test suite struct for ICA localhost

* fixing testsuite embedding

* review suggestions - events func and nits

* testcase naming

---------

Co-authored-by: Cian Hatton <[email protected]>

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
* use temporary relayer tag for e2e testing localhost

* WIP commiting

* updating codec and handling txResp

* WIP scaffold happy path out

* adding some temporary todos

* adding msg response unmarshalling, and adding interchain accounts handshake test

* adding ica send packet testing, cleanup..etc

* adding separate test suite for localhost transfer tests (#3144)

* add separate test suite struct for ICA localhost

* fixing testsuite embedding

* adding test for ica channel close and reopen

---------

Co-authored-by: Cian Hatton <[email protected]>

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
)

* imp: change validateHeight function name to validateConsensusHeight and improve code documentation

* revert: change code back to how it is on main

Revert code changes as they were unnecessary given that a localhost connection cannot be created via the connection handshake

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
@@ -15,8 +15,8 @@ const (
Rly = "rly"
Hermes = "hermes"

cosmosRelayerRepository = "ghcr.io/cosmos/relayer"
cosmosRelayerUser = "100:1000" // docker run -it --rm --entrypoint echo ghcr.io/cosmos/relayer "$(id -u):$(id -g)"
cosmosRelayerRepository = "damiannolan/rly" //"ghcr.io/cosmos/relayer"
Copy link
Contributor Author

Choose a reason for hiding this comment

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

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.

Maybe we can add a link to where the docs will be in the commit message?

And link to the localhost issue with a breakdown of all sub issues

crodriguezvega and others added 10 commits March 2, 2023 16:01

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Co-authored-by: colin axnér <[email protected]>
Co-authored-by: Carlos Rodriguez <[email protected]>
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.

:)

Comment on lines +50 to +51
chain-a-tag: pr-3136 # TODO: needs v7.0.0 (with simapp fixes) when cut
chain-b-tag: pr-3136 # TODO: needs v7.0.0 (with simapp fixes) when cut
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there an issue for this?

Copy link
Contributor

Choose a reason for hiding this comment

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

Comment on lines +53 to +55
if clientID == exported.LocalhostClientID {
return clientID, 0, nil
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Regrets of not starting client identifiers at 1 😅 Would have been very clean with localhost being 0

I kind of think we should consider making this function private (or separating functionality) if it's possible two different client identifiers return 0 for the sequence. Not a concern to handle right now, but in non-test code this is used only to verify the identifier is parseable or to validate the NextClientSequence in 02-client/types/genesis.go#Validate. I would propose only parsing the identifier within that function

#3173 might make this easier to handle

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
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 🥳 🥳 🎈


In the previous release of ibc-go, the localhost `v1` light client module was deprecated and removed. The ibc-go `v7.1.0` release introduces `v2` of the 09-localhost light client module.

<!-- TODO: Update the links to use release version instead of feat branch -->
Copy link
Contributor

Choose a reason for hiding this comment

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

is there an issue for this? This will be a dead link as soon as the branch is deleted.

Copy link
Contributor

Choose a reason for hiding this comment

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

will create one for this so we don't lose it if it doesn't exist.

@chatton chatton merged commit d840c69 into main Mar 8, 2023
@chatton chatton deleted the 09-localhost branch March 8, 2023 16:31
mergify bot pushed a commit that referenced this pull request Mar 8, 2023
feat: adding 09-localhost loopback client module [\#3034](#3034). Please see the 09-localhost documentation [here](https://ibc.cosmos.network/main/ibc/light-clients/localhost/overview.html).
feat: AllowedClients on-chain param allows chains to pause usage of specific client types by removing the client type from the param.
imp: Update all channel events to use `connection_id` attribute. The `packet_connection` attribute has been deprecated.
(cherry picked from commit d840c69)

# Conflicts:
#	.github/workflows/e2e-upgrade.yaml
#	docs/ibc/events.md
#	e2e/relayer/relayer.go
#	e2e/testconfig/testconfig.go
#	e2e/tests/upgrades/upgrade_test.go
#	e2e/testsuite/codec.go
#	e2e/testsuite/grpc_query.go
#	e2e/testsuite/testsuite.go
#	modules/core/02-client/keeper/client.go
#	modules/core/02-client/keeper/proposal.go
#	modules/core/02-client/types/errors.go
#	modules/core/03-connection/keeper/verify.go
#	modules/core/03-connection/types/msgs_test.go
#	modules/core/04-channel/keeper/packet.go
#	modules/core/04-channel/types/msgs.go
colin-axner pushed a commit that referenced this pull request Mar 9, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
)

* Adding 09-localhost loopback client module (#3229)

feat: adding 09-localhost loopback client module [\#3034](#3034). Please see the 09-localhost documentation [here](https://ibc.cosmos.network/main/ibc/light-clients/localhost/overview.html).
feat: AllowedClients on-chain param allows chains to pause usage of specific client types by removing the client type from the param.
imp: Update all channel events to use `connection_id` attribute. The `packet_connection` attribute has been deprecated.
(cherry picked from commit d840c69)

# Conflicts:
#	.github/workflows/e2e-upgrade.yaml
#	docs/ibc/events.md
#	e2e/relayer/relayer.go
#	e2e/testconfig/testconfig.go
#	e2e/tests/upgrades/upgrade_test.go
#	e2e/testsuite/codec.go
#	e2e/testsuite/grpc_query.go
#	e2e/testsuite/testsuite.go
#	modules/core/02-client/keeper/client.go
#	modules/core/02-client/keeper/proposal.go
#	modules/core/02-client/types/errors.go
#	modules/core/03-connection/keeper/verify.go
#	modules/core/03-connection/types/msgs_test.go
#	modules/core/04-channel/keeper/packet.go
#	modules/core/04-channel/types/msgs.go

* rm -rf e2e

* rm .github/workflows/e2e-upgrade.yaml

* fix errorsmod -> sdkerrors

* ibcerror -> sdkerror in localhost client_state.go

---------

Co-authored-by: Damian Nolan <[email protected]>
@faddat faddat mentioned this pull request Jun 23, 2023
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add 09-localhost client state implementation
7 participants