├── .clang-format ├── .github ├── .codespellignore ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── epic-tracker.md │ ├── feature-request.md │ └── release-tracker.md ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml ├── mergify.yml └── workflows │ ├── build-simd-image-from-tag.yml │ ├── build-wasm-simd-image-from-tag.yml │ ├── codeql-analysis.yml │ ├── dependabot-tidy.yml │ ├── docker.yml │ ├── docs-check.yml │ ├── docs-deploy.yml │ ├── e2e-compatibility-workflow-call.yaml │ ├── e2e-compatibility.yaml │ ├── e2e-upgrade.yaml │ ├── e2e.yaml │ ├── golangci.yml │ ├── proto-breaking-check.yml │ ├── proto-registry.yml │ └── test.yml ├── .gitignore ├── .golangci.yml ├── AGENTS.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── RELEASES.md ├── SECURITY.md ├── buf.work.yaml ├── cmd └── build_test_matrix │ ├── main.go │ └── main_test.go ├── codecov.yml ├── contrib ├── devtools │ └── Makefile └── test_cover.sh ├── docs ├── .gitignore ├── .markdownlint-cli2.jsonc ├── .markdownlint.jsonc ├── README.md ├── architecture │ ├── README.md │ ├── adr-001-coin-source-tracing.md │ ├── adr-002-go-module-versioning.md │ ├── adr-003-ics27-acknowledgement.md │ ├── adr-004-ics29-lock-fee-module.md │ ├── adr-005-consensus-height-events.md │ ├── adr-006-02-client-refactor.md │ ├── adr-007-solomachine-signbytes.md │ ├── adr-008-app-caller-cbs.md │ ├── adr-009-v6-ics27-msgserver.md │ ├── adr-010-light-clients-as-sdk-modules.md │ ├── adr-011-transfer-total-escrow-state-entry.md │ ├── adr-015-ibc-packet-receiver.md │ ├── adr-025-ibc-passive-channels.md │ ├── adr-026-ibc-client-recovery-mechanisms.md │ ├── adr-027-ibc-wasm.md │ └── adr.template.md ├── audits │ ├── 04-channel-upgrades │ │ └── Atredis Partners - Interchain Foundation IBC-Go Channel Upgrade Feature Assessment - Report v1.1.pdf │ ├── 08-wasm │ │ ├── Ethan Frey - Wasm Client Review.pdf │ │ └── Halborn audit report.pdf │ ├── 20-token-transfer │ │ └── Atredis Partners - Interchain ICS20 v2 New Features Assessment - Report v1.0.pdf │ ├── 27-interchain-accounts │ │ └── Trail of Bits audit - Final Report.pdf │ └── IBC-v2 │ │ └── IBC-v2-April-2025-Collaborative-Audit-Report.pdf ├── babel.config.js ├── client │ ├── config.json │ └── swagger-ui │ │ └── swagger.yaml ├── dev │ ├── development-setup.md │ ├── go-style-guide.md │ ├── project-structure.md │ ├── pull-requests.md │ └── release-management.md ├── docs │ ├── 00-intro.md │ ├── 01-ibc │ │ ├── 01-overview.md │ │ ├── 02-integration.md │ │ ├── 03-apps │ │ │ ├── 00-ibcv2apps.md │ │ │ ├── 01-apps.md │ │ │ ├── 02-ibcmodule.md │ │ │ ├── 03-bindports.md │ │ │ ├── 04-keeper.md │ │ │ ├── 05-packets_acks.md │ │ │ ├── 06-routing.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ ├── packet_flow.png │ │ │ │ └── packet_flow_v2.png │ │ ├── 04-middleware │ │ │ ├── 01-overview.md │ │ │ ├── 02-develop.md │ │ │ ├── 02-developIBCv2.md │ │ │ ├── 03-integration.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ └── middleware-stack.png │ │ ├── 05-upgrades │ │ │ ├── 00-intro.md │ │ │ ├── 01-quick-guide.md │ │ │ ├── 02-developer-guide.md │ │ │ ├── 03-genesis-restart.md │ │ │ └── _category_.json │ │ ├── 07-relayer.md │ │ ├── 08-best-practices.md │ │ ├── 09-permissioning.md │ │ └── _category_.json │ ├── 02-apps │ │ ├── 01-transfer │ │ │ ├── 01-overview.md │ │ │ ├── 02-state.md │ │ │ ├── 03-state-transitions.md │ │ │ ├── 04-messages.md │ │ │ ├── 05-events.md │ │ │ ├── 06-metrics.md │ │ │ ├── 07-params.md │ │ │ ├── 08-authorizations.md │ │ │ ├── 09-client.md │ │ │ ├── 10-IBCv2-transfer.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ ├── forwarding-3-chains-dark.png │ │ │ │ └── forwarding-3-chains-light.png │ │ ├── 02-interchain-accounts │ │ │ ├── 01-overview.md │ │ │ ├── 02-development.md │ │ │ ├── 03-auth-modules.md │ │ │ ├── 04-integration.md │ │ │ ├── 05-messages.md │ │ │ ├── 06-parameters.md │ │ │ ├── 07-tx-encoding.md │ │ │ ├── 08-client.md │ │ │ ├── 09-active-channels.md │ │ │ ├── 10-legacy │ │ │ │ ├── 01-auth-modules.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-keeper-api.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── ica-pre-v6.png │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ └── ica-v6.png │ │ ├── 03-packet-forward-middleware │ │ │ └── integration.md │ │ └── _category_.json │ ├── 03-light-clients │ │ ├── 01-developer-guide │ │ │ ├── 01-overview.md │ │ │ ├── 02-light-client-module.md │ │ │ ├── 03-client-state.md │ │ │ ├── 04-consensus-state.md │ │ │ ├── 05-updates-and-misbehaviour.md │ │ │ ├── 06-upgrades.md │ │ │ ├── 07-proofs.md │ │ │ ├── 08-proposals.md │ │ │ ├── 09-setup.md │ │ │ └── _category_.json │ │ ├── 02-localhost │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-client-state.md │ │ │ ├── 04-connection.md │ │ │ ├── 05-state-verification.md │ │ │ └── _category_.json │ │ ├── 03-solomachine │ │ │ ├── 01-solomachine.md │ │ │ ├── 02-concepts.md │ │ │ ├── 03-state.md │ │ │ ├── 04-state_transitions.md │ │ │ └── _category_.json │ │ ├── 04-wasm │ │ │ ├── 01-overview.md │ │ │ ├── 02-concepts.md │ │ │ ├── 03-integration.md │ │ │ ├── 04-messages.md │ │ │ ├── 05-governance.md │ │ │ ├── 06-events.md │ │ │ ├── 07-contracts.md │ │ │ ├── 08-client.md │ │ │ ├── 09-migrations.md │ │ │ └── _category_.json │ │ ├── 05-tendermint │ │ │ ├── 01-overview.md │ │ │ └── _category_.json │ │ ├── 06-proposals.md │ │ └── _category_.json │ ├── 04-middleware │ │ ├── 01-callbacks │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-interfaces.md │ │ │ ├── 04-events.md │ │ │ ├── 05-end-users.md │ │ │ ├── 06-gas.md │ │ │ ├── 07-callbacks-IBCv2.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ ├── callbackflow.svg │ │ │ │ └── ics4-callbackflow.svg │ │ └── _category_.json │ ├── 05-migrations │ │ ├── 01-support-denoms-with-slashes.md │ │ ├── 02-sdk-to-v1.md │ │ ├── 03-v1-to-v2.md │ │ ├── 04-v2-to-v3.md │ │ ├── 05-v3-to-v4.md │ │ ├── 06-v4-to-v5.md │ │ ├── 07-v5-to-v6.md │ │ ├── 08-v6-to-v7.md │ │ ├── 09-v7-to-v7_1.md │ │ ├── 10-v7_2-to-v7_3.md │ │ ├── 11-v7-to-v8.md │ │ ├── 12-v8-to-v8_1.md │ │ ├── 13-v8_1-to-v10.md │ │ ├── _category_.json │ │ ├── images │ │ │ └── auth-module-decision-tree.png │ │ └── migration.template.md │ └── images │ │ ├── ibcoverview-dark.svg │ │ └── ibcoverview-light.svg ├── docusaurus.config.js ├── events │ └── events.md ├── package-lock.json ├── package.json ├── params │ └── params.md ├── requirements │ ├── ics08-requirements.md │ ├── ics27-multiplexed-requirements.md │ ├── ics27-requirements.md │ ├── ics27-v2-requirements.md │ ├── ics29-v1-requirements.md │ ├── localhost-requirements.md │ ├── path-unwinding-forwarding-requirements.md │ └── requirements-template.md ├── sidebars.js ├── src │ ├── components │ │ ├── HighlightBox.jsx │ │ └── HighlightTag.jsx │ ├── css │ │ ├── base.css │ │ ├── custom.css │ │ └── fonts.css │ └── theme │ │ └── CodeBlock │ │ └── index.js ├── static │ ├── .nojekyll │ ├── CNAME │ ├── fonts │ │ ├── inter │ │ │ ├── Inter-Black.woff │ │ │ ├── Inter-Black.woff2 │ │ │ ├── Inter-BlackItalic.woff │ │ │ ├── Inter-BlackItalic.woff2 │ │ │ ├── Inter-Bold.woff │ │ │ ├── Inter-Bold.woff2 │ │ │ ├── Inter-BoldItalic.woff │ │ │ ├── Inter-BoldItalic.woff2 │ │ │ ├── Inter-ExtraBold.woff │ │ │ ├── Inter-ExtraBold.woff2 │ │ │ ├── Inter-ExtraBoldItalic.woff │ │ │ ├── Inter-ExtraBoldItalic.woff2 │ │ │ ├── Inter-ExtraLight.woff │ │ │ ├── Inter-ExtraLight.woff2 │ │ │ ├── Inter-ExtraLightItalic.woff │ │ │ ├── Inter-ExtraLightItalic.woff2 │ │ │ ├── Inter-Italic.woff │ │ │ ├── Inter-Italic.woff2 │ │ │ ├── Inter-Light.woff │ │ │ ├── Inter-Light.woff2 │ │ │ ├── Inter-LightItalic.woff │ │ │ ├── Inter-LightItalic.woff2 │ │ │ ├── Inter-Medium.woff │ │ │ ├── Inter-Medium.woff2 │ │ │ ├── Inter-MediumItalic.woff │ │ │ ├── Inter-MediumItalic.woff2 │ │ │ ├── Inter-Regular.woff │ │ │ ├── Inter-Regular.woff2 │ │ │ ├── Inter-SemiBold.woff │ │ │ ├── Inter-SemiBold.woff2 │ │ │ ├── Inter-SemiBoldItalic.woff │ │ │ ├── Inter-SemiBoldItalic.woff2 │ │ │ ├── Inter-Thin.woff │ │ │ ├── Inter-Thin.woff2 │ │ │ ├── Inter-ThinItalic.woff │ │ │ ├── Inter-ThinItalic.woff2 │ │ │ ├── Inter-italic.var.woff2 │ │ │ └── Inter-roman.var.woff2 │ │ ├── intervar │ │ │ └── Inter.var.woff2 │ │ └── jetbrainsmono │ │ │ ├── JetBrainsMono-Bold.woff2 │ │ │ ├── JetBrainsMono-BoldItalic.woff2 │ │ │ ├── JetBrainsMono-ExtraBold.woff2 │ │ │ ├── JetBrainsMono-ExtraBoldItalic.woff2 │ │ │ ├── JetBrainsMono-ExtraLight.woff2 │ │ │ ├── JetBrainsMono-ExtraLightItalic.woff2 │ │ │ ├── JetBrainsMono-Italic.woff2 │ │ │ ├── JetBrainsMono-Light.woff2 │ │ │ ├── JetBrainsMono-LightItalic.woff2 │ │ │ ├── JetBrainsMono-Medium.woff2 │ │ │ ├── JetBrainsMono-MediumItalic.woff2 │ │ │ ├── JetBrainsMono-Regular.woff2 │ │ │ ├── JetBrainsMono-SemiBold.woff2 │ │ │ ├── JetBrainsMono-SemiBoldItalic.woff2 │ │ │ ├── JetBrainsMono-Thin.woff2 │ │ │ └── JetBrainsMono-ThinItalic.woff2 │ └── img │ │ ├── IBC-go-cover.svg │ │ ├── black-ibc-logo-400x400.svg │ │ ├── black-ibc-logo.svg │ │ ├── black-large-ibc-logo.svg │ │ ├── cosmos-logo-bw.svg │ │ ├── ibc-go-docs-social-card.png │ │ ├── ico-chevron.svg │ │ ├── icons │ │ ├── hi-coffee-icon.svg │ │ ├── hi-info-icon.svg │ │ ├── hi-note-icon.svg │ │ ├── hi-prerequisite-icon.svg │ │ ├── hi-reading-icon.svg │ │ ├── hi-star-icon.svg │ │ ├── hi-target-icon.svg │ │ ├── hi-tip-icon.svg │ │ └── hi-warn-icon.svg │ │ ├── spirograph-white.svg │ │ ├── white-cosmos-icon.svg │ │ ├── white-ibc-logo-400x400.svg │ │ ├── white-ibc-logo.svg │ │ └── white-large-ibc-logo.svg ├── tailwind.config.js ├── versioned_docs │ ├── version-v10.1.x │ │ ├── 00-intro.md │ │ ├── 01-ibc │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-apps │ │ │ │ ├── 00-ibcv2apps.md │ │ │ │ ├── 01-apps.md │ │ │ │ ├── 02-ibcmodule.md │ │ │ │ ├── 03-bindports.md │ │ │ │ ├── 04-keeper.md │ │ │ │ ├── 05-packets_acks.md │ │ │ │ ├── 06-routing.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ ├── packet_flow.png │ │ │ │ │ └── packet_flow_v2.png │ │ │ ├── 04-middleware │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-develop.md │ │ │ │ ├── 02-developIBCv2.md │ │ │ │ ├── 03-integration.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── middleware-stack.png │ │ │ ├── 05-upgrades │ │ │ │ ├── 00-intro.md │ │ │ │ ├── 01-quick-guide.md │ │ │ │ ├── 02-developer-guide.md │ │ │ │ ├── 03-genesis-restart.md │ │ │ │ └── _category_.json │ │ │ ├── 07-relayer.md │ │ │ ├── 08-best-practices.md │ │ │ ├── 09-permissioning.md │ │ │ └── _category_.json │ │ ├── 02-apps │ │ │ ├── 01-transfer │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-state.md │ │ │ │ ├── 03-state-transitions.md │ │ │ │ ├── 04-messages.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-metrics.md │ │ │ │ ├── 07-params.md │ │ │ │ ├── 08-authorizations.md │ │ │ │ ├── 09-client.md │ │ │ │ ├── 10-IBCv2-transfer.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ ├── forwarding-3-chains-dark.png │ │ │ │ │ └── forwarding-3-chains-light.png │ │ │ ├── 02-interchain-accounts │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-development.md │ │ │ │ ├── 03-auth-modules.md │ │ │ │ ├── 04-integration.md │ │ │ │ ├── 05-messages.md │ │ │ │ ├── 06-parameters.md │ │ │ │ ├── 07-tx-encoding.md │ │ │ │ ├── 08-client.md │ │ │ │ ├── 09-active-channels.md │ │ │ │ ├── 10-legacy │ │ │ │ │ ├── 01-auth-modules.md │ │ │ │ │ ├── 02-integration.md │ │ │ │ │ ├── 03-keeper-api.md │ │ │ │ │ ├── _category_.json │ │ │ │ │ └── images │ │ │ │ │ │ └── ica-pre-v6.png │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── ica-v6.png │ │ │ └── _category_.json │ │ ├── 03-light-clients │ │ │ ├── 01-developer-guide │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-light-client-module.md │ │ │ │ ├── 03-client-state.md │ │ │ │ ├── 04-consensus-state.md │ │ │ │ ├── 05-updates-and-misbehaviour.md │ │ │ │ ├── 06-upgrades.md │ │ │ │ ├── 07-proofs.md │ │ │ │ ├── 08-proposals.md │ │ │ │ ├── 09-setup.md │ │ │ │ └── _category_.json │ │ │ ├── 02-localhost │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-client-state.md │ │ │ │ ├── 04-connection.md │ │ │ │ ├── 05-state-verification.md │ │ │ │ └── _category_.json │ │ │ ├── 03-solomachine │ │ │ │ ├── 01-solomachine.md │ │ │ │ ├── 02-concepts.md │ │ │ │ ├── 03-state.md │ │ │ │ ├── 04-state_transitions.md │ │ │ │ └── _category_.json │ │ │ ├── 04-wasm │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-concepts.md │ │ │ │ ├── 03-integration.md │ │ │ │ ├── 04-messages.md │ │ │ │ ├── 05-governance.md │ │ │ │ ├── 06-events.md │ │ │ │ ├── 07-contracts.md │ │ │ │ ├── 08-client.md │ │ │ │ ├── 09-migrations.md │ │ │ │ └── _category_.json │ │ │ ├── 05-tendermint │ │ │ │ ├── 01-overview.md │ │ │ │ └── _category_.json │ │ │ ├── 06-proposals.md │ │ │ └── _category_.json │ │ ├── 04-middleware │ │ │ ├── 01-callbacks │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-interfaces.md │ │ │ │ ├── 04-events.md │ │ │ │ ├── 05-end-users.md │ │ │ │ ├── 06-gas.md │ │ │ │ ├── 07-callbacks-IBCv2.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ ├── callbackflow.svg │ │ │ │ │ └── ics4-callbackflow.svg │ │ │ └── _category_.json │ │ ├── 05-migrations │ │ │ ├── 01-support-denoms-with-slashes.md │ │ │ ├── 02-sdk-to-v1.md │ │ │ ├── 03-v1-to-v2.md │ │ │ ├── 04-v2-to-v3.md │ │ │ ├── 05-v3-to-v4.md │ │ │ ├── 06-v4-to-v5.md │ │ │ ├── 07-v5-to-v6.md │ │ │ ├── 08-v6-to-v7.md │ │ │ ├── 09-v7-to-v7_1.md │ │ │ ├── 10-v7_2-to-v7_3.md │ │ │ ├── 11-v7-to-v8.md │ │ │ ├── 12-v8-to-v8_1.md │ │ │ ├── 13-v8_1-to-v10.md │ │ │ ├── _category_.json │ │ │ ├── images │ │ │ │ └── auth-module-decision-tree.png │ │ │ └── migration.template.md │ │ └── images │ │ │ ├── ibcoverview-dark.svg │ │ │ └── ibcoverview-light.svg │ ├── version-v4.6.x │ │ ├── 00-intro.md │ │ ├── 01-ibc │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-apps │ │ │ │ ├── 01-apps.md │ │ │ │ ├── 02-ibcmodule.md │ │ │ │ ├── 03-bindports.md │ │ │ │ ├── 04-keeper.md │ │ │ │ ├── 05-packets_acks.md │ │ │ │ ├── 06-routing.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── packet_flow.png │ │ │ ├── 04-middleware │ │ │ │ ├── 01-develop.md │ │ │ │ ├── 02-integration.md │ │ │ │ └── _category_.json │ │ │ ├── 05-upgrades │ │ │ │ ├── 00-intro.md │ │ │ │ ├── 01-quick-guide.md │ │ │ │ ├── 02-developer-guide.md │ │ │ │ ├── 03-genesis-restart.md │ │ │ │ └── _category_.json │ │ │ ├── 06-proposals.md │ │ │ ├── 07-relayer.md │ │ │ ├── 08-proto-docs.md │ │ │ ├── 09-roadmap.md │ │ │ └── _category_.json │ │ ├── 02-apps │ │ │ ├── 01-transfer │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-state.md │ │ │ │ ├── 03-state-transitions.md │ │ │ │ ├── 04-messages.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-metrics.md │ │ │ │ ├── 07-params.md │ │ │ │ └── _category_.json │ │ │ ├── 02-interchain-accounts │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-auth-modules.md │ │ │ │ ├── 03-active-channels.md │ │ │ │ ├── 04-integration.md │ │ │ │ ├── 05-parameters.md │ │ │ │ ├── 06-transactions.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── send-interchain-tx.png │ │ │ └── _category_.json │ │ ├── 03-middleware │ │ │ ├── 01-ics29-fee │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-msgs.md │ │ │ │ ├── 04-fee-distribution.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-end-users.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ ├── feeflow.png │ │ │ │ │ ├── msgpaypacket.png │ │ │ │ │ └── paypacketfeeasync.png │ │ │ └── _category_.json │ │ └── 04-migrations │ │ │ ├── 01-support-denoms-with-slashes.md │ │ │ ├── 02-sdk-to-v1.md │ │ │ ├── 03-v1-to-v2.md │ │ │ ├── 04-v2-to-v3.md │ │ │ ├── 05-v3-to-v4.md │ │ │ └── _category_.json │ ├── version-v5.4.x │ │ ├── 00-intro.md │ │ ├── 01-ibc │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-apps │ │ │ │ ├── 01-apps.md │ │ │ │ ├── 02-ibcmodule.md │ │ │ │ ├── 03-bindports.md │ │ │ │ ├── 04-keeper.md │ │ │ │ ├── 05-packets_acks.md │ │ │ │ ├── 06-routing.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── packet_flow.png │ │ │ ├── 04-middleware │ │ │ │ ├── 01-develop.md │ │ │ │ ├── 02-integration.md │ │ │ │ └── _category_.json │ │ │ ├── 05-upgrades │ │ │ │ ├── 00-intro.md │ │ │ │ ├── 01-quick-guide.md │ │ │ │ ├── 02-developer-guide.md │ │ │ │ ├── 03-genesis-restart.md │ │ │ │ └── _category_.json │ │ │ ├── 06-proposals.md │ │ │ ├── 07-relayer.md │ │ │ ├── 08-proto-docs.md │ │ │ ├── 09-roadmap.md │ │ │ └── _category_.json │ │ ├── 02-apps │ │ │ ├── 01-transfer │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-state.md │ │ │ │ ├── 03-state-transitions.md │ │ │ │ ├── 04-messages.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-metrics.md │ │ │ │ ├── 07-params.md │ │ │ │ └── _category_.json │ │ │ ├── 02-interchain-accounts │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-auth-modules.md │ │ │ │ ├── 03-active-channels.md │ │ │ │ ├── 04-integration.md │ │ │ │ ├── 05-parameters.md │ │ │ │ ├── 06-transactions.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── send-interchain-tx.png │ │ │ └── _category_.json │ │ ├── 03-middleware │ │ │ ├── 01-ics29-fee │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-msgs.md │ │ │ │ ├── 04-fee-distribution.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-end-users.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ ├── feeflow.png │ │ │ │ │ ├── msgpaypacket.png │ │ │ │ │ └── paypacketfeeasync.png │ │ │ └── _category_.json │ │ └── 04-migrations │ │ │ ├── 01-support-denoms-with-slashes.md │ │ │ ├── 02-sdk-to-v1.md │ │ │ ├── 03-v1-to-v2.md │ │ │ ├── 04-v2-to-v3.md │ │ │ ├── 05-v3-to-v4.md │ │ │ └── _category_.json │ ├── version-v6.3.x │ │ ├── 00-intro.md │ │ ├── 01-ibc │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-apps │ │ │ │ ├── 01-apps.md │ │ │ │ ├── 02-ibcmodule.md │ │ │ │ ├── 03-bindports.md │ │ │ │ ├── 04-keeper.md │ │ │ │ ├── 05-packets_acks.md │ │ │ │ ├── 06-routing.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── packet_flow.png │ │ │ ├── 04-middleware │ │ │ │ ├── 01-develop.md │ │ │ │ ├── 02-integration.md │ │ │ │ └── _category_.json │ │ │ ├── 05-upgrades │ │ │ │ ├── 00-intro.md │ │ │ │ ├── 01-quick-guide.md │ │ │ │ ├── 02-developer-guide.md │ │ │ │ ├── 03-genesis-restart.md │ │ │ │ └── _category_.json │ │ │ ├── 06-proposals.md │ │ │ ├── 07-relayer.md │ │ │ ├── 08-proto-docs.md │ │ │ ├── 09-roadmap.md │ │ │ └── _category_.json │ │ ├── 02-apps │ │ │ ├── 01-transfer │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-state.md │ │ │ │ ├── 03-state-transitions.md │ │ │ │ ├── 04-messages.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-metrics.md │ │ │ │ ├── 07-params.md │ │ │ │ ├── 08-authorizations.md │ │ │ │ └── _category_.json │ │ │ ├── 02-interchain-accounts │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-development.md │ │ │ │ ├── 03-auth-modules.md │ │ │ │ ├── 04-integration.md │ │ │ │ ├── 05-messages.md │ │ │ │ ├── 06-parameters.md │ │ │ │ ├── 07-client.md │ │ │ │ ├── 08-active-channels.md │ │ │ │ ├── 09-legacy │ │ │ │ │ ├── 01-auth-modules.md │ │ │ │ │ ├── 02-integration.md │ │ │ │ │ ├── 03-keeper-api.md │ │ │ │ │ ├── _category_.json │ │ │ │ │ └── images │ │ │ │ │ │ └── ica-pre-v6.png │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── ica-v6.png │ │ │ └── _category_.json │ │ ├── 03-middleware │ │ │ ├── 01-ics29-fee │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-msgs.md │ │ │ │ ├── 04-fee-distribution.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-end-users.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ ├── feeflow.png │ │ │ │ │ ├── msgpaypacket.png │ │ │ │ │ └── paypacketfeeasync.png │ │ │ └── _category_.json │ │ └── 04-migrations │ │ │ ├── 01-support-denoms-with-slashes.md │ │ │ ├── 02-sdk-to-v1.md │ │ │ ├── 03-v1-to-v2.md │ │ │ ├── 04-v2-to-v3.md │ │ │ ├── 05-v3-to-v4.md │ │ │ ├── 06-v4-to-v5.md │ │ │ ├── 07-v5-to-v6.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ └── auth-module-decision-tree.png │ ├── version-v7.8.x │ │ ├── 00-intro.md │ │ ├── 01-ibc │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-apps │ │ │ │ ├── 01-apps.md │ │ │ │ ├── 02-ibcmodule.md │ │ │ │ ├── 03-bindports.md │ │ │ │ ├── 04-keeper.md │ │ │ │ ├── 05-packets_acks.md │ │ │ │ ├── 06-routing.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── packet_flow.png │ │ │ ├── 04-middleware │ │ │ │ ├── 01-develop.md │ │ │ │ ├── 02-integration.md │ │ │ │ └── _category_.json │ │ │ ├── 05-upgrades │ │ │ │ ├── 00-intro.md │ │ │ │ ├── 01-quick-guide.md │ │ │ │ ├── 02-developer-guide.md │ │ │ │ ├── 03-genesis-restart.md │ │ │ │ └── _category_.json │ │ │ ├── 06-proposals.md │ │ │ ├── 07-relayer.md │ │ │ ├── 08-proto-docs.md │ │ │ ├── 09-roadmap.md │ │ │ ├── 10-troubleshooting.md │ │ │ └── _category_.json │ │ ├── 02-apps │ │ │ ├── 01-transfer │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-state.md │ │ │ │ ├── 03-state-transitions.md │ │ │ │ ├── 04-messages.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-metrics.md │ │ │ │ ├── 07-params.md │ │ │ │ ├── 08-authorizations.md │ │ │ │ ├── 09-client.md │ │ │ │ └── _category_.json │ │ │ ├── 02-interchain-accounts │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-development.md │ │ │ │ ├── 03-auth-modules.md │ │ │ │ ├── 04-integration.md │ │ │ │ ├── 05-messages.md │ │ │ │ ├── 06-parameters.md │ │ │ │ ├── 07-tx-encoding.md │ │ │ │ ├── 08-client.md │ │ │ │ ├── 09-active-channels.md │ │ │ │ ├── 10-legacy │ │ │ │ │ ├── 01-auth-modules.md │ │ │ │ │ ├── 02-integration.md │ │ │ │ │ ├── 03-keeper-api.md │ │ │ │ │ ├── _category_.json │ │ │ │ │ └── images │ │ │ │ │ │ └── ica-pre-v6.png │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── ica-v6.png │ │ │ └── _category_.json │ │ ├── 03-light-clients │ │ │ ├── 01-developer-guide │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-client-state.md │ │ │ │ ├── 03-consensus-state.md │ │ │ │ ├── 04-updates-and-misbehaviour.md │ │ │ │ ├── 05-upgrades.md │ │ │ │ ├── 06-proofs.md │ │ │ │ ├── 07-proposals.md │ │ │ │ ├── 08-genesis.md │ │ │ │ ├── 09-setup.md │ │ │ │ └── _category_.json │ │ │ ├── 02-solomachine │ │ │ │ ├── 01-solomachine.md │ │ │ │ ├── 02-concepts.md │ │ │ │ ├── 03-state.md │ │ │ │ ├── 04-state_transitions.md │ │ │ │ └── _category_.json │ │ │ ├── 03-localhost │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-client-state.md │ │ │ │ ├── 04-connection.md │ │ │ │ ├── 05-state-verification.md │ │ │ │ └── _category_.json │ │ │ ├── 04-wasm │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-concepts.md │ │ │ │ ├── 03-integration.md │ │ │ │ ├── 04-messages.md │ │ │ │ ├── 05-governance.md │ │ │ │ ├── 06-events.md │ │ │ │ ├── 07-contracts.md │ │ │ │ ├── 08-client.md │ │ │ │ └── _category_.json │ │ │ └── _category_.json │ │ ├── 04-middleware │ │ │ ├── 01-ics29-fee │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-msgs.md │ │ │ │ ├── 04-fee-distribution.md │ │ │ │ ├── 05-events.md │ │ │ │ ├── 06-end-users.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ ├── feeflow.png │ │ │ │ │ ├── msgpaypacket.png │ │ │ │ │ └── paypacketfeeasync.png │ │ │ ├── 02-callbacks │ │ │ │ ├── 01-overview.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-interfaces.md │ │ │ │ ├── 04-events.md │ │ │ │ ├── 05-end-users.md │ │ │ │ ├── 06-gas.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ ├── callbackflow.svg │ │ │ │ │ └── ics4-callbackflow.svg │ │ │ └── _category_.json │ │ └── 05-migrations │ │ │ ├── 01-support-denoms-with-slashes.md │ │ │ ├── 02-sdk-to-v1.md │ │ │ ├── 03-v1-to-v2.md │ │ │ ├── 04-v2-to-v3.md │ │ │ ├── 05-v3-to-v4.md │ │ │ ├── 06-v4-to-v5.md │ │ │ ├── 07-v5-to-v6.md │ │ │ ├── 08-v6-to-v7.md │ │ │ ├── 09-v7-to-v7_1.md │ │ │ ├── 10-v7_2-to-v7_3.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ └── auth-module-decision-tree.png │ └── version-v8.5.x │ │ ├── 00-intro.md │ │ ├── 01-ibc │ │ ├── 01-overview.md │ │ ├── 02-integration.md │ │ ├── 03-apps │ │ │ ├── 01-apps.md │ │ │ ├── 02-ibcmodule.md │ │ │ ├── 03-bindports.md │ │ │ ├── 04-keeper.md │ │ │ ├── 05-packets_acks.md │ │ │ ├── 06-routing.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ └── packet_flow.png │ │ ├── 04-middleware │ │ │ ├── 01-overview.md │ │ │ ├── 02-develop.md │ │ │ ├── 03-integration.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ └── middleware-stack.png │ │ ├── 05-upgrades │ │ │ ├── 00-intro.md │ │ │ ├── 01-quick-guide.md │ │ │ ├── 02-developer-guide.md │ │ │ ├── 03-genesis-restart.md │ │ │ └── _category_.json │ │ ├── 06-channel-upgrades.md │ │ ├── 07-proposals.md │ │ ├── 08-relayer.md │ │ ├── 09-proto-docs.md │ │ ├── 10-roadmap.md │ │ ├── 11-troubleshooting.md │ │ ├── 12-capability-module.md │ │ └── _category_.json │ │ ├── 02-apps │ │ ├── 01-transfer │ │ │ ├── 01-overview.md │ │ │ ├── 02-state.md │ │ │ ├── 03-state-transitions.md │ │ │ ├── 04-messages.md │ │ │ ├── 05-events.md │ │ │ ├── 06-metrics.md │ │ │ ├── 07-params.md │ │ │ ├── 08-authorizations.md │ │ │ ├── 09-client.md │ │ │ └── _category_.json │ │ ├── 02-interchain-accounts │ │ │ ├── 01-overview.md │ │ │ ├── 02-development.md │ │ │ ├── 03-auth-modules.md │ │ │ ├── 04-integration.md │ │ │ ├── 05-messages.md │ │ │ ├── 06-parameters.md │ │ │ ├── 07-tx-encoding.md │ │ │ ├── 08-client.md │ │ │ ├── 09-active-channels.md │ │ │ ├── 10-legacy │ │ │ │ ├── 01-auth-modules.md │ │ │ │ ├── 02-integration.md │ │ │ │ ├── 03-keeper-api.md │ │ │ │ ├── _category_.json │ │ │ │ └── images │ │ │ │ │ └── ica-pre-v6.png │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ └── ica-v6.png │ │ └── _category_.json │ │ ├── 03-light-clients │ │ ├── 01-developer-guide │ │ │ ├── 01-overview.md │ │ │ ├── 02-client-state.md │ │ │ ├── 03-consensus-state.md │ │ │ ├── 04-updates-and-misbehaviour.md │ │ │ ├── 05-upgrades.md │ │ │ ├── 06-proofs.md │ │ │ ├── 07-proposals.md │ │ │ ├── 08-genesis.md │ │ │ ├── 09-setup.md │ │ │ └── _category_.json │ │ ├── 02-localhost │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-client-state.md │ │ │ ├── 04-connection.md │ │ │ ├── 05-state-verification.md │ │ │ └── _category_.json │ │ ├── 03-solomachine │ │ │ ├── 01-solomachine.md │ │ │ ├── 02-concepts.md │ │ │ ├── 03-state.md │ │ │ ├── 04-state_transitions.md │ │ │ └── _category_.json │ │ ├── 04-wasm │ │ │ ├── 01-overview.md │ │ │ ├── 02-concepts.md │ │ │ ├── 03-integration.md │ │ │ ├── 04-messages.md │ │ │ ├── 05-governance.md │ │ │ ├── 06-events.md │ │ │ ├── 07-contracts.md │ │ │ ├── 08-client.md │ │ │ ├── 09-migrations.md │ │ │ └── _category_.json │ │ └── _category_.json │ │ ├── 04-middleware │ │ ├── 01-ics29-fee │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-msgs.md │ │ │ ├── 04-fee-distribution.md │ │ │ ├── 05-events.md │ │ │ ├── 06-end-users.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ ├── feeflow.png │ │ │ │ ├── msgpaypacket.png │ │ │ │ └── paypacketfeeasync.png │ │ ├── 02-callbacks │ │ │ ├── 01-overview.md │ │ │ ├── 02-integration.md │ │ │ ├── 03-interfaces.md │ │ │ ├── 04-events.md │ │ │ ├── 05-end-users.md │ │ │ ├── 06-gas.md │ │ │ ├── _category_.json │ │ │ └── images │ │ │ │ ├── callbackflow.svg │ │ │ │ └── ics4-callbackflow.svg │ │ └── _category_.json │ │ ├── 05-migrations │ │ ├── 01-support-denoms-with-slashes.md │ │ ├── 02-sdk-to-v1.md │ │ ├── 03-v1-to-v2.md │ │ ├── 04-v2-to-v3.md │ │ ├── 05-v3-to-v4.md │ │ ├── 06-v4-to-v5.md │ │ ├── 07-v5-to-v6.md │ │ ├── 08-v6-to-v7.md │ │ ├── 09-v7-to-v7_1.md │ │ ├── 10-v7_2-to-v7_3.md │ │ ├── 11-v7-to-v8.md │ │ ├── 12-v8-to-v8_1.md │ │ ├── _category_.json │ │ ├── images │ │ │ └── auth-module-decision-tree.png │ │ └── migration.template.md │ │ └── images │ │ ├── ibcoverview-dark.svg │ │ └── ibcoverview-light.svg ├── versioned_sidebars │ ├── version-v10.1.x-sidebars.json │ ├── version-v4.6.x-sidebars.json │ ├── version-v5.4.x-sidebars.json │ ├── version-v6.3.x-sidebars.json │ ├── version-v7.8.x-sidebars.json │ └── version-v8.5.x-sidebars.json └── versions.json ├── e2e ├── Makefile ├── README.md ├── ci-e2e-config.yaml ├── dockerutil │ └── dockerutil.go ├── go.mod ├── go.sum ├── internal │ └── directories │ │ └── directories.go ├── relayer │ └── relayer.go ├── sample.config.extended.yaml ├── sample.config.yaml ├── scripts │ ├── init.sh │ └── run-e2e.sh ├── semverutil │ ├── semver.go │ └── semver_test.go ├── tests │ ├── core │ │ ├── 02-client │ │ │ └── client_test.go │ │ └── 03-connection │ │ │ └── connection_test.go │ ├── interchain_accounts │ │ ├── base_test.go │ │ ├── gov_test.go │ │ ├── groups_test.go │ │ ├── localhost_test.go │ │ ├── params_test.go │ │ └── query_test.go │ ├── packet_forward_middleware │ │ ├── forward_timeout_test.go │ │ ├── packet_forward_test.go │ │ └── pfm_upgrade_test.go │ ├── transfer │ │ ├── authz_test.go │ │ ├── base_test.go │ │ ├── localhost_test.go │ │ ├── send_enabled_test.go │ │ └── send_receive_test.go │ └── upgrades │ │ ├── genesis_test.go │ │ └── upgrade_test.go ├── testsuite │ ├── codec.go │ ├── diagnostics │ │ └── diagnostics.go │ ├── events.go │ ├── query │ │ ├── grpc_query.go │ │ └── queries.go │ ├── sanitize │ │ └── messages.go │ ├── testconfig.go │ ├── testsuite.go │ └── tx.go └── testvalues │ └── values.go ├── go.mod ├── go.sum ├── go.work.example ├── internal ├── logging │ └── logging.go └── validate │ ├── validate.go │ └── validate_test.go ├── maintainership.png ├── modules ├── apps │ ├── 27-interchain-accounts │ │ ├── client │ │ │ └── cli │ │ │ │ └── cli.go │ │ ├── controller │ │ │ ├── client │ │ │ │ └── cli │ │ │ │ │ ├── cli.go │ │ │ │ │ ├── query.go │ │ │ │ │ └── tx.go │ │ │ ├── ibc_middleware.go │ │ │ ├── ibc_middleware_test.go │ │ │ ├── keeper │ │ │ │ ├── account.go │ │ │ │ ├── account_test.go │ │ │ │ ├── events.go │ │ │ │ ├── export_test.go │ │ │ │ ├── genesis.go │ │ │ │ ├── genesis_test.go │ │ │ │ ├── grpc_query.go │ │ │ │ ├── grpc_query_test.go │ │ │ │ ├── handshake.go │ │ │ │ ├── handshake_test.go │ │ │ │ ├── keeper.go │ │ │ │ ├── keeper_test.go │ │ │ │ ├── migrations.go │ │ │ │ ├── migrations_test.go │ │ │ │ ├── msg_server.go │ │ │ │ ├── msg_server_test.go │ │ │ │ ├── relay.go │ │ │ │ └── relay_test.go │ │ │ └── types │ │ │ │ ├── codec.go │ │ │ │ ├── codec_test.go │ │ │ │ ├── controller.pb.go │ │ │ │ ├── errors.go │ │ │ │ ├── keys.go │ │ │ │ ├── msgs.go │ │ │ │ ├── msgs_test.go │ │ │ │ ├── params.go │ │ │ │ ├── params_legacy.go │ │ │ │ ├── query.pb.go │ │ │ │ ├── query.pb.gw.go │ │ │ │ └── tx.pb.go │ │ ├── doc.go │ │ ├── genesis │ │ │ └── types │ │ │ │ ├── genesis.go │ │ │ │ ├── genesis.pb.go │ │ │ │ └── genesis_test.go │ │ ├── host │ │ │ ├── client │ │ │ │ └── cli │ │ │ │ │ ├── cli.go │ │ │ │ │ ├── query.go │ │ │ │ │ ├── tx.go │ │ │ │ │ └── tx_test.go │ │ │ ├── ibc_module.go │ │ │ ├── ibc_module_test.go │ │ │ ├── keeper │ │ │ │ ├── account.go │ │ │ │ ├── events.go │ │ │ │ ├── export_test.go │ │ │ │ ├── genesis.go │ │ │ │ ├── genesis_test.go │ │ │ │ ├── grpc_query.go │ │ │ │ ├── grpc_query_test.go │ │ │ │ ├── handshake.go │ │ │ │ ├── handshake_test.go │ │ │ │ ├── keeper.go │ │ │ │ ├── keeper_test.go │ │ │ │ ├── migrations.go │ │ │ │ ├── migrations_test.go │ │ │ │ ├── msg_server.go │ │ │ │ ├── msg_server_test.go │ │ │ │ ├── relay.go │ │ │ │ └── relay_test.go │ │ │ └── types │ │ │ │ ├── codec.go │ │ │ │ ├── codec_test.go │ │ │ │ ├── errors.go │ │ │ │ ├── host.pb.go │ │ │ │ ├── keys.go │ │ │ │ ├── msgs.go │ │ │ │ ├── msgs_test.go │ │ │ │ ├── params.go │ │ │ │ ├── params_legacy.go │ │ │ │ ├── params_test.go │ │ │ │ ├── query.pb.go │ │ │ │ ├── query.pb.gw.go │ │ │ │ └── tx.pb.go │ │ ├── module.go │ │ ├── module_test.go │ │ ├── simulation │ │ │ ├── decoder.go │ │ │ ├── decoder_test.go │ │ │ ├── genesis.go │ │ │ ├── genesis_test.go │ │ │ ├── proposals.go │ │ │ └── proposals_test.go │ │ └── types │ │ │ ├── account.go │ │ │ ├── account.pb.go │ │ │ ├── account_test.go │ │ │ ├── codec.go │ │ │ ├── codec_test.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── expected_keepers.go │ │ │ ├── keys.go │ │ │ ├── keys_test.go │ │ │ ├── metadata.go │ │ │ ├── metadata.pb.go │ │ │ ├── metadata_test.go │ │ │ ├── packet.go │ │ │ ├── packet.pb.go │ │ │ ├── packet_test.go │ │ │ ├── port.go │ │ │ ├── port_test.go │ │ │ └── router.go │ ├── callbacks │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── callbacks_test.go │ │ ├── ibc_middleware.go │ │ ├── ibc_middleware_test.go │ │ ├── ica_test.go │ │ ├── internal │ │ │ └── process.go │ │ ├── replay_test.go │ │ ├── testing │ │ │ └── simapp │ │ │ │ ├── README.md │ │ │ │ ├── ante_handler.go │ │ │ │ ├── app.go │ │ │ │ ├── contract_keeper.go │ │ │ │ ├── encoding.go │ │ │ │ ├── export.go │ │ │ │ ├── genesis.go │ │ │ │ ├── genesis_account.go │ │ │ │ └── params │ │ │ │ ├── amino.go │ │ │ │ ├── doc.go │ │ │ │ ├── encoding.go │ │ │ │ └── proto.go │ │ ├── transfer_test.go │ │ ├── types │ │ │ ├── callbacks.go │ │ │ ├── callbacks_test.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── events_test.go │ │ │ ├── expected_keepers.go │ │ │ ├── export_test.go │ │ │ ├── keys.go │ │ │ └── types_test.go │ │ └── v2 │ │ │ ├── ibc_middleware.go │ │ │ ├── ibc_middleware_test.go │ │ │ └── v2_test.go │ ├── packet-forward-middleware │ │ ├── README.md │ │ ├── ibc_middleware.go │ │ ├── ibc_middleware_test.go │ │ ├── keeper │ │ │ ├── genesis.go │ │ │ ├── keeper.go │ │ │ └── migrator.go │ │ ├── migrations │ │ │ └── v3 │ │ │ │ └── migrate.go │ │ ├── module.go │ │ └── types │ │ │ ├── codec.go │ │ │ ├── expected_keepers.go │ │ │ ├── forward.go │ │ │ ├── forward_test.go │ │ │ ├── genesis.go │ │ │ ├── genesis.pb.go │ │ │ ├── keys.go │ │ │ └── types.go │ └── transfer │ │ ├── client │ │ └── cli │ │ │ ├── cli.go │ │ │ ├── query.go │ │ │ └── tx.go │ │ ├── doc.go │ │ ├── ibc_module.go │ │ ├── ibc_module_test.go │ │ ├── internal │ │ ├── events │ │ │ └── events.go │ │ ├── telemetry │ │ │ └── telemetry.go │ │ └── types │ │ │ ├── denomtrace.pb.go │ │ │ ├── legacy_denomtrace.go │ │ │ └── legacy_denomtrace_test.go │ │ ├── keeper │ │ ├── MBT_README.md │ │ ├── export_test.go │ │ ├── genesis.go │ │ ├── genesis_test.go │ │ ├── grpc_query.go │ │ ├── grpc_query_test.go │ │ ├── keeper.go │ │ ├── keeper_test.go │ │ ├── mbt_relay_test.go │ │ ├── migrations.go │ │ ├── migrations_test.go │ │ ├── model_based_tests │ │ │ ├── Test5Packets.json │ │ │ ├── Test5Packets.tla │ │ │ ├── Test5PacketsAllDifferentPass.json │ │ │ ├── Test5PacketsAllDifferentPass.tla │ │ │ ├── TestOnRecvAcknowledgementErrorFail.json │ │ │ ├── TestOnRecvAcknowledgementErrorFail.tla │ │ │ ├── TestOnRecvAcknowledgementErrorPass.json │ │ │ ├── TestOnRecvAcknowledgementErrorPass.tla │ │ │ ├── TestOnRecvAcknowledgementResultFail.json │ │ │ ├── TestOnRecvAcknowledgementResultFail.tla │ │ │ ├── TestOnRecvAcknowledgementResultPass.json │ │ │ ├── TestOnRecvAcknowledgementResultPass.tla │ │ │ ├── TestOnRecvPacketFail.json │ │ │ ├── TestOnRecvPacketFail.tla │ │ │ ├── TestOnRecvPacketPass.json │ │ │ ├── TestOnRecvPacketPass.tla │ │ │ ├── TestOnTimeoutFail.json │ │ │ ├── TestOnTimeoutFail.tla │ │ │ ├── TestOnTimeoutPass.json │ │ │ ├── TestOnTimeoutPass.tla │ │ │ ├── TestSendTransferFail.json │ │ │ ├── TestSendTransferFail.tla │ │ │ ├── TestSendTransferPass.json │ │ │ ├── TestSendTransferPass.tla │ │ │ ├── TestUnescrowTokens.json │ │ │ └── TestUnescrowTokens.tla │ │ ├── msg_server.go │ │ ├── msg_server_test.go │ │ ├── relay.go │ │ ├── relay_model │ │ │ ├── account.tla │ │ │ ├── account_record.tla │ │ │ ├── apalache-to-relay-test.json │ │ │ ├── apalache-to-relay-test2.json │ │ │ ├── denom.tla │ │ │ ├── denom_record.tla │ │ │ ├── denom_record2.tla │ │ │ ├── denom_sequence.tla │ │ │ ├── identifiers.tla │ │ │ ├── relay.tla │ │ │ └── relay_tests.tla │ │ └── relay_test.go │ │ ├── module.go │ │ ├── simulation │ │ ├── decoder.go │ │ ├── decoder_test.go │ │ ├── genesis.go │ │ ├── genesis_test.go │ │ ├── proposals.go │ │ └── proposals_test.go │ │ ├── transfer_test.go │ │ ├── types │ │ ├── authz.pb.go │ │ ├── codec.go │ │ ├── codec_test.go │ │ ├── denom.go │ │ ├── denom_test.go │ │ ├── deprecated.go │ │ ├── encoding.go │ │ ├── errors.go │ │ ├── events.go │ │ ├── expected_keepers.go │ │ ├── export_test.go │ │ ├── genesis.go │ │ ├── genesis.pb.go │ │ ├── genesis_test.go │ │ ├── hop.go │ │ ├── hop_test.go │ │ ├── keys.go │ │ ├── keys_test.go │ │ ├── msgs.go │ │ ├── msgs_test.go │ │ ├── packet.go │ │ ├── packet.pb.go │ │ ├── packet_test.go │ │ ├── params.go │ │ ├── params_legacy.go │ │ ├── query.pb.go │ │ ├── query.pb.gw.go │ │ ├── solidity_abi.go │ │ ├── solidity_abi_test.go │ │ ├── token.go │ │ ├── token.pb.go │ │ ├── token_test.go │ │ ├── transfer.pb.go │ │ ├── transfer_authorization.go │ │ ├── transfer_authorization_test.go │ │ ├── tx.pb.go │ │ └── types_test.go │ │ └── v2 │ │ ├── ibc_module.go │ │ └── ibc_module_test.go ├── core │ ├── 02-client │ │ ├── abci.go │ │ ├── abci_test.go │ │ ├── client │ │ │ ├── cli │ │ │ │ ├── cli.go │ │ │ │ ├── query.go │ │ │ │ └── tx.go │ │ │ └── utils │ │ │ │ └── utils.go │ │ ├── doc.go │ │ ├── genesis.go │ │ ├── keeper │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ ├── events.go │ │ │ ├── events_test.go │ │ │ ├── grpc_query.go │ │ │ ├── grpc_query_test.go │ │ │ ├── keeper.go │ │ │ ├── keeper_test.go │ │ │ ├── migrations.go │ │ │ └── migrations_test.go │ │ ├── migrations │ │ │ └── v7 │ │ │ │ ├── expected_keepers.go │ │ │ │ ├── genesis.go │ │ │ │ ├── genesis_test.go │ │ │ │ ├── solomachine.go │ │ │ │ ├── solomachine.pb.go │ │ │ │ ├── store.go │ │ │ │ └── store_test.go │ │ ├── module.go │ │ ├── simulation │ │ │ ├── decoder.go │ │ │ ├── decoder_test.go │ │ │ └── genesis.go │ │ ├── types │ │ │ ├── client.go │ │ │ ├── client.pb.go │ │ │ ├── client_test.go │ │ │ ├── codec.go │ │ │ ├── codec_test.go │ │ │ ├── encoding.go │ │ │ ├── encoding_test.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── expected_keepers.go │ │ │ ├── genesis.go │ │ │ ├── genesis.pb.go │ │ │ ├── genesis_test.go │ │ │ ├── height.go │ │ │ ├── height_test.go │ │ │ ├── keys.go │ │ │ ├── keys_test.go │ │ │ ├── legacy_proposal.go │ │ │ ├── legacy_proposal_test.go │ │ │ ├── legacy_upgrade_proposal.pb.go │ │ │ ├── msgs.go │ │ │ ├── msgs_test.go │ │ │ ├── params.go │ │ │ ├── params_legacy.go │ │ │ ├── params_test.go │ │ │ ├── query.go │ │ │ ├── query.pb.go │ │ │ ├── query.pb.gw.go │ │ │ ├── router.go │ │ │ ├── router_test.go │ │ │ ├── store.go │ │ │ └── tx.pb.go │ │ └── v2 │ │ │ ├── genesis.go │ │ │ ├── genesis_test.go │ │ │ ├── keeper │ │ │ ├── grpc_query.go │ │ │ ├── grpc_query_test.go │ │ │ ├── keeper.go │ │ │ └── keeper_test.go │ │ │ ├── module.go │ │ │ ├── module_test.go │ │ │ └── types │ │ │ ├── codec.go │ │ │ ├── config.go │ │ │ ├── config.pb.go │ │ │ ├── config_test.go │ │ │ ├── counterparty.go │ │ │ ├── counterparty.pb.go │ │ │ ├── errors.go │ │ │ ├── genesis.go │ │ │ ├── genesis.pb.go │ │ │ ├── genesis_test.go │ │ │ ├── keys.go │ │ │ ├── msgs.go │ │ │ ├── msgs_test.go │ │ │ ├── query.pb.go │ │ │ ├── query.pb.gw.go │ │ │ └── tx.pb.go │ ├── 03-connection │ │ ├── client │ │ │ ├── cli │ │ │ │ ├── cli.go │ │ │ │ └── query.go │ │ │ └── utils │ │ │ │ └── utils.go │ │ ├── doc.go │ │ ├── genesis.go │ │ ├── keeper │ │ │ ├── events.go │ │ │ ├── events_test.go │ │ │ ├── grpc_query.go │ │ │ ├── grpc_query_test.go │ │ │ ├── handshake.go │ │ │ ├── handshake_test.go │ │ │ ├── keeper.go │ │ │ ├── keeper_test.go │ │ │ ├── migrations.go │ │ │ ├── migrations_test.go │ │ │ ├── verify.go │ │ │ └── verify_test.go │ │ ├── migrations │ │ │ └── v7 │ │ │ │ ├── expected_keepers.go │ │ │ │ └── localhost.go │ │ ├── module.go │ │ ├── simulation │ │ │ ├── decoder.go │ │ │ ├── decoder_test.go │ │ │ └── genesis.go │ │ └── types │ │ │ ├── codec.go │ │ │ ├── codec_test.go │ │ │ ├── connection.go │ │ │ ├── connection.pb.go │ │ │ ├── connection_test.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── expected_keepers.go │ │ │ ├── genesis.go │ │ │ ├── genesis.pb.go │ │ │ ├── genesis_test.go │ │ │ ├── keys.go │ │ │ ├── keys_test.go │ │ │ ├── msgs.go │ │ │ ├── msgs_test.go │ │ │ ├── params.go │ │ │ ├── params_legacy.go │ │ │ ├── params_test.go │ │ │ ├── query.go │ │ │ ├── query.pb.go │ │ │ ├── query.pb.gw.go │ │ │ ├── tx.pb.go │ │ │ ├── version.go │ │ │ └── version_test.go │ ├── 04-channel │ │ ├── client │ │ │ ├── cli │ │ │ │ ├── cli.go │ │ │ │ └── query.go │ │ │ └── utils │ │ │ │ └── utils.go │ │ ├── doc.go │ │ ├── genesis.go │ │ ├── keeper │ │ │ ├── ante.go │ │ │ ├── ante_test.go │ │ │ ├── events.go │ │ │ ├── export_test.go │ │ │ ├── grpc_query.go │ │ │ ├── grpc_query_test.go │ │ │ ├── handshake.go │ │ │ ├── handshake_test.go │ │ │ ├── keeper.go │ │ │ ├── keeper_test.go │ │ │ ├── migrations.go │ │ │ ├── packet.go │ │ │ ├── packet_test.go │ │ │ ├── timeout.go │ │ │ └── timeout_test.go │ │ ├── migrations │ │ │ └── v10 │ │ │ │ ├── channel.pb.go │ │ │ │ ├── expected_keepers.go │ │ │ │ ├── store.go │ │ │ │ ├── store_test.go │ │ │ │ └── upgrade.pb.go │ │ ├── module.go │ │ ├── simulation │ │ │ ├── decoder.go │ │ │ ├── decoder_test.go │ │ │ └── genesis.go │ │ ├── types │ │ │ ├── acknowledgement.go │ │ │ ├── acknowledgement_test.go │ │ │ ├── channel.go │ │ │ ├── channel.pb.go │ │ │ ├── channel_test.go │ │ │ ├── codec.go │ │ │ ├── codec_test.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── expected_keepers.go │ │ │ ├── genesis.go │ │ │ ├── genesis.pb.go │ │ │ ├── genesis_test.go │ │ │ ├── keys.go │ │ │ ├── keys_test.go │ │ │ ├── msgs.go │ │ │ ├── msgs_test.go │ │ │ ├── packet.go │ │ │ ├── packet_test.go │ │ │ ├── query.go │ │ │ ├── query.pb.go │ │ │ ├── query.pb.gw.go │ │ │ ├── timeout.go │ │ │ ├── timeout_test.go │ │ │ └── tx.pb.go │ │ └── v2 │ │ │ ├── client │ │ │ └── cli │ │ │ │ ├── abci.go │ │ │ │ ├── cli.go │ │ │ │ └── query.go │ │ │ ├── genesis.go │ │ │ ├── genesis_test.go │ │ │ ├── keeper │ │ │ ├── events.go │ │ │ ├── export_test.go │ │ │ ├── grpc_query.go │ │ │ ├── grpc_query_test.go │ │ │ ├── keeper.go │ │ │ ├── keeper_test.go │ │ │ ├── msg_server.go │ │ │ ├── msg_server_test.go │ │ │ ├── packet.go │ │ │ └── packet_test.go │ │ │ ├── module.go │ │ │ ├── module_test.go │ │ │ └── types │ │ │ ├── acknowledgement.go │ │ │ ├── acknowledgement_test.go │ │ │ ├── codec.go │ │ │ ├── commitment.go │ │ │ ├── commitment_test.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── expected_keepers.go │ │ │ ├── genesis.go │ │ │ ├── genesis.pb.go │ │ │ ├── genesis_test.go │ │ │ ├── keys.go │ │ │ ├── merkle.go │ │ │ ├── merkle_test.go │ │ │ ├── msgs.go │ │ │ ├── msgs_test.go │ │ │ ├── packet.go │ │ │ ├── packet.pb.go │ │ │ ├── packet_test.go │ │ │ ├── query.go │ │ │ ├── query.pb.go │ │ │ ├── query.pb.gw.go │ │ │ └── tx.pb.go │ ├── 05-port │ │ ├── doc.go │ │ ├── keeper │ │ │ ├── keeper.go │ │ │ └── keeper_test.go │ │ ├── module.go │ │ └── types │ │ │ ├── errors.go │ │ │ ├── keys.go │ │ │ ├── module.go │ │ │ └── router.go │ ├── 23-commitment │ │ └── types │ │ │ ├── codec.go │ │ │ ├── codec_test.go │ │ │ ├── commitment.pb.go │ │ │ ├── commitment_test.go │ │ │ ├── errors.go │ │ │ ├── merkle.go │ │ │ ├── merkle_test.go │ │ │ ├── utils.go │ │ │ ├── utils_test.go │ │ │ └── v2 │ │ │ ├── commitment.pb.go │ │ │ ├── merkle.go │ │ │ └── merkle_test.go │ ├── 24-host │ │ ├── channel_keys.go │ │ ├── client_keys.go │ │ ├── connection_keys.go │ │ ├── doc.go │ │ ├── errors.go │ │ ├── packet_keys.go │ │ ├── parse.go │ │ ├── parse_test.go │ │ ├── port_keys.go │ │ ├── v2 │ │ │ ├── packet_key_test.go │ │ │ └── packet_keys.go │ │ ├── validate.go │ │ └── validate_test.go │ ├── ante │ │ ├── ante.go │ │ └── ante_test.go │ ├── api │ │ ├── api_test.go │ │ ├── module.go │ │ ├── router.go │ │ └── router_test.go │ ├── client │ │ ├── cli │ │ │ └── cli.go │ │ └── query.go │ ├── errors │ │ └── errors.go │ ├── exported │ │ ├── client.go │ │ ├── commitment.go │ │ ├── connection.go │ │ ├── module.go │ │ └── packet.go │ ├── genesis.go │ ├── genesis_test.go │ ├── internal │ │ ├── errors │ │ │ └── errors.go │ │ ├── telemetry │ │ │ ├── client.go │ │ │ └── packet.go │ │ └── v2 │ │ │ └── telemetry │ │ │ └── packet.go │ ├── keeper │ │ ├── events_test.go │ │ ├── expected_keeper.go │ │ ├── keeper.go │ │ ├── keeper_test.go │ │ ├── msg_server.go │ │ └── msg_server_test.go │ ├── metrics │ │ └── metrics.go │ ├── migrations │ │ └── v7 │ │ │ ├── genesis.go │ │ │ └── genesis_test.go │ ├── module.go │ ├── simulation │ │ ├── decoder.go │ │ ├── decoder_test.go │ │ ├── genesis.go │ │ ├── genesis_test.go │ │ ├── proposals.go │ │ └── proposals_test.go │ └── types │ │ ├── codec.go │ │ ├── events.go │ │ ├── expected_interfaces.go │ │ ├── genesis.go │ │ └── genesis.pb.go └── light-clients │ ├── 06-solomachine │ ├── client_state.go │ ├── client_state_test.go │ ├── codec.go │ ├── codec_test.go │ ├── consensus_state.go │ ├── consensus_state_test.go │ ├── doc.go │ ├── errors.go │ ├── header.go │ ├── header_test.go │ ├── keys.go │ ├── light_client_module.go │ ├── light_client_module_test.go │ ├── misbehaviour.go │ ├── misbehaviour_handle.go │ ├── misbehaviour_test.go │ ├── module.go │ ├── proof.go │ ├── proof_test.go │ ├── proposal_handle.go │ ├── solomachine.go │ ├── solomachine.pb.go │ ├── solomachine_test.go │ ├── store.go │ └── update.go │ ├── 07-tendermint │ ├── client_state.go │ ├── client_state_test.go │ ├── codec.go │ ├── codec_test.go │ ├── consensus_state.go │ ├── consensus_state_test.go │ ├── doc.go │ ├── errors.go │ ├── fraction.go │ ├── header.go │ ├── header_test.go │ ├── keys.go │ ├── light_client_module.go │ ├── light_client_module_test.go │ ├── migrations │ │ ├── expected_keepers.go │ │ ├── migrations.go │ │ └── migrations_test.go │ ├── misbehaviour.go │ ├── misbehaviour_handle.go │ ├── misbehaviour_handle_test.go │ ├── misbehaviour_test.go │ ├── module.go │ ├── proposal_handle.go │ ├── proposal_handle_test.go │ ├── store.go │ ├── store_test.go │ ├── tendermint.pb.go │ ├── tendermint_test.go │ ├── update.go │ ├── update_test.go │ ├── upgrade.go │ └── upgrade_test.go │ ├── 08-wasm │ ├── CHANGELOG.md │ ├── Dockerfile │ ├── README.md │ ├── blsverifier │ │ ├── crypto.go │ │ └── handler.go │ ├── client │ │ └── cli │ │ │ ├── cli.go │ │ │ ├── query.go │ │ │ └── tx.go │ ├── doc.go │ ├── go.mod │ ├── go.sum │ ├── internal │ │ └── types │ │ │ ├── store.go │ │ │ └── store_test.go │ ├── keeper │ │ ├── contract_keeper.go │ │ ├── contract_keeper_test.go │ │ ├── events.go │ │ ├── export_test.go │ │ ├── genesis.go │ │ ├── genesis_test.go │ │ ├── grpc_query.go │ │ ├── grpc_query_test.go │ │ ├── keeper.go │ │ ├── keeper_no_vm.go │ │ ├── keeper_test.go │ │ ├── keeper_vm.go │ │ ├── migrations.go │ │ ├── migrations_test.go │ │ ├── msg_server.go │ │ ├── msg_server_test.go │ │ ├── options.go │ │ ├── options_test.go │ │ ├── querier.go │ │ ├── querier_test.go │ │ ├── snapshotter.go │ │ └── snapshotter_test.go │ ├── light_client_module.go │ ├── light_client_module_test.go │ ├── module.go │ ├── simulation │ │ ├── proposals.go │ │ └── proposals_test.go │ ├── testing │ │ ├── mock_engine.go │ │ ├── simapp │ │ │ ├── README.md │ │ │ ├── ante_handler.go │ │ │ ├── app.go │ │ │ ├── encoding.go │ │ │ ├── export.go │ │ │ ├── genesis.go │ │ │ ├── genesis_account.go │ │ │ ├── params │ │ │ │ ├── amino.go │ │ │ │ ├── doc.go │ │ │ │ ├── encoding.go │ │ │ │ └── proto.go │ │ │ ├── simd │ │ │ │ ├── cmd │ │ │ │ │ └── root.go │ │ │ │ └── main.go │ │ │ ├── test_helpers.go │ │ │ └── upgrades.go │ │ ├── values.go │ │ └── wasm_endpoint.go │ ├── types │ │ ├── client_message.go │ │ ├── client_message_test.go │ │ ├── client_state.go │ │ ├── client_state_test.go │ │ ├── codec.go │ │ ├── codec_test.go │ │ ├── config.go │ │ ├── consensus_state.go │ │ ├── consensus_state_test.go │ │ ├── contract_api.go │ │ ├── errors.go │ │ ├── events.go │ │ ├── expected_interfaces.go │ │ ├── expected_keepers.go │ │ ├── gas_register.go │ │ ├── gas_register_custom.go │ │ ├── genesis.go │ │ ├── genesis.pb.go │ │ ├── genesis_test.go │ │ ├── keys.go │ │ ├── msgs.go │ │ ├── msgs_test.go │ │ ├── query.pb.go │ │ ├── query.pb.gw.go │ │ ├── store.go │ │ ├── tx.pb.go │ │ ├── types_test.go │ │ ├── utils.go │ │ ├── validation.go │ │ ├── validation_test.go │ │ ├── wasm.pb.go │ │ └── wasm_vm.go │ └── wasm_test.go │ └── 09-localhost │ ├── doc.go │ ├── light_client_module.go │ └── light_client_module_test.go ├── package-lock.json ├── proto ├── buf.gen.gogo.yaml ├── buf.gen.swagger.yaml ├── buf.lock ├── buf.yaml └── ibc │ ├── applications │ ├── interchain_accounts │ │ ├── controller │ │ │ └── v1 │ │ │ │ ├── controller.proto │ │ │ │ ├── query.proto │ │ │ │ └── tx.proto │ │ ├── genesis │ │ │ └── v1 │ │ │ │ └── genesis.proto │ │ ├── host │ │ │ └── v1 │ │ │ │ ├── host.proto │ │ │ │ ├── query.proto │ │ │ │ └── tx.proto │ │ └── v1 │ │ │ ├── account.proto │ │ │ ├── metadata.proto │ │ │ └── packet.proto │ ├── packet_forward_middleware │ │ └── v1 │ │ │ └── genesis.proto │ └── transfer │ │ └── v1 │ │ ├── authz.proto │ │ ├── denomtrace.proto │ │ ├── genesis.proto │ │ ├── packet.proto │ │ ├── query.proto │ │ ├── token.proto │ │ ├── transfer.proto │ │ └── tx.proto │ ├── core │ ├── channel │ │ ├── v1 │ │ │ ├── channel.proto │ │ │ ├── genesis.proto │ │ │ ├── query.proto │ │ │ └── tx.proto │ │ └── v2 │ │ │ ├── genesis.proto │ │ │ ├── packet.proto │ │ │ ├── query.proto │ │ │ └── tx.proto │ ├── client │ │ ├── v1 │ │ │ ├── client.proto │ │ │ ├── genesis.proto │ │ │ ├── query.proto │ │ │ └── tx.proto │ │ └── v2 │ │ │ ├── config.proto │ │ │ ├── counterparty.proto │ │ │ ├── genesis.proto │ │ │ ├── query.proto │ │ │ └── tx.proto │ ├── commitment │ │ ├── v1 │ │ │ └── commitment.proto │ │ └── v2 │ │ │ └── commitment.proto │ ├── connection │ │ └── v1 │ │ │ ├── connection.proto │ │ │ ├── genesis.proto │ │ │ ├── query.proto │ │ │ └── tx.proto │ └── types │ │ └── v1 │ │ └── genesis.proto │ └── lightclients │ ├── solomachine │ ├── v2 │ │ └── solomachine.proto │ └── v3 │ │ └── solomachine.proto │ ├── tendermint │ └── v1 │ │ └── tendermint.proto │ └── wasm │ └── v1 │ ├── genesis.proto │ ├── query.proto │ ├── tx.proto │ └── wasm.proto ├── releases-decision-tree.png ├── requirements.txt ├── scripts ├── README.md ├── build-wasm-simapp-docker.sh ├── compatibility.md ├── generate-compatibility-json.py ├── get-libwasm-version.py ├── go-lint-all.sh ├── go-mod-tidy-all.sh ├── go-test-all.py ├── init-simapp.sh ├── linkify_changelog.py ├── protoc-swagger-gen.sh └── protocgen.sh ├── simapp ├── README.md ├── ante.go ├── app.go ├── export.go ├── genesis.go ├── go.mod ├── go.sum ├── params │ ├── doc.go │ ├── encoding.go │ ├── params.go │ └── weights.go ├── simd │ ├── cmd │ │ ├── cmd_test.go │ │ └── root.go │ └── main.go ├── upgrades.go └── upgrades │ └── upgrades.go └── testing ├── README.md ├── chain.go ├── chain_test.go ├── config.go ├── coordinator.go ├── endpoint.go ├── endpoint_v2.go ├── events.go ├── events_test.go ├── mock ├── README.md ├── ack.go ├── doc.go ├── events.go ├── ibc_app.go ├── ibc_module.go ├── middleware.go ├── mock.go └── v2 │ ├── ibc_app.go │ ├── ibc_module.go │ └── mock.go ├── path.go ├── simapp ├── README.md ├── ante.go ├── app.go ├── genesis.go └── test_helpers.go ├── solomachine.go ├── testing_app.go ├── utils.go └── values.go /.github/.codespellignore: -------------------------------------------------------------------------------- 1 | clientA 2 | connectionA 3 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # CODEOWNERS: https://help.github.com/articles/about-codeowners/ 2 | 3 | * @AdityaSripal @gjermundgaraba @srdtrk @DeshErBojhaa 4 | /docs/ @womensrights 5 | 6 | # Our appreciation and gratitude to past code owners: @fedekunze @seantking @tmsdkeys @charleenfei @crodriguezvega @colin-axner @chatton @bznein @DimitrisJim @damiannolan 7 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | open-pull-requests-limit: 10 8 | 9 | - package-ecosystem: gomod 10 | directories: 11 | - "/" 12 | - "/modules/light-clients/08-wasm" 13 | - "/e2e" 14 | - "/simapp" 15 | schedule: 16 | interval: daily 17 | labels: 18 | - dependencies 19 | -------------------------------------------------------------------------------- /.github/workflows/docs-check.yml: -------------------------------------------------------------------------------- 1 | name: Check docs build 2 | on: 3 | merge_group: 4 | pull_request: 5 | branches: 6 | - main 7 | paths: 8 | - 'docs/**' 9 | - '.github/workflows/check-docs.yml' 10 | 11 | jobs: 12 | build: 13 | runs-on: depot-ubuntu-22.04-4 14 | steps: 15 | - uses: actions/checkout@v4 16 | - uses: actions/setup-node@v4 17 | with: 18 | node-version: 22 19 | cache: npm 20 | cache-dependency-path: docs/package-lock.json 21 | 22 | - name: Install dependencies 23 | run: cd docs && npm ci 24 | - name: Test build website 25 | run: cd docs && npm run build 26 | 27 | lint: 28 | runs-on: depot-ubuntu-22.04-4 29 | steps: 30 | - uses: actions/checkout@v4 31 | with: 32 | fetch-depth: 0 33 | - uses: DavidAnson/markdownlint-cli2-action@v20 34 | with: 35 | globs: ./docs/docs/**/*.md 36 | 37 | -------------------------------------------------------------------------------- /.github/workflows/docs-deploy.yml: -------------------------------------------------------------------------------- 1 | # This deploy-docs workflow was created based on instructions from: 2 | # https://docusaurus.io/docs/deployment 3 | name: Deploy to GitHub Pages 4 | 5 | on: 6 | workflow_dispatch: 7 | push: 8 | branches: 9 | - main 10 | paths: 11 | - "docs/**" 12 | - .github/workflows/deploy-docs.yml 13 | 14 | jobs: 15 | deploy: 16 | name: Deploy to GitHub Pages 17 | runs-on: depot-ubuntu-22.04-4 18 | steps: 19 | - uses: actions/checkout@v4 20 | - uses: actions/setup-node@v4 21 | with: 22 | node-version: 22 23 | cache: npm 24 | cache-dependency-path: docs/package-lock.json 25 | 26 | - name: Build website 27 | run: make build-docs 28 | 29 | - name: Deploy 🚀 30 | uses: JamesIves/github-pages-deploy-action@v4.7.3 31 | with: 32 | branch: gh-pages 33 | folder: docs/build 34 | single-commit: true 35 | -------------------------------------------------------------------------------- /.github/workflows/golangci.yml: -------------------------------------------------------------------------------- 1 | name: golangci-lint 2 | on: 3 | push: 4 | pull_request: 5 | permissions: 6 | contents: read 7 | # Optional: allow read access to pull request. Use with `only-new-issues` option. 8 | pull-requests: read 9 | 10 | jobs: 11 | golangci: 12 | name: lint 13 | runs-on: depot-ubuntu-22.04-4 14 | strategy: 15 | matrix: 16 | working-directory: ['.', 'modules/light-clients/08-wasm', 'e2e'] 17 | steps: 18 | - uses: actions/setup-go@v5 19 | with: 20 | go-version: '1.24' 21 | - uses: actions/checkout@v4 22 | with: 23 | fetch-depth: 0 24 | 25 | - name: golangci-lint 26 | uses: golangci/golangci-lint-action@v8.0.0 27 | with: 28 | version: v2.1 29 | only-new-issues: true 30 | args: --timeout 10m 31 | working-directory: ${{ matrix.working-directory }} 32 | -------------------------------------------------------------------------------- /.github/workflows/proto-breaking-check.yml: -------------------------------------------------------------------------------- 1 | name: proto breaking check 2 | # proto breaking check workflow checks if Protobuf file contains breaking changes. 3 | # This workflow runs when a PR that targets Protobuf is opened. 4 | on: 5 | merge_group: 6 | pull_request: 7 | paths: 8 | - "proto/**/*.proto" 9 | 10 | jobs: 11 | proto-breaking-check: 12 | runs-on: depot-ubuntu-22.04-4 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Run proto-breaking check 16 | run: make proto-check-breaking -------------------------------------------------------------------------------- /.github/workflows/proto-registry.yml: -------------------------------------------------------------------------------- 1 | name: Buf-Push 2 | # Protobuf runs buf (https://buf.build/) push updated proto files to https://buf.build/cosmos/ibc 3 | # This workflow is only run when a .proto file has been changed 4 | on: 5 | workflow_dispatch: 6 | push: 7 | branches: 8 | - main 9 | paths: 10 | - "proto/**" 11 | tags: 12 | - 'v*.*.*' 13 | 14 | jobs: 15 | push: 16 | runs-on: depot-ubuntu-22.04-4 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: bufbuild/buf-action@v1 20 | with: 21 | token: ${{ secrets.BUF_TOKEN }} 22 | setup_only: false 23 | github_token: ${{ secrets.GITHUB_TOKEN }} 24 | input: "proto" 25 | push: true 26 | lint: false 27 | format: false 28 | breaking: false 29 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.24-alpine AS builder 2 | ARG IBC_GO_VERSION 3 | 4 | RUN set -eux; apk add --no-cache gcc git libusb-dev linux-headers make musl-dev; 5 | 6 | ENV GOPATH="" 7 | 8 | # ensure the ibc go version is being specified for this image. 9 | RUN test -n "${IBC_GO_VERSION}" 10 | 11 | # Copy relevant files before go mod download. Replace directives to local paths break if local 12 | # files are not copied before go mod download. 13 | ADD internal internal 14 | ADD simapp simapp 15 | ADD testing testing 16 | ADD modules modules 17 | ADD LICENSE LICENSE 18 | 19 | COPY contrib/devtools/Makefile contrib/devtools/Makefile 20 | COPY Makefile . 21 | 22 | COPY go.mod . 23 | COPY go.sum . 24 | 25 | RUN go mod download 26 | 27 | RUN make build 28 | 29 | FROM alpine:3.21 30 | ARG IBC_GO_VERSION 31 | 32 | LABEL "org.cosmos.ibc-go"="${IBC_GO_VERSION}" 33 | 34 | COPY --from=builder /go/build/simd /bin/simd 35 | 36 | ENTRYPOINT ["simd"] 37 | -------------------------------------------------------------------------------- /buf.work.yaml: -------------------------------------------------------------------------------- 1 | # Generated by "buf config migrate-v1beta1". Edit as necessary, and 2 | # remove this comment when you're finished. 3 | # 4 | # This workspace file points to the roots found in your 5 | # previous "buf.yaml" configuration. 6 | version: v1 7 | directories: 8 | - proto 9 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | precision: 2 3 | range: 4 | - 70.0 5 | - 100.0 6 | round: down 7 | status: 8 | project: 9 | default: 10 | target: auto 11 | threshold: 0% 12 | base: auto 13 | comment: 14 | require_changes: "coverage_drop OR uncovered_patch" # Only comment when coverage drops or there is uncovered code in the commit 15 | ignore: 16 | - "**/*.pb.go" 17 | - "**/*.pb.gw.go" 18 | - "docs" 19 | - "simapp" 20 | - "testing" 21 | - "modules/light-clients/08-wasm/testing" 22 | - "scripts" 23 | - "contrib" 24 | - "cmd" 25 | -------------------------------------------------------------------------------- /contrib/test_cover.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | PKGS=$(go list ./... | grep -v '/simapp') 5 | 6 | set -e 7 | echo "mode: atomic" > coverage.txt 8 | for pkg in ${PKGS[@]}; do 9 | go test -v -timeout 30m -race -coverprofile=profile.out -covermode=atomic -tags='ledger test_ledger_mock' "$pkg" 10 | if [ -f profile.out ]; then 11 | tail -n +2 profile.out >> coverage.txt; 12 | rm profile.out 13 | fi 14 | done 15 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | -------------------------------------------------------------------------------- /docs/.markdownlint-cli2.jsonc: -------------------------------------------------------------------------------- 1 | // This file is used by markdownlint-cli2 to configure the linting process 2 | // in conjunction with .markdownlint.jsonc. 3 | { 4 | "ignores": [ 5 | "node_modules/**" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /docs/audits/04-channel-upgrades/Atredis Partners - Interchain Foundation IBC-Go Channel Upgrade Feature Assessment - Report v1.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/audits/04-channel-upgrades/Atredis Partners - Interchain Foundation IBC-Go Channel Upgrade Feature Assessment - Report v1.1.pdf -------------------------------------------------------------------------------- /docs/audits/08-wasm/Ethan Frey - Wasm Client Review.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/audits/08-wasm/Ethan Frey - Wasm Client Review.pdf -------------------------------------------------------------------------------- /docs/audits/08-wasm/Halborn audit report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/audits/08-wasm/Halborn audit report.pdf -------------------------------------------------------------------------------- /docs/audits/20-token-transfer/Atredis Partners - Interchain ICS20 v2 New Features Assessment - Report v1.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/audits/20-token-transfer/Atredis Partners - Interchain ICS20 v2 New Features Assessment - Report v1.0.pdf -------------------------------------------------------------------------------- /docs/audits/27-interchain-accounts/Trail of Bits audit - Final Report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/audits/27-interchain-accounts/Trail of Bits audit - Final Report.pdf -------------------------------------------------------------------------------- /docs/audits/IBC-v2/IBC-v2-April-2025-Collaborative-Audit-Report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/audits/IBC-v2/IBC-v2-April-2025-Collaborative-Audit-Report.pdf -------------------------------------------------------------------------------- /docs/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 3 | }; 4 | -------------------------------------------------------------------------------- /docs/docs/01-ibc/03-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Applications", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/01-ibc/03-apps/images/packet_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/docs/01-ibc/03-apps/images/packet_flow.png -------------------------------------------------------------------------------- /docs/docs/01-ibc/03-apps/images/packet_flow_v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/docs/01-ibc/03-apps/images/packet_flow_v2.png -------------------------------------------------------------------------------- /docs/docs/01-ibc/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Middleware", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/01-ibc/04-middleware/images/middleware-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/docs/01-ibc/04-middleware/images/middleware-stack.png -------------------------------------------------------------------------------- /docs/docs/01-ibc/05-upgrades/02-developer-guide.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IBC Client Developer Guide to Upgrades 3 | sidebar_label: IBC Client Developer Guide to Upgrades 4 | sidebar_position: 2 5 | slug: /ibc/upgrades/developer-guide 6 | --- 7 | 8 | # IBC Client Developer Guide to Upgrades 9 | 10 | :::note Synopsis 11 | Learn how to implement upgrade functionality for your custom IBC client. 12 | ::: 13 | 14 | Please see the section [Handling upgrades](../../03-light-clients/01-developer-guide/06-upgrades.md) from the light client developer guide for more information. 15 | -------------------------------------------------------------------------------- /docs/docs/01-ibc/05-upgrades/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Upgrades", 3 | "position": 5, 4 | "link": { "type": "doc", "id": "intro" } 5 | } 6 | -------------------------------------------------------------------------------- /docs/docs/01-ibc/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Using IBC-Go", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/02-apps/01-transfer/02-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 2 5 | slug: /apps/transfer/ics20-v1/state 6 | --- 7 | 8 | # State 9 | 10 | The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information. 11 | 12 | - `PortKey`: `0x01 -> ProtocolBuffer(string)` 13 | - `DenomTraceKey`: `0x02 | []bytes(traceHash) -> ProtocolBuffer(Denom)` 14 | - `DenomKey` : `0x03 | []bytes(traceHash) -> ProtocolBuffer(Denom)` 15 | -------------------------------------------------------------------------------- /docs/docs/02-apps/01-transfer/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Token Transfer", 3 | "position": 1, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/docs/02-apps/01-transfer/images/forwarding-3-chains-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/docs/02-apps/01-transfer/images/forwarding-3-chains-dark.png -------------------------------------------------------------------------------- /docs/docs/02-apps/01-transfer/images/forwarding-3-chains-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/docs/02-apps/01-transfer/images/forwarding-3-chains-light.png -------------------------------------------------------------------------------- /docs/docs/02-apps/02-interchain-accounts/10-legacy/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Legacy", 3 | "position": 10, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/docs/02-apps/02-interchain-accounts/10-legacy/images/ica-pre-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/docs/02-apps/02-interchain-accounts/10-legacy/images/ica-pre-v6.png -------------------------------------------------------------------------------- /docs/docs/02-apps/02-interchain-accounts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Interchain Accounts", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/02-apps/02-interchain-accounts/images/ica-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/docs/02-apps/02-interchain-accounts/images/ica-v6.png -------------------------------------------------------------------------------- /docs/docs/02-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Application Modules", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/03-light-clients/01-developer-guide/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Developer Guide", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/03-light-clients/02-localhost/02-integration.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Integration 3 | sidebar_label: Integration 4 | sidebar_position: 2 5 | slug: /ibc/light-clients/localhost/integration 6 | --- 7 | 8 | 9 | # Integration 10 | 11 | The 09-localhost light client module registers codec types within the core IBC module. This differs from other light client module implementations which are expected to register codec types using the `AppModuleBasic` interface. 12 | 13 | The localhost client is implicitly enabled by using the `AllowAllClients` wildcard (`"*"`) in the 02-client submodule default value for param [`allowed_clients`](https://github.com/cosmos/ibc-go/blob/v7.0.0/proto/ibc/core/client/v1/client.proto#L102). 14 | 15 | ```go 16 | // DefaultAllowedClients are the default clients for the AllowedClients parameter. 17 | // By default it allows all client types. 18 | var DefaultAllowedClients = []string{AllowAllClients} 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/docs/03-light-clients/02-localhost/03-client-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ClientState 3 | sidebar_label: ClientState 4 | sidebar_position: 3 5 | slug: /ibc/light-clients/localhost/client-state 6 | --- 7 | 8 | # `ClientState` 9 | 10 | The 09-localhost client is stateless and has no types. 11 | -------------------------------------------------------------------------------- /docs/docs/03-light-clients/02-localhost/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Localhost", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/03-light-clients/03-solomachine/03-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 3 5 | slug: /ibc/light-clients/solomachine/state 6 | --- 7 | 8 | 9 | # State 10 | 11 | The solo machine light client will only store consensus states for each update by a header 12 | or a governance proposal. The latest client state is also maintained in the store. 13 | -------------------------------------------------------------------------------- /docs/docs/03-light-clients/03-solomachine/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Solomachine", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/03-light-clients/04-wasm/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Wasm", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/03-light-clients/05-tendermint/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Tendermint", 3 | "position": 5, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/docs/03-light-clients/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Light Clients", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/04-middleware/01-callbacks/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Callbacks Middleware", 3 | "position": 2, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/docs/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Middleware Modules", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/05-migrations/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Migrations", 3 | "position": 5, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/docs/05-migrations/images/auth-module-decision-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/docs/05-migrations/images/auth-module-decision-tree.png -------------------------------------------------------------------------------- /docs/docs/05-migrations/migration.template.md: -------------------------------------------------------------------------------- 1 | # Migrating from \ to \ 2 | 3 | This guide provides instructions for migrating to a new version of ibc-go. 4 | 5 | There are four sections based on the four potential user groups of this document: 6 | 7 | - [Chains](#chains) 8 | - [IBC Apps](#ibc-apps) 9 | - [Relayers](#relayers) 10 | - [IBC Light Clients](#ibc-light-clients) 11 | 12 | **Note:** ibc-go supports golang semantic versioning and therefore all imports must be updated on major version releases. 13 | 14 | ## Chains 15 | 16 | - No relevant changes were made in this release. 17 | 18 | ## IBC Apps 19 | 20 | - No relevant changes were made in this release. 21 | 22 | ## Relayers 23 | 24 | - No relevant changes were made in this release. 25 | 26 | ## IBC Light Clients 27 | 28 | - No relevant changes were made in this release. 29 | -------------------------------------------------------------------------------- /docs/src/css/base.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copied from https://github.com/ignite/cli/blob/develop/docs/src/css/base.css 3 | */ 4 | 5 | @layer base { 6 | html { 7 | @apply font-inter; 8 | font-feature-settings: 'kern', 'liga', 'calt', 'zero' 0; 9 | -webkit-font-feature-settings: 'kern', 'liga', 'calt', 'zero' 0; 10 | text-size-adjust: 100%; 11 | -moz-osx-font-smoothing: grayscale; 12 | font-smoothing: antialiased; 13 | font-variant-ligatures: contextual common-ligatures; 14 | font-kerning: normal; 15 | text-rendering: optimizeLegibility; 16 | 17 | @supports (font-variation-settings: normal) { 18 | @apply font-intervar 19 | } 20 | } 21 | 22 | *, 23 | *::before, 24 | *::after { 25 | box-sizing: border-box; 26 | margin: 0; 27 | } 28 | 29 | svg { display: inline; } 30 | 31 | ::selection{} 32 | } -------------------------------------------------------------------------------- /docs/src/theme/CodeBlock/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import CodeBlock from '@theme-original/CodeBlock'; 3 | 4 | export default function CodeBlockWrapper(props) { 5 | const { source, ...codeBlockProps } = props; 6 | return ( 7 | <> 8 | 9 | {source && 10 |
11 | View Source 12 |
13 | } 14 | 15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /docs/static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/.nojekyll -------------------------------------------------------------------------------- /docs/static/CNAME: -------------------------------------------------------------------------------- 1 | ibc.cosmos.network 2 | -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Black.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Black.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-BlackItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-BlackItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-BlackItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-BlackItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Bold.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Bold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-BoldItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-BoldItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ExtraBold.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ExtraBold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ExtraBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ExtraBoldItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ExtraBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ExtraBoldItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ExtraLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ExtraLight.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ExtraLight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ExtraLight.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ExtraLightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ExtraLightItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ExtraLightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ExtraLightItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Italic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Italic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Light.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Light.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-LightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-LightItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-LightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-LightItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Medium.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Medium.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-MediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-MediumItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-MediumItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-MediumItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-SemiBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-SemiBold.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-SemiBold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-SemiBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-SemiBoldItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-SemiBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-SemiBoldItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Thin.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-Thin.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ThinItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ThinItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-ThinItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-ThinItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-italic.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-italic.var.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/inter/Inter-roman.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/inter/Inter-roman.var.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/intervar/Inter.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/intervar/Inter.var.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-Bold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-BoldItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraBold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraBoldItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraLight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraLight.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraLightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraLightItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-Italic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-Light.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-LightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-LightItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-Medium.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-MediumItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-MediumItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-SemiBold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-SemiBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-SemiBoldItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-Thin.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/jetbrainsmono/JetBrainsMono-ThinItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/fonts/jetbrainsmono/JetBrainsMono-ThinItalic.woff2 -------------------------------------------------------------------------------- /docs/static/img/ibc-go-docs-social-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/static/img/ibc-go-docs-social-card.png -------------------------------------------------------------------------------- /docs/static/img/ico-chevron.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/static/img/icons/hi-info-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/static/img/icons/hi-note-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/static/img/icons/hi-reading-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/static/img/icons/hi-tip-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/01-ibc/03-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Applications", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/01-ibc/03-apps/images/packet_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v10.1.x/01-ibc/03-apps/images/packet_flow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/01-ibc/03-apps/images/packet_flow_v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v10.1.x/01-ibc/03-apps/images/packet_flow_v2.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/01-ibc/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Middleware", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/01-ibc/04-middleware/images/middleware-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v10.1.x/01-ibc/04-middleware/images/middleware-stack.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/01-ibc/05-upgrades/02-developer-guide.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IBC Client Developer Guide to Upgrades 3 | sidebar_label: IBC Client Developer Guide to Upgrades 4 | sidebar_position: 2 5 | slug: /ibc/upgrades/developer-guide 6 | --- 7 | 8 | # IBC Client Developer Guide to Upgrades 9 | 10 | :::note Synopsis 11 | Learn how to implement upgrade functionality for your custom IBC client. 12 | ::: 13 | 14 | Please see the section [Handling upgrades](../../03-light-clients/01-developer-guide/06-upgrades.md) from the light client developer guide for more information. 15 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/01-ibc/05-upgrades/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Upgrades", 3 | "position": 5, 4 | "link": { "type": "doc", "id": "intro" } 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/01-ibc/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Using IBC-Go", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/01-transfer/02-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 2 5 | slug: /apps/transfer/ics20-v1/state 6 | --- 7 | 8 | # State 9 | 10 | The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information. 11 | 12 | - `PortKey`: `0x01 -> ProtocolBuffer(string)` 13 | - `DenomTraceKey`: `0x02 | []bytes(traceHash) -> ProtocolBuffer(Denom)` 14 | - `DenomKey` : `0x03 | []bytes(traceHash) -> ProtocolBuffer(Denom)` 15 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/01-transfer/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Token Transfer", 3 | "position": 1, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/01-transfer/images/forwarding-3-chains-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v10.1.x/02-apps/01-transfer/images/forwarding-3-chains-dark.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/01-transfer/images/forwarding-3-chains-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v10.1.x/02-apps/01-transfer/images/forwarding-3-chains-light.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/02-interchain-accounts/10-legacy/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Legacy", 3 | "position": 10, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/02-interchain-accounts/10-legacy/images/ica-pre-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v10.1.x/02-apps/02-interchain-accounts/10-legacy/images/ica-pre-v6.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/02-interchain-accounts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Interchain Accounts", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/02-interchain-accounts/images/ica-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v10.1.x/02-apps/02-interchain-accounts/images/ica-v6.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/02-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Application Modules", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/01-developer-guide/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Developer Guide", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/02-localhost/02-integration.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Integration 3 | sidebar_label: Integration 4 | sidebar_position: 2 5 | slug: /ibc/light-clients/localhost/integration 6 | --- 7 | 8 | 9 | # Integration 10 | 11 | The 09-localhost light client module registers codec types within the core IBC module. This differs from other light client module implementations which are expected to register codec types using the `AppModuleBasic` interface. 12 | 13 | The localhost client is implicitly enabled by using the `AllowAllClients` wildcard (`"*"`) in the 02-client submodule default value for param [`allowed_clients`](https://github.com/cosmos/ibc-go/blob/v7.0.0/proto/ibc/core/client/v1/client.proto#L102). 14 | 15 | ```go 16 | // DefaultAllowedClients are the default clients for the AllowedClients parameter. 17 | // By default it allows all client types. 18 | var DefaultAllowedClients = []string{AllowAllClients} 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/02-localhost/03-client-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ClientState 3 | sidebar_label: ClientState 4 | sidebar_position: 3 5 | slug: /ibc/light-clients/localhost/client-state 6 | --- 7 | 8 | # `ClientState` 9 | 10 | The 09-localhost client is stateless and has no types. 11 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/02-localhost/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Localhost", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/03-solomachine/03-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 3 5 | slug: /ibc/light-clients/solomachine/state 6 | --- 7 | 8 | 9 | # State 10 | 11 | The solo machine light client will only store consensus states for each update by a header 12 | or a governance proposal. The latest client state is also maintained in the store. 13 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/03-solomachine/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Solomachine", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/04-wasm/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Wasm", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/05-tendermint/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Tendermint", 3 | "position": 5, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/03-light-clients/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Light Clients", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/04-middleware/01-callbacks/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Callbacks Middleware", 3 | "position": 2, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Middleware Modules", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/05-migrations/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Migrations", 3 | "position": 5, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/05-migrations/images/auth-module-decision-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v10.1.x/05-migrations/images/auth-module-decision-tree.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v10.1.x/05-migrations/migration.template.md: -------------------------------------------------------------------------------- 1 | # Migrating from \ to \ 2 | 3 | This guide provides instructions for migrating to a new version of ibc-go. 4 | 5 | There are four sections based on the four potential user groups of this document: 6 | 7 | - [Chains](#chains) 8 | - [IBC Apps](#ibc-apps) 9 | - [Relayers](#relayers) 10 | - [IBC Light Clients](#ibc-light-clients) 11 | 12 | **Note:** ibc-go supports golang semantic versioning and therefore all imports must be updated on major version releases. 13 | 14 | ## Chains 15 | 16 | - No relevant changes were made in this release. 17 | 18 | ## IBC Apps 19 | 20 | - No relevant changes were made in this release. 21 | 22 | ## Relayers 23 | 24 | - No relevant changes were made in this release. 25 | 26 | ## IBC Light Clients 27 | 28 | - No relevant changes were made in this release. 29 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/01-ibc/03-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Applications", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/01-ibc/03-apps/images/packet_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v4.6.x/01-ibc/03-apps/images/packet_flow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/01-ibc/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Middleware", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/01-ibc/05-upgrades/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Upgrades", 3 | "position": 5, 4 | "link": { "type": "doc", "id": "intro" } 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/01-ibc/08-proto-docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Protobuf Documentation 3 | sidebar_label: Protobuf Documentation 4 | sidebar_position: 8 5 | slug: /ibc/proto-docs 6 | --- 7 | 8 | # Protobuf documentation 9 | 10 | See [ibc-go v4.4.x Buf Protobuf documentation](https://github.com/cosmos/ibc-go/blob/release/v4.4.x/docs/ibc/proto-docs.md). 11 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/01-ibc/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Using IBC-Go", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/02-apps/01-transfer/02-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 2 5 | slug: /apps/transfer/state 6 | --- 7 | 8 | # State 9 | 10 | The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information as outlined in [ADR 001](/architecture/adr-001-coin-source-tracing). 11 | 12 | - `Port`: `0x01 -> ProtocolBuffer(string)` 13 | - `DenomTrace`: `0x02 | []bytes(traceHash) -> ProtocolBuffer(DenomTrace)` 14 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/02-apps/01-transfer/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Transfer", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/02-apps/02-interchain-accounts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Interchain Accounts", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/02-apps/02-interchain-accounts/images/send-interchain-tx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v4.6.x/02-apps/02-interchain-accounts/images/send-interchain-tx.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/02-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Application Modules", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/03-middleware/01-ics29-fee/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Fee Middleware", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/03-middleware/01-ics29-fee/images/feeflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v4.6.x/03-middleware/01-ics29-fee/images/feeflow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/03-middleware/01-ics29-fee/images/msgpaypacket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v4.6.x/03-middleware/01-ics29-fee/images/msgpaypacket.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/03-middleware/01-ics29-fee/images/paypacketfeeasync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v4.6.x/03-middleware/01-ics29-fee/images/paypacketfeeasync.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/03-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Middleware Modules", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v4.6.x/04-migrations/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Migrations", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/01-ibc/03-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Applications", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/01-ibc/03-apps/images/packet_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v5.4.x/01-ibc/03-apps/images/packet_flow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/01-ibc/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Middleware", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/01-ibc/05-upgrades/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Upgrades", 3 | "position": 5, 4 | "link": { "type": "doc", "id": "intro" } 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/01-ibc/08-proto-docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Protobuf Documentation 3 | sidebar_label: Protobuf Documentation 4 | sidebar_position: 8 5 | slug: /ibc/proto-docs 6 | --- 7 | 8 | # Protobuf documentation 9 | 10 | See [ibc-go v5.3.x Buf Protobuf documentation](https://github.com/cosmos/ibc-go/blob/release/v5.3.x/docs/ibc/proto-docs.md). 11 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/01-ibc/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Using IBC-Go", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/02-apps/01-transfer/02-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 2 5 | slug: /apps/transfer/state 6 | --- 7 | 8 | # State 9 | 10 | The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information as outlined in [ADR 001](/architecture/adr-001-coin-source-tracing). 11 | 12 | - `Port`: `0x01 -> ProtocolBuffer(string)` 13 | - `DenomTrace`: `0x02 | []bytes(traceHash) -> ProtocolBuffer(DenomTrace)` 14 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/02-apps/01-transfer/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Transfer", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/02-apps/02-interchain-accounts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Interchain Accounts", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/02-apps/02-interchain-accounts/images/send-interchain-tx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v5.4.x/02-apps/02-interchain-accounts/images/send-interchain-tx.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/02-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Application Modules", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/03-middleware/01-ics29-fee/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Fee Middleware", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/03-middleware/01-ics29-fee/images/feeflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v5.4.x/03-middleware/01-ics29-fee/images/feeflow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/03-middleware/01-ics29-fee/images/msgpaypacket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v5.4.x/03-middleware/01-ics29-fee/images/msgpaypacket.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/03-middleware/01-ics29-fee/images/paypacketfeeasync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v5.4.x/03-middleware/01-ics29-fee/images/paypacketfeeasync.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/03-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Middleware Modules", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v5.4.x/04-migrations/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Migrations", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/01-ibc/03-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Applications", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/01-ibc/03-apps/images/packet_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v6.3.x/01-ibc/03-apps/images/packet_flow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/01-ibc/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Middleware", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/01-ibc/05-upgrades/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Upgrades", 3 | "position": 5, 4 | "link": { "type": "doc", "id": "intro" } 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/01-ibc/08-proto-docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Protobuf Documentation 3 | sidebar_label: Protobuf Documentation 4 | sidebar_position: 8 5 | slug: /ibc/proto-docs 6 | --- 7 | 8 | # Protobuf documentation 9 | 10 | See [ibc-go v6.2.x Buf Protobuf documentation](https://github.com/cosmos/ibc-go/blob/release/v6.2.x/docs/ibc/proto-docs.md). 11 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/01-ibc/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Using IBC-Go", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/02-apps/01-transfer/02-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 2 5 | slug: /apps/transfer/state 6 | --- 7 | 8 | # State 9 | 10 | The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information as outlined in [ADR 001](/architecture/adr-001-coin-source-tracing). 11 | 12 | - `Port`: `0x01 -> ProtocolBuffer(string)` 13 | - `DenomTrace`: `0x02 | []bytes(traceHash) -> ProtocolBuffer(DenomTrace)` 14 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/02-apps/01-transfer/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Transfer", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/02-apps/02-interchain-accounts/09-legacy/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Legacy", 3 | "position": 9, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/02-apps/02-interchain-accounts/09-legacy/images/ica-pre-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v6.3.x/02-apps/02-interchain-accounts/09-legacy/images/ica-pre-v6.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/02-apps/02-interchain-accounts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Interchain Accounts", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/02-apps/02-interchain-accounts/images/ica-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v6.3.x/02-apps/02-interchain-accounts/images/ica-v6.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/02-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Application Modules", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/03-middleware/01-ics29-fee/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Fee Middleware", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/03-middleware/01-ics29-fee/images/feeflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v6.3.x/03-middleware/01-ics29-fee/images/feeflow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/03-middleware/01-ics29-fee/images/msgpaypacket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v6.3.x/03-middleware/01-ics29-fee/images/msgpaypacket.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/03-middleware/01-ics29-fee/images/paypacketfeeasync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v6.3.x/03-middleware/01-ics29-fee/images/paypacketfeeasync.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/03-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Middleware Modules", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/04-migrations/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Migrations", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v6.3.x/04-migrations/images/auth-module-decision-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v6.3.x/04-migrations/images/auth-module-decision-tree.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/00-intro.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: / 3 | sidebar_position: 0 4 | --- 5 | 6 | # IBC-Go Documentation 7 | 8 | Welcome to the IBC-Go documentation! 9 | 10 | The Inter-Blockchain Communication protocol (IBC) is an end-to-end, connection-oriented, stateful protocol for reliable, ordered, and authenticated communication between heterogeneous blockchains arranged in an unknown and dynamic topology. 11 | 12 | IBC is a protocol that allows blockchains to talk to each other. 13 | 14 | The protocol realizes this interoperability by specifying a set of data structures, abstractions, and semantics that can be implemented by any distributed ledger that satisfies a small set of requirements. 15 | 16 | IBC can be used to build a wide range of cross-chain applications that include token transfers, atomic swaps, multi-chain smart contracts (with or without mutually comprehensible VMs), and data and code sharding of various kinds. 17 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/01-ibc/03-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Applications", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/01-ibc/03-apps/images/packet_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v7.8.x/01-ibc/03-apps/images/packet_flow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/01-ibc/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Middleware", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/01-ibc/05-upgrades/02-developer-guide.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IBC Client Developer Guide to Upgrades 3 | sidebar_label: IBC Client Developer Guide to Upgrades 4 | sidebar_position: 2 5 | slug: /ibc/upgrades/developer-guide 6 | --- 7 | 8 | 9 | # IBC Client Developer Guide to Upgrades 10 | 11 | :::note Synopsis 12 | Learn how to implement upgrade functionality for your custom IBC client. 13 | ::: 14 | 15 | Please see the section [Handling upgrades](../../03-light-clients/01-developer-guide/05-upgrades.md) from the light client developer guide for more information. 16 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/01-ibc/05-upgrades/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Upgrades", 3 | "position": 5, 4 | "link": { "type": "doc", "id": "intro" } 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/01-ibc/08-proto-docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Protobuf Documentation 3 | sidebar_label: Protobuf Documentation 4 | sidebar_position: 8 5 | slug: /ibc/proto-docs 6 | --- 7 | 8 | 9 | # Protobuf documentation 10 | 11 | See [ibc-go Buf Protobuf documentation](https://buf.build/cosmos/ibc/tags/main). 12 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/01-ibc/10-troubleshooting.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Troubleshooting 3 | sidebar_label: Troubleshooting 4 | sidebar_position: 10 5 | slug: /ibc/troubleshooting 6 | --- 7 | 8 | # Troubleshooting 9 | 10 | ## Unauthorized client states 11 | 12 | If it is being reported that a client state is unauthorized, this is due to the client type not being present 13 | in the [`AllowedClients`](https://github.com/cosmos/ibc-go/blob/v6.0.0/modules/core/02-client/types/client.pb.go#L345) array. 14 | 15 | Unless the client type is present in this array, all usage of clients of this type will be prevented. 16 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/01-ibc/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Using IBC-Go", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/02-apps/01-transfer/02-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 2 5 | slug: /apps/transfer/state 6 | --- 7 | 8 | # State 9 | 10 | The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information as outlined in [ADR 001](/architecture/adr-001-coin-source-tracing). 11 | 12 | - `Port`: `0x01 -> ProtocolBuffer(string)` 13 | - `DenomTrace`: `0x02 | []bytes(traceHash) -> ProtocolBuffer(DenomTrace)` 14 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/02-apps/01-transfer/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Transfer", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/02-apps/02-interchain-accounts/10-legacy/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Legacy", 3 | "position": 10, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/02-apps/02-interchain-accounts/10-legacy/images/ica-pre-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v7.8.x/02-apps/02-interchain-accounts/10-legacy/images/ica-pre-v6.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/02-apps/02-interchain-accounts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Interchain Accounts", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/02-apps/02-interchain-accounts/images/ica-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v7.8.x/02-apps/02-interchain-accounts/images/ica-v6.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/02-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Application Modules", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/03-light-clients/01-developer-guide/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Developer Guide", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/03-light-clients/02-solomachine/03-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 3 5 | slug: /ibc/light-clients/solomachine/state 6 | --- 7 | 8 | 9 | # State 10 | 11 | The solo machine light client will only store consensus states for each update by a header 12 | or a governance proposal. The latest client state is also maintained in the store. 13 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/03-light-clients/02-solomachine/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Solomachine", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/03-light-clients/03-localhost/02-integration.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Integration 3 | sidebar_label: Integration 4 | sidebar_position: 2 5 | slug: /ibc/light-clients/localhost/integration 6 | --- 7 | 8 | 9 | # Integration 10 | 11 | The 09-localhost light client module registers codec types within the core IBC module. This differs from other light client module implementations which are expected to register codec types using the `AppModuleBasic` interface. 12 | 13 | The localhost client is added to the 02-client submodule param [`allowed_clients`](https://github.com/cosmos/ibc-go/blob/v7.0.0-rc0/proto/ibc/core/client/v1/client.proto#L102) by default in ibc-go. 14 | 15 | ```go 16 | var ( 17 | // DefaultAllowedClients are the default clients for the AllowedClients parameter. 18 | DefaultAllowedClients = []string{exported.Solomachine, exported.Tendermint, exported.Localhost} 19 | ) 20 | ``` 21 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/03-light-clients/03-localhost/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Localhost", 3 | "position": 3, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/03-light-clients/04-wasm/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Wasm", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/03-light-clients/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Light Clients", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/04-middleware/01-ics29-fee/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Fee Middleware", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/04-middleware/01-ics29-fee/images/feeflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v7.8.x/04-middleware/01-ics29-fee/images/feeflow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/04-middleware/01-ics29-fee/images/msgpaypacket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v7.8.x/04-middleware/01-ics29-fee/images/msgpaypacket.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/04-middleware/01-ics29-fee/images/paypacketfeeasync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v7.8.x/04-middleware/01-ics29-fee/images/paypacketfeeasync.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/04-middleware/02-callbacks/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Callbacks Middleware", 3 | "position": 2, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Middleware Modules", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/05-migrations/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Migrations", 3 | "position": 5, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v7.8.x/05-migrations/images/auth-module-decision-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v7.8.x/05-migrations/images/auth-module-decision-tree.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/03-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Applications", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/03-apps/images/packet_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v8.5.x/01-ibc/03-apps/images/packet_flow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Middleware", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/04-middleware/images/middleware-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v8.5.x/01-ibc/04-middleware/images/middleware-stack.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/05-upgrades/02-developer-guide.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IBC Client Developer Guide to Upgrades 3 | sidebar_label: IBC Client Developer Guide to Upgrades 4 | sidebar_position: 2 5 | slug: /ibc/upgrades/developer-guide 6 | --- 7 | 8 | # IBC Client Developer Guide to Upgrades 9 | 10 | :::note Synopsis 11 | Learn how to implement upgrade functionality for your custom IBC client. 12 | ::: 13 | 14 | Please see the section [Handling upgrades](../../03-light-clients/01-developer-guide/05-upgrades.md) from the light client developer guide for more information. 15 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/05-upgrades/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Upgrades", 3 | "position": 5, 4 | "link": { "type": "doc", "id": "intro" } 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/09-proto-docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Protobuf Documentation 3 | sidebar_label: Protobuf Documentation 4 | sidebar_position: 9 5 | slug: /ibc/proto-docs 6 | --- 7 | 8 | 9 | # Protobuf documentation 10 | 11 | See [ibc-go Buf Protobuf documentation](https://buf.build/cosmos/ibc/docs/main). 12 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/11-troubleshooting.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Troubleshooting 3 | sidebar_label: Troubleshooting 4 | sidebar_position: 11 5 | slug: /ibc/troubleshooting 6 | --- 7 | 8 | # Troubleshooting 9 | 10 | ## Unauthorized client states 11 | 12 | If it is being reported that a client state is unauthorized, this is due to the client type not being present 13 | in the [`AllowedClients`](https://github.com/cosmos/ibc-go/blob/v6.0.0/modules/core/02-client/types/client.pb.go#L345) array. 14 | 15 | Unless the client type is present in this array or the `AllowAllClients` wildcard (`"*"`) is used, all usage of clients of this type will be prevented. 16 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/01-ibc/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Using IBC-Go", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/02-apps/01-transfer/02-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 2 5 | slug: /apps/transfer/state 6 | --- 7 | 8 | # State 9 | 10 | The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information as outlined in [ADR 001](/architecture/adr-001-coin-source-tracing). 11 | 12 | - `Port`: `0x01 -> ProtocolBuffer(string)` 13 | - `DenomTrace`: `0x02 | []bytes(traceHash) -> ProtocolBuffer(DenomTrace)` 14 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/02-apps/01-transfer/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Transfer", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/02-apps/02-interchain-accounts/10-legacy/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Legacy", 3 | "position": 10, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/02-apps/02-interchain-accounts/10-legacy/images/ica-pre-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v8.5.x/02-apps/02-interchain-accounts/10-legacy/images/ica-pre-v6.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/02-apps/02-interchain-accounts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Interchain Accounts", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/02-apps/02-interchain-accounts/images/ica-v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v8.5.x/02-apps/02-interchain-accounts/images/ica-v6.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/02-apps/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Application Modules", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/03-light-clients/01-developer-guide/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Developer Guide", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/03-light-clients/02-localhost/02-integration.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Integration 3 | sidebar_label: Integration 4 | sidebar_position: 2 5 | slug: /ibc/light-clients/localhost/integration 6 | --- 7 | 8 | 9 | # Integration 10 | 11 | The 09-localhost light client module registers codec types within the core IBC module. This differs from other light client module implementations which are expected to register codec types using the `AppModuleBasic` interface. 12 | 13 | The localhost client is implicitly enabled by using the `AllowAllClients` wildcard (`"*"`) in the 02-client submodule default value for param [`allowed_clients`](https://github.com/cosmos/ibc-go/blob/v7.0.0/proto/ibc/core/client/v1/client.proto#L102). 14 | 15 | ```go 16 | // DefaultAllowedClients are the default clients for the AllowedClients parameter. 17 | // By default it allows all client types. 18 | var DefaultAllowedClients = []string{AllowAllClients} 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/03-light-clients/02-localhost/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Localhost", 3 | "position": 2, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/03-light-clients/03-solomachine/03-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: State 3 | sidebar_label: State 4 | sidebar_position: 3 5 | slug: /ibc/light-clients/solomachine/state 6 | --- 7 | 8 | 9 | # State 10 | 11 | The solo machine light client will only store consensus states for each update by a header 12 | or a governance proposal. The latest client state is also maintained in the store. 13 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/03-light-clients/03-solomachine/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Solomachine", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/03-light-clients/04-wasm/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Wasm", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/03-light-clients/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Light Clients", 3 | "position": 3, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/04-middleware/01-ics29-fee/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Fee Middleware", 3 | "position": 1, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/04-middleware/01-ics29-fee/images/feeflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v8.5.x/04-middleware/01-ics29-fee/images/feeflow.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/04-middleware/01-ics29-fee/images/msgpaypacket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v8.5.x/04-middleware/01-ics29-fee/images/msgpaypacket.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/04-middleware/01-ics29-fee/images/paypacketfeeasync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v8.5.x/04-middleware/01-ics29-fee/images/paypacketfeeasync.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/04-middleware/02-callbacks/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Callbacks Middleware", 3 | "position": 2, 4 | "link": null 5 | } 6 | -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/04-middleware/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "IBC Middleware Modules", 3 | "position": 4, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/05-migrations/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Migrations", 3 | "position": 5, 4 | "link": null 5 | } -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/05-migrations/images/auth-module-decision-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/docs/versioned_docs/version-v8.5.x/05-migrations/images/auth-module-decision-tree.png -------------------------------------------------------------------------------- /docs/versioned_docs/version-v8.5.x/05-migrations/migration.template.md: -------------------------------------------------------------------------------- 1 | # Migrating from \ to \ 2 | 3 | This guide provides instructions for migrating to a new version of ibc-go. 4 | 5 | There are four sections based on the four potential user groups of this document: 6 | 7 | - [Chains](#chains) 8 | - [IBC Apps](#ibc-apps) 9 | - [Relayers](#relayers) 10 | - [IBC Light Clients](#ibc-light-clients) 11 | 12 | **Note:** ibc-go supports golang semantic versioning and therefore all imports must be updated on major version releases. 13 | 14 | ## Chains 15 | 16 | - No relevant changes were made in this release. 17 | 18 | ## IBC Apps 19 | 20 | - No relevant changes were made in this release. 21 | 22 | ## Relayers 23 | 24 | - No relevant changes were made in this release. 25 | 26 | ## IBC Light Clients 27 | 28 | - No relevant changes were made in this release. 29 | -------------------------------------------------------------------------------- /docs/versioned_sidebars/version-v4.6.x-sidebars.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSidebar": [ 3 | { 4 | "type": "autogenerated", 5 | "dirName": "." 6 | }, 7 | { 8 | "type": "category", 9 | "label": "Resources", 10 | "collapsed": false, 11 | "items": [ 12 | { 13 | "type": "link", 14 | "label": "IBC Specification", 15 | "href": "https://github.com/cosmos/ibc" 16 | }, 17 | { 18 | "type": "link", 19 | "label": "Protobuf Documentation", 20 | "href": "https://buf.build/cosmos/ibc/docs/main" 21 | }, 22 | { 23 | "type": "link", 24 | "label": "Developer Portal", 25 | "href": "https://tutorials.cosmos.network" 26 | }, 27 | { 28 | "type": "link", 29 | "label": "Awesome Cosmos", 30 | "href": "https://github.com/cosmos/awesome-cosmos" 31 | } 32 | ] 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /docs/versioned_sidebars/version-v5.4.x-sidebars.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSidebar": [ 3 | { 4 | "type": "autogenerated", 5 | "dirName": "." 6 | }, 7 | { 8 | "type": "category", 9 | "label": "Resources", 10 | "collapsed": false, 11 | "items": [ 12 | { 13 | "type": "link", 14 | "label": "IBC Specification", 15 | "href": "https://github.com/cosmos/ibc" 16 | }, 17 | { 18 | "type": "link", 19 | "label": "Protobuf Documentation", 20 | "href": "https://buf.build/cosmos/ibc/docs/main" 21 | }, 22 | { 23 | "type": "link", 24 | "label": "Developer Portal", 25 | "href": "https://tutorials.cosmos.network" 26 | }, 27 | { 28 | "type": "link", 29 | "label": "Awesome Cosmos", 30 | "href": "https://github.com/cosmos/awesome-cosmos" 31 | } 32 | ] 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /docs/versioned_sidebars/version-v6.3.x-sidebars.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSidebar": [ 3 | { 4 | "type": "autogenerated", 5 | "dirName": "." 6 | }, 7 | { 8 | "type": "category", 9 | "label": "Resources", 10 | "collapsed": false, 11 | "items": [ 12 | { 13 | "type": "link", 14 | "label": "IBC Specification", 15 | "href": "https://github.com/cosmos/ibc" 16 | }, 17 | { 18 | "type": "link", 19 | "label": "Protobuf Documentation", 20 | "href": "https://buf.build/cosmos/ibc/docs/main" 21 | }, 22 | { 23 | "type": "link", 24 | "label": "Developer Portal", 25 | "href": "https://tutorials.cosmos.network" 26 | }, 27 | { 28 | "type": "link", 29 | "label": "Awesome Cosmos", 30 | "href": "https://github.com/cosmos/awesome-cosmos" 31 | } 32 | ] 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /docs/versioned_sidebars/version-v7.8.x-sidebars.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSidebar": [ 3 | { 4 | "type": "autogenerated", 5 | "dirName": "." 6 | }, 7 | { 8 | "type": "category", 9 | "label": "Resources", 10 | "collapsed": false, 11 | "items": [ 12 | { 13 | "type": "link", 14 | "label": "IBC Specification", 15 | "href": "https://github.com/cosmos/ibc" 16 | }, 17 | { 18 | "type": "link", 19 | "label": "Protobuf Documentation", 20 | "href": "https://buf.build/cosmos/ibc/docs/main" 21 | }, 22 | { 23 | "type": "link", 24 | "label": "Developer Portal", 25 | "href": "https://tutorials.cosmos.network" 26 | }, 27 | { 28 | "type": "link", 29 | "label": "Awesome Cosmos", 30 | "href": "https://github.com/cosmos/awesome-cosmos" 31 | } 32 | ] 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /docs/versions.json: -------------------------------------------------------------------------------- 1 | [ 2 | "v10.1.x", 3 | "v8.5.x", 4 | "v7.8.x", 5 | "v6.3.x", 6 | "v5.4.x", 7 | "v4.6.x" 8 | ] 9 | -------------------------------------------------------------------------------- /e2e/Makefile: -------------------------------------------------------------------------------- 1 | DOCKER := $(shell which docker) 2 | TEST_CONTAINERS=$(shell docker ps --filter "label=ibc-test" -a -q) 3 | 4 | cleanup-ibc-test-containers: 5 | for id in $(TEST_CONTAINERS) ; do \ 6 | $(DOCKER) stop $$id ; \ 7 | $(DOCKER) rm $$id ; \ 8 | done 9 | 10 | init: 11 | ./scripts/init.sh 12 | 13 | e2e-test: init cleanup-ibc-test-containers 14 | ./scripts/run-e2e.sh $(test) $(entrypoint) 15 | 16 | e2e-suite: init cleanup-ibc-test-containers 17 | RUN_SUITE="true" ./scripts/run-e2e.sh "" $(entrypoint) 18 | 19 | .PHONY: cleanup-ibc-test-containers e2e-test init 20 | -------------------------------------------------------------------------------- /e2e/internal/directories/directories.go: -------------------------------------------------------------------------------- 1 | package directories 2 | 3 | import ( 4 | "fmt" 5 | "os" 6 | "path" 7 | "strings" 8 | ) 9 | 10 | const ( 11 | e2eDir = "e2e" 12 | 13 | // DefaultGenesisExportPath is the default path to which Genesis debug files will be exported to. 14 | DefaultGenesisExportPath = "diagnostics/genesis.json" 15 | ) 16 | 17 | // E2E finds the e2e directory above the test. 18 | func E2E() (string, error) { 19 | wd, err := os.Getwd() 20 | if err != nil { 21 | return "", err 22 | } 23 | 24 | const maxAttempts = 100 25 | count := 0 26 | for ; !strings.HasSuffix(wd, e2eDir) && count < maxAttempts; wd = path.Dir(wd) { 27 | count++ 28 | } 29 | 30 | // arbitrary value to avoid getting stuck in an infinite loop if this is called 31 | // in a context where the e2e directory does not exist. 32 | if count == maxAttempts { 33 | return "", fmt.Errorf("unable to find e2e directory after %d tries", maxAttempts) 34 | } 35 | 36 | return wd, nil 37 | } 38 | -------------------------------------------------------------------------------- /e2e/sample.config.yaml: -------------------------------------------------------------------------------- 1 | # This file contains a bare minimum configuration for running e2e tests. 2 | # for a more detailed configuration, see sample.config.extended.yaml. 3 | --- 4 | chains: 5 | - tag: main # override with CHAIN_A_TAG 6 | chainId: chainA-1 7 | - tag: main # override with CHAIN_B_TAG 8 | chainId: chainB-1 9 | - tag: main # override with CHAIN_C_TAG 10 | chainId: chainC-1 11 | - tag: main # override with CHAIN_D_TAG 12 | chainId: chainD-1 13 | -------------------------------------------------------------------------------- /e2e/testsuite/events.go: -------------------------------------------------------------------------------- 1 | package testsuite 2 | 3 | import ( 4 | sdk "github.com/cosmos/cosmos-sdk/types" 5 | 6 | abci "github.com/cometbft/cometbft/abci/types" 7 | ) 8 | 9 | // ABCIToSDKEvents converts a list of ABCI events to Cosmos SDK events. 10 | func ABCIToSDKEvents(abciEvents []abci.Event) sdk.Events { 11 | var events sdk.Events 12 | for _, evt := range abciEvents { 13 | var attributes []sdk.Attribute 14 | for _, attr := range evt.GetAttributes() { 15 | attributes = append(attributes, sdk.NewAttribute(attr.Key, attr.Value)) 16 | } 17 | 18 | events = events.AppendEvent(sdk.NewEvent(evt.GetType(), attributes...)) 19 | } 20 | 21 | return events 22 | } 23 | -------------------------------------------------------------------------------- /go.work.example: -------------------------------------------------------------------------------- 1 | go 1.22.0 2 | 3 | toolchain go1.22.3 4 | 5 | use ( 6 | ./ 7 | ./modules/apps/callbacks 8 | ./modules/light-clients/08-wasm 9 | ./e2e 10 | ./simapp 11 | ) 12 | -------------------------------------------------------------------------------- /internal/logging/logging.go: -------------------------------------------------------------------------------- 1 | package logging 2 | 3 | import ( 4 | "fmt" 5 | 6 | sdk "github.com/cosmos/cosmos-sdk/types" 7 | ) 8 | 9 | // SdkEventsToLogArguments converts a given sdk.Events and returns a slice of strings that provide human 10 | // readable values for the event attributes. 11 | func SdkEventsToLogArguments(events sdk.Events) []string { 12 | logArgs := []string{"events"} 13 | for _, e := range events { 14 | logArgs = append(logArgs, fmt.Sprintf("type=%s", e.Type)) 15 | for _, attr := range e.Attributes { 16 | if len(attr.Value) == 0 { 17 | continue 18 | } 19 | logArgs = append(logArgs, fmt.Sprintf("%s=%s", attr.Key, attr.Value)) 20 | } 21 | } 22 | return logArgs 23 | } 24 | -------------------------------------------------------------------------------- /internal/validate/validate.go: -------------------------------------------------------------------------------- 1 | package validate 2 | 3 | import ( 4 | "google.golang.org/grpc/codes" 5 | "google.golang.org/grpc/status" 6 | 7 | host "github.com/cosmos/ibc-go/v10/modules/core/24-host" 8 | ) 9 | 10 | // GRPCRequest validates that the portID and channelID of a gRPC Request are valid identifiers. 11 | func GRPCRequest(portID, channelID string) error { 12 | if err := host.PortIdentifierValidator(portID); err != nil { 13 | return status.Error(codes.InvalidArgument, err.Error()) 14 | } 15 | 16 | if err := host.ChannelIdentifierValidator(channelID); err != nil { 17 | return status.Error(codes.InvalidArgument, err.Error()) 18 | } 19 | 20 | return nil 21 | } 22 | -------------------------------------------------------------------------------- /maintainership.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/maintainership.png -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/controller/keeper/export_test.go: -------------------------------------------------------------------------------- 1 | package keeper 2 | 3 | /* 4 | This file is to allow for unexported functions and fields to be accessible to the testing package. 5 | */ 6 | 7 | import ( 8 | sdk "github.com/cosmos/cosmos-sdk/types" 9 | 10 | icatypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types" 11 | ) 12 | 13 | // GetAppMetadata is a wrapper around getAppMetadata to allow the function to be directly called in tests. 14 | func (k Keeper) GetAppMetadata(ctx sdk.Context, portID, channelID string) (icatypes.Metadata, error) { 15 | return k.getAppMetadata(ctx, portID, channelID) 16 | } 17 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/controller/types/codec.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | codectypes "github.com/cosmos/cosmos-sdk/codec/types" 5 | sdk "github.com/cosmos/cosmos-sdk/types" 6 | "github.com/cosmos/cosmos-sdk/types/msgservice" 7 | ) 8 | 9 | // RegisterInterfaces registers the interchain accounts controller message types using the provided InterfaceRegistry 10 | func RegisterInterfaces(registry codectypes.InterfaceRegistry) { 11 | registry.RegisterImplementations( 12 | (*sdk.Msg)(nil), 13 | &MsgRegisterInterchainAccount{}, 14 | &MsgSendTx{}, 15 | &MsgUpdateParams{}, 16 | ) 17 | msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) 18 | } 19 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/controller/types/errors.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | ) 6 | 7 | // ICA Controller sentinel errors 8 | var ( 9 | ErrControllerSubModuleDisabled = errorsmod.Register(SubModuleName, 2, "controller submodule is disabled") 10 | ) 11 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/controller/types/keys.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | const ( 4 | // SubModuleName defines the interchain accounts controller module name 5 | SubModuleName = "icacontroller" 6 | 7 | // StoreKey is the store key string for the interchain accounts controller module 8 | StoreKey = SubModuleName 9 | 10 | // ParamsKey is the store key for the interchain accounts controller parameters 11 | ParamsKey = "params" 12 | ) 13 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/controller/types/params.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | const ( 4 | // DefaultControllerEnabled is the default value for the controller param (set to true) 5 | DefaultControllerEnabled = true 6 | ) 7 | 8 | // NewParams creates a new parameter configuration for the controller submodule 9 | func NewParams(enableController bool) Params { 10 | return Params{ 11 | ControllerEnabled: enableController, 12 | } 13 | } 14 | 15 | // DefaultParams is the default parameter configuration for the controller submodule 16 | func DefaultParams() Params { 17 | return NewParams(DefaultControllerEnabled) 18 | } 19 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package ica implements the packet data structure, state machine handling logic, 3 | and encoding details for the account management system over an IBC channel 4 | between separate chains. 5 | This implementation is based off the ICS 27 specification 6 | (https://github.com/cosmos/ibc/tree/main/spec/app/ics-027-interchain-accounts) 7 | */ 8 | package ica 9 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/host/keeper/export_test.go: -------------------------------------------------------------------------------- 1 | package keeper 2 | 3 | /* 4 | This file is to allow for unexported functions and fields to be accessible to the testing package. 5 | */ 6 | 7 | import ( 8 | sdk "github.com/cosmos/cosmos-sdk/types" 9 | 10 | icatypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types" 11 | ) 12 | 13 | // GetAppMetadata is a wrapper around getAppMetadata to allow the function to be directly called in tests. 14 | func (k Keeper) GetAppMetadata(ctx sdk.Context, portID, channelID string) (icatypes.Metadata, error) { 15 | return k.getAppMetadata(ctx, portID, channelID) 16 | } 17 | 18 | // NewModuleQuerySafeAllowList is a wrapper around newModuleQuerySafeAllowList to allow the function to be directly called in tests. 19 | func NewModuleQuerySafeAllowList() []string { 20 | return newModuleQuerySafeAllowList() 21 | } 22 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/host/keeper/grpc_query.go: -------------------------------------------------------------------------------- 1 | package keeper 2 | 3 | import ( 4 | "context" 5 | 6 | sdk "github.com/cosmos/cosmos-sdk/types" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types" 9 | ) 10 | 11 | var _ types.QueryServer = (*Keeper)(nil) 12 | 13 | // Params implements the Query/Params gRPC method 14 | func (k Keeper) Params(goCtx context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { 15 | ctx := sdk.UnwrapSDKContext(goCtx) 16 | params := k.GetParams(ctx) 17 | 18 | return &types.QueryParamsResponse{ 19 | Params: ¶ms, 20 | }, nil 21 | } 22 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/host/keeper/grpc_query_test.go: -------------------------------------------------------------------------------- 1 | package keeper_test 2 | 3 | import ( 4 | "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types" 5 | ) 6 | 7 | func (suite *KeeperTestSuite) TestQueryParams() { 8 | ctx := suite.chainA.GetContext() 9 | expParams := types.DefaultParams() 10 | res, _ := suite.chainA.GetSimApp().ICAHostKeeper.Params(ctx, &types.QueryParamsRequest{}) 11 | suite.Require().Equal(&expParams, res.Params) 12 | } 13 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/host/types/codec.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | codectypes "github.com/cosmos/cosmos-sdk/codec/types" 5 | sdk "github.com/cosmos/cosmos-sdk/types" 6 | "github.com/cosmos/cosmos-sdk/types/msgservice" 7 | ) 8 | 9 | // RegisterInterfaces registers the interchain accounts host message types using the provided InterfaceRegistry 10 | func RegisterInterfaces(registry codectypes.InterfaceRegistry) { 11 | registry.RegisterImplementations( 12 | (*sdk.Msg)(nil), 13 | &MsgUpdateParams{}, 14 | &MsgModuleQuerySafe{}, 15 | ) 16 | 17 | msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) 18 | } 19 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/host/types/errors.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | ) 6 | 7 | // ICA Host sentinel errors 8 | var ( 9 | ErrHostSubModuleDisabled = errorsmod.Register(SubModuleName, 2, "host submodule is disabled") 10 | ) 11 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/host/types/params_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types" 9 | ) 10 | 11 | func TestValidateParams(t *testing.T) { 12 | require.NoError(t, types.DefaultParams().Validate()) 13 | require.NoError(t, types.NewParams(false, []string{}).Validate()) 14 | require.Error(t, types.NewParams(true, []string{""}).Validate()) 15 | require.Error(t, types.NewParams(true, []string{" "}).Validate()) 16 | require.Error(t, types.NewParams(true, []string{"*", "/cosmos.bank.v1beta1.MsgSend"}).Validate()) 17 | require.Error(t, types.NewParams(true, make([]string, types.MaxAllowListLength+1)).Validate()) 18 | } 19 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/module_test.go: -------------------------------------------------------------------------------- 1 | package ica_test 2 | 3 | import ( 4 | "testing" 5 | 6 | testifysuite "github.com/stretchr/testify/suite" 7 | 8 | ibctesting "github.com/cosmos/ibc-go/v10/testing" 9 | ) 10 | 11 | type InterchainAccountsTestSuite struct { 12 | testifysuite.Suite 13 | 14 | coordinator *ibctesting.Coordinator 15 | } 16 | 17 | func TestICATestSuite(t *testing.T) { 18 | testifysuite.Run(t, new(InterchainAccountsTestSuite)) 19 | } 20 | 21 | func (suite *InterchainAccountsTestSuite) SetupTest() { 22 | suite.coordinator = ibctesting.NewCoordinator(suite.T(), 2) 23 | } 24 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/types/events.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | // ICS27 Interchain Accounts events 4 | const ( 5 | EventTypePacket = "ics27_packet" 6 | 7 | AttributeKeyAckError = "error" 8 | AttributeKeyHostChannelID = "host_channel_id" 9 | AttributeKeyControllerChannelID = "controller_channel_id" 10 | AttributeKeyAckSuccess = "success" 11 | ) 12 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/types/keys_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types" 7 | ibctesting "github.com/cosmos/ibc-go/v10/testing" 8 | ) 9 | 10 | func (suite *TypesTestSuite) TestKeyActiveChannel() { 11 | key := types.KeyActiveChannel("port-id", "connection-id") 12 | suite.Require().Equal("activeChannel/port-id/connection-id", string(key)) 13 | } 14 | 15 | func (suite *TypesTestSuite) TestKeyOwnerAccount() { 16 | key := types.KeyOwnerAccount("port-id", "connection-id") 17 | suite.Require().Equal("owner/port-id/connection-id", string(key)) 18 | } 19 | 20 | func (suite *TypesTestSuite) TestKeyIsMiddlewareEnabled() { 21 | key := types.KeyIsMiddlewareEnabled(ibctesting.MockPort, ibctesting.FirstChannelID) 22 | suite.Require().Equal(fmt.Sprintf("%s/%s/%s", types.IsMiddlewareEnabledPrefix, ibctesting.MockPort, ibctesting.FirstChannelID), string(key)) 23 | } 24 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/types/port.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "strings" 5 | 6 | errorsmod "cosmossdk.io/errors" 7 | ) 8 | 9 | // NewControllerPortID creates and returns a new prefixed controller port identifier using the provided owner string 10 | func NewControllerPortID(owner string) (string, error) { 11 | if strings.TrimSpace(owner) == "" { 12 | return "", errorsmod.Wrap(ErrInvalidAccountAddress, "owner address cannot be empty") 13 | } 14 | 15 | ownerWithPrefix := ControllerPortPrefix + owner 16 | return ownerWithPrefix, nil 17 | } 18 | -------------------------------------------------------------------------------- /modules/apps/27-interchain-accounts/types/router.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "github.com/cosmos/cosmos-sdk/baseapp" 5 | sdk "github.com/cosmos/cosmos-sdk/types" 6 | ) 7 | 8 | // MessageRouter ADR 031 request type routing 9 | // https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-031-msg-service.md 10 | type MessageRouter interface { 11 | Handler(msg sdk.Msg) baseapp.MsgServiceHandler 12 | } 13 | 14 | // QueryRouter ADR 021 query type routing 15 | // https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-021-protobuf-query-encoding.md 16 | type QueryRouter interface { 17 | // Route returns the GRPCQueryHandler for a given query route path or nil 18 | // if not found 19 | Route(path string) baseapp.GRPCQueryHandler 20 | } 21 | -------------------------------------------------------------------------------- /modules/apps/callbacks/testing/simapp/README.md: -------------------------------------------------------------------------------- 1 | # Callbacks Testing SimApp 2 | 3 | This testing directory is a duplicate of the ibc-go testing directory. 4 | It is only here as a way of creating a separate SimApp binary to avoid introducing a dependency on the callbacks 5 | module from within ibc-go. 6 | -------------------------------------------------------------------------------- /modules/apps/callbacks/testing/simapp/encoding.go: -------------------------------------------------------------------------------- 1 | package simapp 2 | 3 | import ( 4 | "github.com/cosmos/cosmos-sdk/client" 5 | "github.com/cosmos/cosmos-sdk/codec" 6 | "github.com/cosmos/cosmos-sdk/codec/types" 7 | ) 8 | 9 | // EncodingConfig specifies the concrete encoding types to use for a given app. 10 | // This is provided for compatibility between protobuf and amino implementations. 11 | type EncodingConfig struct { 12 | InterfaceRegistry types.InterfaceRegistry 13 | Codec codec.Codec 14 | TxConfig client.TxConfig 15 | Amino *codec.LegacyAmino 16 | } 17 | -------------------------------------------------------------------------------- /modules/apps/callbacks/testing/simapp/genesis.go: -------------------------------------------------------------------------------- 1 | package simapp 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // GenesisState of the blockchain is represented here as a map of raw json 8 | // messages key'd by an identifier string. 9 | // The identifier is used to determine which module genesis information belongs 10 | // to so it may be appropriately routed during init chain. 11 | // Within this application default genesis information is retrieved from 12 | // the ModuleBasicManager which populates json from each BasicModule 13 | // object provided to it during init. 14 | type GenesisState map[string]json.RawMessage 15 | -------------------------------------------------------------------------------- /modules/apps/callbacks/testing/simapp/params/amino.go: -------------------------------------------------------------------------------- 1 | //go:build test_amino 2 | // +build test_amino 3 | 4 | package params 5 | 6 | import ( 7 | "github.com/cosmos/cosmos-sdk/codec" 8 | "github.com/cosmos/cosmos-sdk/codec/types" 9 | "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" 10 | ) 11 | 12 | // MakeTestEncodingConfig creates an EncodingConfig for an amino based test configuration. 13 | // This function should be used only internally (in the SDK). 14 | // App user shouldn't create new codecs - use the app.AppCodec instead. 15 | // [DEPRECATED] 16 | func MakeTestEncodingConfig() EncodingConfig { 17 | cdc := codec.NewLegacyAmino() 18 | interfaceRegistry := types.NewInterfaceRegistry() 19 | marshaler := codec.NewAminoCodec(cdc) 20 | 21 | return EncodingConfig{ 22 | InterfaceRegistry: interfaceRegistry, 23 | Marshaler: marshaler, 24 | TxConfig: legacytx.StdTxConfig{Cdc: cdc}, 25 | Amino: cdc, 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /modules/apps/callbacks/testing/simapp/params/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package params defines the simulation parameters in the simapp. 3 | 4 | It contains the default weights used for each transaction used on the module's 5 | simulation. These weights define the chance for a transaction to be simulated at 6 | any given operation. 7 | 8 | You can replace the default values for the weights by providing a params.json 9 | file with the weights defined for each of the transaction operations: 10 | 11 | { 12 | "op_weight_msg_send": 60, 13 | "op_weight_msg_delegate": 100, 14 | } 15 | 16 | In the example above, the `MsgSend` has 60% chance to be simulated, while the 17 | `MsgDelegate` will always be simulated. 18 | */ 19 | package params 20 | -------------------------------------------------------------------------------- /modules/apps/callbacks/testing/simapp/params/encoding.go: -------------------------------------------------------------------------------- 1 | package params 2 | 3 | import ( 4 | "github.com/cosmos/cosmos-sdk/client" 5 | "github.com/cosmos/cosmos-sdk/codec" 6 | "github.com/cosmos/cosmos-sdk/codec/types" 7 | ) 8 | 9 | // EncodingConfig specifies the concrete encoding types to use for a given app. 10 | // This is provided for compatibility between protobuf and amino implementations. 11 | type EncodingConfig struct { 12 | InterfaceRegistry types.InterfaceRegistry 13 | Codec codec.Codec 14 | TxConfig client.TxConfig 15 | Amino *codec.LegacyAmino 16 | } 17 | -------------------------------------------------------------------------------- /modules/apps/callbacks/testing/simapp/params/proto.go: -------------------------------------------------------------------------------- 1 | //go:build !test_amino 2 | 3 | package params 4 | 5 | import ( 6 | "github.com/cosmos/cosmos-sdk/codec" 7 | "github.com/cosmos/cosmos-sdk/codec/types" 8 | "github.com/cosmos/cosmos-sdk/x/auth/tx" 9 | ) 10 | 11 | // MakeTestEncodingConfig creates an EncodingConfig for a non-amino based test configuration. 12 | // This function should be used only internally (in the SDK). 13 | // App user shouldn't create new codecs - use the app.AppCodec instead. 14 | // [DEPRECATED] 15 | func MakeTestEncodingConfig() EncodingConfig { 16 | cdc := codec.NewLegacyAmino() 17 | interfaceRegistry := types.NewInterfaceRegistry() 18 | protoCdc := codec.NewProtoCodec(interfaceRegistry) 19 | 20 | return EncodingConfig{ 21 | InterfaceRegistry: interfaceRegistry, 22 | Codec: protoCdc, 23 | TxConfig: tx.NewTxConfig(protoCdc, tx.DefaultSignModes), 24 | Amino: cdc, 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /modules/apps/callbacks/types/errors.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | ) 6 | 7 | var ( 8 | ErrCannotUnmarshalPacketData = errorsmod.Register(ModuleName, 2, "cannot unmarshal packet data") 9 | ErrNotPacketDataProvider = errorsmod.Register(ModuleName, 3, "packet is not a PacketDataProvider") 10 | ErrCallbackKeyNotFound = errorsmod.Register(ModuleName, 4, "callback key not found in packet data") 11 | ErrCallbackAddressNotFound = errorsmod.Register(ModuleName, 5, "callback address not found in packet data") 12 | ErrCallbackOutOfGas = errorsmod.Register(ModuleName, 6, "callback out of gas") 13 | ErrCallbackPanic = errorsmod.Register(ModuleName, 7, "callback panic") 14 | ErrInvalidCallbackData = errorsmod.Register(ModuleName, 8, "invalid callback data") 15 | ) 16 | -------------------------------------------------------------------------------- /modules/apps/callbacks/types/export_test.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | /* 4 | This file is to allow for unexported functions to be accessible to the testing package. 5 | */ 6 | 7 | // GetCallbackAddress is a wrapper around getCallbackAddress to allow the function to be directly called in tests. 8 | func GetCallbackAddress(callbackData map[string]any) (string, error) { 9 | return getCallbackAddress(callbackData) 10 | } 11 | 12 | // GetUserDefinedGasLimit is a wrapper around getUserDefinedGasLimit to allow the function to be directly called in tests. 13 | func GetUserDefinedGasLimit(callbackData map[string]any) (uint64, error) { 14 | return getUserDefinedGasLimit(callbackData) 15 | } 16 | -------------------------------------------------------------------------------- /modules/apps/callbacks/types/types_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/suite" 7 | 8 | ibctesting "github.com/cosmos/ibc-go/v10/testing" 9 | ) 10 | 11 | // CallbacksTypesTestSuite defines the needed instances and methods to test callbacks 12 | type CallbacksTypesTestSuite struct { 13 | suite.Suite 14 | 15 | coord *ibctesting.Coordinator 16 | 17 | chainA, chainB *ibctesting.TestChain 18 | 19 | path *ibctesting.Path 20 | } 21 | 22 | // SetupTest creates a coordinator with 2 test chains. 23 | func (s *CallbacksTypesTestSuite) SetupTest() { 24 | s.coord = ibctesting.NewCoordinator(s.T(), 2) 25 | s.chainA = s.coord.GetChain(ibctesting.GetChainID(1)) 26 | s.chainB = s.coord.GetChain(ibctesting.GetChainID(2)) 27 | s.path = ibctesting.NewPath(s.chainA, s.chainB) 28 | } 29 | 30 | func TestCallbacksTypesTestSuite(t *testing.T) { 31 | suite.Run(t, new(CallbacksTypesTestSuite)) 32 | } 33 | -------------------------------------------------------------------------------- /modules/apps/packet-forward-middleware/keeper/migrator.go: -------------------------------------------------------------------------------- 1 | package keeper 2 | 3 | import ( 4 | sdk "github.com/cosmos/cosmos-sdk/types" 5 | 6 | v3 "github.com/cosmos/ibc-go/v10/modules/apps/packet-forward-middleware/migrations/v3" 7 | ) 8 | 9 | // Migrator is a struct for handling in-place state migrations. 10 | type Migrator struct { 11 | keeper *Keeper 12 | } 13 | 14 | func NewMigrator(k *Keeper) Migrator { 15 | return Migrator{ 16 | keeper: k, 17 | } 18 | } 19 | 20 | // Migrate2to3 migrates the module state from the consensus version 2 to 21 | // version 3 22 | func (m Migrator) Migrate2to3(ctx sdk.Context) error { 23 | return v3.Migrate(ctx, m.keeper.bankKeeper, m.keeper.channelKeeper, m.keeper.transferKeeper) 24 | } 25 | -------------------------------------------------------------------------------- /modules/apps/packet-forward-middleware/types/genesis.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import "errors" 4 | 5 | // DefaultGenesisState returns a GenesisState with an empty map of in-flight packets. 6 | func DefaultGenesisState() *GenesisState { 7 | return &GenesisState{ 8 | InFlightPackets: make(map[string]InFlightPacket), 9 | } 10 | } 11 | 12 | // Validate performs basic genesis state validation returning an error upon any failure. 13 | func (gs GenesisState) Validate() error { 14 | if gs.InFlightPackets == nil { 15 | return errors.New("in-flight packets cannot be nil") 16 | } 17 | 18 | return nil 19 | } 20 | -------------------------------------------------------------------------------- /modules/apps/packet-forward-middleware/types/keys.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import "fmt" 4 | 5 | const ( 6 | // ModuleName defines the module name 7 | // NOTE: There is a spelling mistake in the module name that came from the original implementation 8 | // and is currently kept for backward compatibility. Consideration for renaming done in #8388 9 | ModuleName = "packetfowardmiddleware" 10 | 11 | // StoreKey is the store key string for IBC transfer 12 | StoreKey = ModuleName 13 | 14 | // QuerierRoute is the querier route for IBC transfer 15 | QuerierRoute = ModuleName 16 | ) 17 | 18 | type NonrefundableKey struct{} 19 | 20 | func RefundPacketKey(channelID, portID string, sequence uint64) []byte { 21 | return fmt.Appendf(nil, "%s/%s/%d", channelID, portID, sequence) 22 | } 23 | -------------------------------------------------------------------------------- /modules/apps/packet-forward-middleware/types/types.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" 5 | channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" 6 | ) 7 | 8 | func (ifp *InFlightPacket) ChannelPacket() channeltypes.Packet { 9 | return channeltypes.Packet{ 10 | Data: ifp.PacketData, 11 | Sequence: ifp.RefundSequence, 12 | SourcePort: ifp.PacketSrcPortId, 13 | SourceChannel: ifp.PacketSrcChannelId, 14 | DestinationPort: ifp.RefundPortId, 15 | DestinationChannel: ifp.RefundChannelId, 16 | TimeoutHeight: clienttypes.MustParseHeight(ifp.PacketTimeoutHeight), 17 | TimeoutTimestamp: ifp.PacketTimeoutTimestamp, 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/apps/transfer/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package transfer implements the packet data structure, state machine handling logic, 3 | and encoding details for the transfer of fungible tokens over an IBC channel between 4 | two modules on separate chains. 5 | This implementation is based off the ICS 20 specification 6 | (https://github.com/cosmos/ibc/blob/main/spec/app/ics-020-fungible-token-transfer) 7 | */ 8 | package transfer 9 | -------------------------------------------------------------------------------- /modules/apps/transfer/internal/types/legacy_denomtrace_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | 8 | internaltypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/internal/types" 9 | ) 10 | 11 | func TestDenomTrace_IBCDenom(t *testing.T) { 12 | testCases := []struct { 13 | name string 14 | trace internaltypes.DenomTrace 15 | expDenom string 16 | }{ 17 | {"base denom", internaltypes.DenomTrace{BaseDenom: "uatom"}, "uatom"}, 18 | {"trace info", internaltypes.DenomTrace{BaseDenom: "uatom", Path: "transfer/channel-1"}, "ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9"}, 19 | } 20 | 21 | for _, tc := range testCases { 22 | 23 | denom := tc.trace.IBCDenom() 24 | require.Equal(t, tc.expDenom, denom, tc.name) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /modules/apps/transfer/keeper/relay_model/identifiers.tla: -------------------------------------------------------------------------------- 1 | -------------------------- MODULE identifiers ---------------------------- 2 | 3 | CONSTANT 4 | Identifiers, 5 | NullId 6 | 7 | ============================================================================= 8 | \* Modification History 9 | \* Last modified Thu Nov 05 13:23:12 CET 2020 by andrey 10 | \* Created Thu Nov 05 13:22:40 CET 2020 by andrey 11 | -------------------------------------------------------------------------------- /modules/apps/transfer/types/encoding.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "bytes" 5 | "encoding/json" 6 | ) 7 | 8 | // UnmarshalJSON implements the Unmarshaller interface for FungibleTokenPacketData. 9 | func (ftpd *FungibleTokenPacketData) UnmarshalJSON(bz []byte) error { 10 | // Recursion protection. We cannot unmarshal into FungibleTokenPacketData directly 11 | // else UnmarshalJSON is going to get invoked again, ad infinum. Create an alias 12 | // and unmarshal into that, instead. 13 | type ftpdAlias FungibleTokenPacketData 14 | 15 | d := json.NewDecoder(bytes.NewReader(bz)) 16 | // Raise errors during decoding if unknown fields are encountered. 17 | d.DisallowUnknownFields() 18 | 19 | var alias ftpdAlias 20 | if err := d.Decode(&alias); err != nil { 21 | return err 22 | } 23 | 24 | *ftpd = FungibleTokenPacketData(alias) 25 | return nil 26 | } 27 | -------------------------------------------------------------------------------- /modules/apps/transfer/types/events.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | // IBC transfer events 4 | const ( 5 | EventTypeTimeout = "timeout" 6 | EventTypePacket = "fungible_token_packet" 7 | EventTypeTransfer = "ibc_transfer" 8 | EventTypeChannelClose = "channel_closed" 9 | EventTypeDenom = "denomination" 10 | 11 | AttributeKeySender = "sender" 12 | AttributeKeyReceiver = "receiver" 13 | AttributeKeyDenom = "denom" 14 | AttributeKeyDenomHash = "denom_hash" 15 | AttributeKeyAmount = "amount" 16 | AttributeKeyRefundReceiver = "refund_receiver" 17 | AttributeKeyRefundTokens = "refund_tokens" 18 | AttributeKeyAckSuccess = "success" 19 | AttributeKeyAck = "acknowledgement" 20 | AttributeKeyAckError = "error" 21 | AttributeKeyMemo = "memo" 22 | ) 23 | -------------------------------------------------------------------------------- /modules/apps/transfer/types/export_test.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | // ValidateIBCDenom is a wrapper around validateIBCDenom for testing purposes. 4 | func ValidateIBCDenom(denom string) error { 5 | return validateIBCDenom(denom) 6 | } 7 | -------------------------------------------------------------------------------- /modules/apps/transfer/types/keys_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" 9 | ) 10 | 11 | // Test that there is domain separation between the port id and the channel id otherwise an 12 | // escrow address may overlap with another channel end 13 | func TestGetEscrowAddress(t *testing.T) { 14 | var ( 15 | port1 = "transfer" 16 | channel1 = "channel" 17 | port2 = "transfercha" 18 | channel2 = "nnel" 19 | ) 20 | 21 | escrow1 := types.GetEscrowAddress(port1, channel1) 22 | escrow2 := types.GetEscrowAddress(port2, channel2) 23 | require.NotEqual(t, escrow1, escrow2) 24 | } 25 | -------------------------------------------------------------------------------- /modules/apps/transfer/types/params.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | const ( 4 | // DefaultSendEnabled enabled 5 | DefaultSendEnabled = true 6 | // DefaultReceiveEnabled enabled 7 | DefaultReceiveEnabled = true 8 | ) 9 | 10 | // NewParams creates a new parameter configuration for the ibc transfer module 11 | func NewParams(enableSend, enableReceive bool) Params { 12 | return Params{ 13 | SendEnabled: enableSend, 14 | ReceiveEnabled: enableReceive, 15 | } 16 | } 17 | 18 | // DefaultParams is the default parameter configuration for the ibc-transfer module 19 | func DefaultParams() Params { 20 | return NewParams(DefaultSendEnabled, DefaultReceiveEnabled) 21 | } 22 | -------------------------------------------------------------------------------- /modules/apps/transfer/types/solidity_abi_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" 5 | ) 6 | 7 | func (suite *TypesTestSuite) TestFTPD() { 8 | packetData := types.FungibleTokenPacketData{ 9 | Denom: "uatom", 10 | Amount: "1000000", 11 | Sender: "sender", 12 | Receiver: "receiver", 13 | Memo: "memo", 14 | } 15 | 16 | bz, err := types.EncodeABIFungibleTokenPacketData(&packetData) 17 | suite.Require().NoError(err) 18 | 19 | decodedPacketData, err := types.DecodeABIFungibleTokenPacketData(bz) 20 | suite.Require().NoError(err) 21 | 22 | suite.Require().Equal(packetData, *decodedPacketData) 23 | } 24 | -------------------------------------------------------------------------------- /modules/apps/transfer/types/types_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "testing" 5 | 6 | testifysuite "github.com/stretchr/testify/suite" 7 | 8 | ibctesting "github.com/cosmos/ibc-go/v10/testing" 9 | ) 10 | 11 | type TypesTestSuite struct { 12 | testifysuite.Suite 13 | 14 | coordinator *ibctesting.Coordinator 15 | 16 | chainA *ibctesting.TestChain 17 | chainB *ibctesting.TestChain 18 | } 19 | 20 | func (suite *TypesTestSuite) SetupTest() { 21 | suite.coordinator = ibctesting.NewCoordinator(suite.T(), 2) 22 | 23 | suite.chainA = suite.coordinator.GetChain(ibctesting.GetChainID(1)) 24 | suite.chainB = suite.coordinator.GetChain(ibctesting.GetChainID(2)) 25 | } 26 | 27 | func TestTypesTestSuite(t *testing.T) { 28 | testifysuite.Run(t, new(TypesTestSuite)) 29 | } 30 | -------------------------------------------------------------------------------- /modules/core/02-client/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package client implements the ICS 02 - Client Semantics specification 3 | (https://github.com/cosmos/ibc/tree/master/spec/core/ics-002-client-semantics). This 4 | concrete implementation defines types and methods to store and update light 5 | clients which tracks on other chain's state. 6 | */ 7 | package client 8 | -------------------------------------------------------------------------------- /modules/core/02-client/migrations/v7/expected_keepers.go: -------------------------------------------------------------------------------- 1 | package v7 2 | 3 | import ( 4 | storetypes "cosmossdk.io/store/types" 5 | 6 | sdk "github.com/cosmos/cosmos-sdk/types" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/core/exported" 9 | ) 10 | 11 | // ClientKeeper expected IBC client keeper 12 | type ClientKeeper interface { 13 | GetClientState(ctx sdk.Context, clientID string) (exported.ClientState, bool) 14 | SetClientState(ctx sdk.Context, clientID string, clientState exported.ClientState) 15 | ClientStore(ctx sdk.Context, clientID string) storetypes.KVStore 16 | } 17 | -------------------------------------------------------------------------------- /modules/core/02-client/module.go: -------------------------------------------------------------------------------- 1 | package client 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/02-client/client/cli" 7 | "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" 8 | ) 9 | 10 | // Name returns the IBC client name 11 | func Name() string { 12 | return types.SubModuleName 13 | } 14 | 15 | // GetQueryCmd returns no root query command for the IBC client 16 | func GetQueryCmd() *cobra.Command { 17 | return cli.GetQueryCmd() 18 | } 19 | 20 | // GetTxCmd returns the root tx command for 02-client. 21 | func GetTxCmd() *cobra.Command { 22 | return cli.NewTxCmd() 23 | } 24 | -------------------------------------------------------------------------------- /modules/core/02-client/simulation/genesis.go: -------------------------------------------------------------------------------- 1 | package simulation 2 | 3 | import ( 4 | "math/rand" 5 | 6 | simtypes "github.com/cosmos/cosmos-sdk/types/simulation" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" 9 | ) 10 | 11 | // GenClientGenesis returns the default client genesis state. 12 | func GenClientGenesis(_ *rand.Rand, _ []simtypes.Account) types.GenesisState { 13 | return types.DefaultGenesisState() 14 | } 15 | -------------------------------------------------------------------------------- /modules/core/02-client/types/encoding_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" 5 | ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint" 6 | ) 7 | 8 | func (suite *TypesTestSuite) TestMarshalHeader() { 9 | cdc := suite.chainA.App.AppCodec() 10 | h := &ibctm.Header{ 11 | TrustedHeight: types.NewHeight(4, 100), 12 | } 13 | 14 | // marshal header 15 | bz, err := types.MarshalClientMessage(cdc, h) 16 | suite.Require().NoError(err) 17 | 18 | // unmarshal header 19 | newHeader, err := types.UnmarshalClientMessage(cdc, bz) 20 | suite.Require().NoError(err) 21 | 22 | suite.Require().Equal(h, newHeader) 23 | 24 | // use invalid bytes 25 | invalidHeader, err := types.UnmarshalClientMessage(cdc, []byte("invalid bytes")) 26 | suite.Require().Error(err) 27 | suite.Require().Nil(invalidHeader) 28 | } 29 | -------------------------------------------------------------------------------- /modules/core/02-client/v2/module.go: -------------------------------------------------------------------------------- 1 | package clientv2 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/02-client/v2/types" 7 | ) 8 | 9 | // Name returns the IBC channel ICS name. 10 | func Name() string { 11 | return types.SubModuleName 12 | } 13 | 14 | // GetTxCmd returns the root tx command for IBC channels. 15 | func GetTxCmd() *cobra.Command { 16 | return nil // TODO 17 | } 18 | 19 | // GetQueryCmd returns the root query command for IBC channels. 20 | func GetQueryCmd() *cobra.Command { 21 | return nil // TODO 22 | } 23 | -------------------------------------------------------------------------------- /modules/core/02-client/v2/module_test.go: -------------------------------------------------------------------------------- 1 | package clientv2_test 2 | 3 | import ( 4 | "testing" 5 | 6 | testifysuite "github.com/stretchr/testify/suite" 7 | 8 | ibctesting "github.com/cosmos/ibc-go/v10/testing" 9 | ) 10 | 11 | func TestModuleTestSuite(t *testing.T) { 12 | testifysuite.Run(t, new(ModuleTestSuite)) 13 | } 14 | 15 | type ModuleTestSuite struct { 16 | testifysuite.Suite 17 | 18 | coordinator *ibctesting.Coordinator 19 | 20 | // testing chains used for convenience and readability 21 | chainA *ibctesting.TestChain 22 | chainB *ibctesting.TestChain 23 | chainC *ibctesting.TestChain 24 | } 25 | 26 | func (suite *ModuleTestSuite) SetupTest() { 27 | suite.coordinator = ibctesting.NewCoordinator(suite.T(), 3) 28 | suite.chainA = suite.coordinator.GetChain(ibctesting.GetChainID(1)) 29 | suite.chainB = suite.coordinator.GetChain(ibctesting.GetChainID(2)) 30 | suite.chainC = suite.coordinator.GetChain(ibctesting.GetChainID(3)) 31 | } 32 | -------------------------------------------------------------------------------- /modules/core/02-client/v2/types/codec.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | codectypes "github.com/cosmos/cosmos-sdk/codec/types" 5 | sdk "github.com/cosmos/cosmos-sdk/types" 6 | "github.com/cosmos/cosmos-sdk/types/msgservice" 7 | ) 8 | 9 | // RegisterInterfaces registers the client interfaces to protobuf Any. 10 | func RegisterInterfaces(registry codectypes.InterfaceRegistry) { 11 | registry.RegisterImplementations( 12 | (*sdk.Msg)(nil), 13 | &MsgRegisterCounterparty{}, 14 | ) 15 | 16 | msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) 17 | } 18 | -------------------------------------------------------------------------------- /modules/core/02-client/v2/types/counterparty.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | // NewCounterpartyInfo creates a new counterparty info instance from merlePrefix and clientID 4 | func NewCounterpartyInfo(merklePrefix [][]byte, clientID string) CounterpartyInfo { 5 | return CounterpartyInfo{ 6 | MerklePrefix: merklePrefix, 7 | ClientId: clientID, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /modules/core/02-client/v2/types/errors.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import errorsmod "cosmossdk.io/errors" 4 | 5 | var ( 6 | ErrInvalidCounterparty = errorsmod.Register(SubModuleName, 34, "invalid counterparty") 7 | ErrCounterpartyNotFound = errorsmod.Register(SubModuleName, 35, "counterparty not found") 8 | ) 9 | -------------------------------------------------------------------------------- /modules/core/02-client/v2/types/keys.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | const ( 4 | // SubModuleName defines the IBC client name 5 | SubModuleName string = "clientv2" 6 | // KeyCounterparty is the key for the counterpartyInfo in the client-specific store 7 | KeyCounterparty = "counterparty" 8 | // KeyConfig is the key for the v2 configuration of the client 9 | // NOTE: v1 params were global parameters, whereas this is a configuration per client 10 | KeyConfig = "config" 11 | ) 12 | 13 | // CounterpartyKey returns the key under which the counterparty is stored in the client store 14 | func CounterpartyKey() []byte { 15 | return []byte(KeyCounterparty) 16 | } 17 | 18 | // ConfigKey returns the key under which the v2 configuration are stored in the client store 19 | func ConfigKey() []byte { 20 | return []byte(KeyConfig) 21 | } 22 | -------------------------------------------------------------------------------- /modules/core/03-connection/client/cli/cli.go: -------------------------------------------------------------------------------- 1 | package cli 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/03-connection/types" 7 | ) 8 | 9 | // GetQueryCmd returns the query commands for IBC connections 10 | func GetQueryCmd() *cobra.Command { 11 | queryCmd := &cobra.Command{ 12 | Use: types.SubModuleName, 13 | Short: "IBC connection query subcommands", 14 | DisableFlagParsing: true, 15 | SuggestionsMinimumDistance: 2, 16 | } 17 | 18 | queryCmd.AddCommand( 19 | GetCmdQueryConnections(), 20 | GetCmdQueryConnection(), 21 | GetCmdQueryClientConnections(), 22 | GetCmdConnectionParams(), 23 | ) 24 | 25 | return queryCmd 26 | } 27 | -------------------------------------------------------------------------------- /modules/core/03-connection/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package connection implements the ICS 03 - Connection Semantics specification 3 | (https://github.com/cosmos/ibc/tree/main/spec/core/ics-003-connection-semantics). This 4 | concrete implementation defines types and methods for safely creating two 5 | stateful objects (connection ends) on two separate chains, each associated with a 6 | light client of the other chain, which together facilitate cross-chain 7 | sub-state verification and packet association (through channels). 8 | 9 | The main type is ConnectionEnd, which defines a stateful object on a 10 | chain connected to another. 11 | */ 12 | package connection 13 | -------------------------------------------------------------------------------- /modules/core/03-connection/migrations/v7/expected_keepers.go: -------------------------------------------------------------------------------- 1 | package v7 2 | 3 | import sdk "github.com/cosmos/cosmos-sdk/types" 4 | 5 | // ConnectionKeeper expected IBC connection keeper 6 | type ConnectionKeeper interface { 7 | CreateSentinelLocalhostConnection(ctx sdk.Context) 8 | } 9 | -------------------------------------------------------------------------------- /modules/core/03-connection/migrations/v7/localhost.go: -------------------------------------------------------------------------------- 1 | package v7 2 | 3 | import sdk "github.com/cosmos/cosmos-sdk/types" 4 | 5 | // MigrateLocalhostConnection creates the sentinel localhost connection end to enable 6 | // localhost ibc functionality. 7 | func MigrateLocalhostConnection(ctx sdk.Context, connectionKeeper ConnectionKeeper) { 8 | connectionKeeper.CreateSentinelLocalhostConnection(ctx) 9 | } 10 | -------------------------------------------------------------------------------- /modules/core/03-connection/module.go: -------------------------------------------------------------------------------- 1 | package connection 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/03-connection/client/cli" 7 | "github.com/cosmos/ibc-go/v10/modules/core/03-connection/types" 8 | ) 9 | 10 | // Name returns the IBC connection ICS name. 11 | func Name() string { 12 | return types.SubModuleName 13 | } 14 | 15 | // GetQueryCmd returns the root query command for the IBC connections. 16 | func GetQueryCmd() *cobra.Command { 17 | return cli.GetQueryCmd() 18 | } 19 | -------------------------------------------------------------------------------- /modules/core/03-connection/simulation/genesis.go: -------------------------------------------------------------------------------- 1 | package simulation 2 | 3 | import ( 4 | "math/rand" 5 | 6 | simtypes "github.com/cosmos/cosmos-sdk/types/simulation" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/core/03-connection/types" 9 | ) 10 | 11 | // GenConnectionGenesis returns the default connection genesis state. 12 | func GenConnectionGenesis(_ *rand.Rand, _ []simtypes.Account) types.GenesisState { 13 | return types.DefaultGenesisState() 14 | } 15 | -------------------------------------------------------------------------------- /modules/core/03-connection/types/events.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "fmt" 5 | 6 | ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" 7 | ) 8 | 9 | // IBC connection events 10 | const ( 11 | AttributeKeyConnectionID = "connection_id" 12 | AttributeKeyClientID = "client_id" 13 | AttributeKeyCounterpartyClientID = "counterparty_client_id" 14 | AttributeKeyCounterpartyConnectionID = "counterparty_connection_id" 15 | ) 16 | 17 | // IBC connection events vars 18 | var ( 19 | EventTypeConnectionOpenInit = "connection_open_init" 20 | EventTypeConnectionOpenTry = "connection_open_try" 21 | EventTypeConnectionOpenAck = "connection_open_ack" 22 | EventTypeConnectionOpenConfirm = "connection_open_confirm" 23 | 24 | AttributeValueCategory = fmt.Sprintf("%s_%s", ibcexported.ModuleName, SubModuleName) 25 | ) 26 | -------------------------------------------------------------------------------- /modules/core/03-connection/types/params.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "errors" 5 | "time" 6 | ) 7 | 8 | // DefaultTimePerBlock is the default value for maximum expected time per block (in nanoseconds). 9 | const DefaultTimePerBlock = 30 * time.Second 10 | 11 | // NewParams creates a new parameter configuration for the ibc connection module 12 | func NewParams(timePerBlock uint64) Params { 13 | return Params{ 14 | MaxExpectedTimePerBlock: timePerBlock, 15 | } 16 | } 17 | 18 | // DefaultParams is the default parameter configuration for the ibc connection module 19 | func DefaultParams() Params { 20 | return NewParams(uint64(DefaultTimePerBlock)) 21 | } 22 | 23 | // Validate ensures MaxExpectedTimePerBlock is non-zero 24 | func (p Params) Validate() error { 25 | if p.MaxExpectedTimePerBlock == 0 { 26 | return errors.New("MaxExpectedTimePerBlock cannot be zero") 27 | } 28 | return nil 29 | } 30 | -------------------------------------------------------------------------------- /modules/core/03-connection/types/params_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "errors" 5 | "testing" 6 | 7 | "github.com/stretchr/testify/require" 8 | 9 | "github.com/cosmos/ibc-go/v10/modules/core/03-connection/types" 10 | ) 11 | 12 | func TestValidateParams(t *testing.T) { 13 | testCases := []struct { 14 | name string 15 | params types.Params 16 | expError error 17 | }{ 18 | {"default params", types.DefaultParams(), nil}, 19 | {"custom params", types.NewParams(10), nil}, 20 | {"blank client", types.NewParams(0), errors.New("MaxExpectedTimePerBlock cannot be zero")}, 21 | } 22 | 23 | for _, tc := range testCases { 24 | 25 | err := tc.params.Validate() 26 | if tc.expError == nil { 27 | require.NoError(t, err, tc.name) 28 | } else { 29 | require.ErrorContains(t, err, tc.expError.Error()) 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /modules/core/04-channel/keeper/ante.go: -------------------------------------------------------------------------------- 1 | package keeper 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | 6 | sdk "github.com/cosmos/cosmos-sdk/types" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" 9 | ) 10 | 11 | // RecvPacketReCheckTx applies replay protection ensuring that when relay messages are 12 | // re-executed in ReCheckTx, we can appropriately filter out redundant relay transactions. 13 | func (k *Keeper) RecvPacketReCheckTx(ctx sdk.Context, packet types.Packet) error { 14 | channel, found := k.GetChannel(ctx, packet.GetDestPort(), packet.GetDestChannel()) 15 | if !found { 16 | return errorsmod.Wrap(types.ErrChannelNotFound, packet.GetDestChannel()) 17 | } 18 | 19 | if err := k.applyReplayProtection(ctx, packet, channel); err != nil { 20 | return err 21 | } 22 | 23 | return nil 24 | } 25 | -------------------------------------------------------------------------------- /modules/core/04-channel/keeper/export_test.go: -------------------------------------------------------------------------------- 1 | package keeper 2 | 3 | /* 4 | This file is to allow for unexported functions to be accessible to the testing package. 5 | */ 6 | 7 | import ( 8 | sdk "github.com/cosmos/cosmos-sdk/types" 9 | 10 | "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" 11 | ) 12 | 13 | // SetRecvStartSequence is a wrapper around setRecvStartSequence to allow the function to be directly called in tests. 14 | func (k *Keeper) SetRecvStartSequence(ctx sdk.Context, portID, channelID string, sequence uint64) { 15 | k.setRecvStartSequence(ctx, portID, channelID, sequence) 16 | } 17 | 18 | // TimeoutExecuted is a wrapper around timeoutExecuted to allow the function to be directly called in tests. 19 | func (k *Keeper) TimeoutExecuted(ctx sdk.Context, channel types.Channel, packet types.Packet) error { 20 | return k.timeoutExecuted(ctx, channel, packet) 21 | } 22 | -------------------------------------------------------------------------------- /modules/core/04-channel/migrations/v10/expected_keepers.go: -------------------------------------------------------------------------------- 1 | package v10 2 | 3 | import ( 4 | "cosmossdk.io/log" 5 | 6 | sdk "github.com/cosmos/cosmos-sdk/types" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" 9 | ) 10 | 11 | type ChannelKeeper interface { 12 | Logger(ctx sdk.Context) log.Logger 13 | SetChannel(ctx sdk.Context, portID, channelID string, channel types.Channel) 14 | } 15 | -------------------------------------------------------------------------------- /modules/core/04-channel/module.go: -------------------------------------------------------------------------------- 1 | package channel 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/04-channel/client/cli" 7 | "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" 8 | ) 9 | 10 | // Name returns the IBC channel ICS name. 11 | func Name() string { 12 | return types.SubModuleName 13 | } 14 | 15 | // GetQueryCmd returns the root query command for IBC channels. 16 | func GetQueryCmd() *cobra.Command { 17 | return cli.GetQueryCmd() 18 | } 19 | -------------------------------------------------------------------------------- /modules/core/04-channel/simulation/genesis.go: -------------------------------------------------------------------------------- 1 | package simulation 2 | 3 | import ( 4 | "math/rand" 5 | 6 | simtypes "github.com/cosmos/cosmos-sdk/types/simulation" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" 9 | ) 10 | 11 | // GenChannelGenesis returns the default channel genesis state. 12 | func GenChannelGenesis(_ *rand.Rand, _ []simtypes.Account) types.GenesisState { 13 | return types.DefaultGenesisState() 14 | } 15 | -------------------------------------------------------------------------------- /modules/core/04-channel/v2/keeper/keeper_test.go: -------------------------------------------------------------------------------- 1 | package keeper_test 2 | 3 | import ( 4 | "testing" 5 | 6 | testifysuite "github.com/stretchr/testify/suite" 7 | 8 | ibctesting "github.com/cosmos/ibc-go/v10/testing" 9 | ) 10 | 11 | func TestKeeperTestSuite(t *testing.T) { 12 | testifysuite.Run(t, new(KeeperTestSuite)) 13 | } 14 | 15 | type KeeperTestSuite struct { 16 | testifysuite.Suite 17 | 18 | coordinator *ibctesting.Coordinator 19 | 20 | // testing chains used for convenience and readability 21 | chainA *ibctesting.TestChain 22 | chainB *ibctesting.TestChain 23 | chainC *ibctesting.TestChain 24 | } 25 | 26 | func (suite *KeeperTestSuite) SetupTest() { 27 | suite.coordinator = ibctesting.NewCoordinator(suite.T(), 3) 28 | suite.chainA = suite.coordinator.GetChain(ibctesting.GetChainID(1)) 29 | suite.chainB = suite.coordinator.GetChain(ibctesting.GetChainID(2)) 30 | suite.chainC = suite.coordinator.GetChain(ibctesting.GetChainID(3)) 31 | } 32 | -------------------------------------------------------------------------------- /modules/core/04-channel/v2/module.go: -------------------------------------------------------------------------------- 1 | package channelv2 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/04-channel/v2/client/cli" 7 | "github.com/cosmos/ibc-go/v10/modules/core/04-channel/v2/types" 8 | ) 9 | 10 | func Name() string { 11 | return types.SubModuleName 12 | } 13 | 14 | // GetQueryCmd returns the root query command for IBC channels v2. 15 | func GetQueryCmd() *cobra.Command { 16 | return cli.GetQueryCmd() 17 | } 18 | 19 | // GetTxCmd returns the root tx command for IBC channels v2. 20 | func GetTxCmd() *cobra.Command { 21 | return cli.NewTxCmd() 22 | } 23 | -------------------------------------------------------------------------------- /modules/core/04-channel/v2/module_test.go: -------------------------------------------------------------------------------- 1 | package channelv2_test 2 | 3 | import ( 4 | "testing" 5 | 6 | testifysuite "github.com/stretchr/testify/suite" 7 | 8 | ibctesting "github.com/cosmos/ibc-go/v10/testing" 9 | ) 10 | 11 | func TestModuleTestSuite(t *testing.T) { 12 | testifysuite.Run(t, new(ModuleTestSuite)) 13 | } 14 | 15 | type ModuleTestSuite struct { 16 | testifysuite.Suite 17 | 18 | coordinator *ibctesting.Coordinator 19 | 20 | // testing chains used for convenience and readability 21 | chainA *ibctesting.TestChain 22 | chainB *ibctesting.TestChain 23 | chainC *ibctesting.TestChain 24 | } 25 | 26 | func (suite *ModuleTestSuite) SetupTest() { 27 | suite.coordinator = ibctesting.NewCoordinator(suite.T(), 3) 28 | suite.chainA = suite.coordinator.GetChain(ibctesting.GetChainID(1)) 29 | suite.chainB = suite.coordinator.GetChain(ibctesting.GetChainID(2)) 30 | suite.chainC = suite.coordinator.GetChain(ibctesting.GetChainID(3)) 31 | } 32 | -------------------------------------------------------------------------------- /modules/core/04-channel/v2/types/codec.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | codectypes "github.com/cosmos/cosmos-sdk/codec/types" 5 | sdk "github.com/cosmos/cosmos-sdk/types" 6 | "github.com/cosmos/cosmos-sdk/types/msgservice" 7 | ) 8 | 9 | // RegisterInterfaces register the ibc channel submodule interfaces to protobuf 10 | // Any. 11 | func RegisterInterfaces(registry codectypes.InterfaceRegistry) { 12 | registry.RegisterImplementations( 13 | (*sdk.Msg)(nil), 14 | &MsgSendPacket{}, 15 | &MsgRecvPacket{}, 16 | &MsgTimeout{}, 17 | &MsgAcknowledgement{}, 18 | ) 19 | 20 | msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) 21 | } 22 | -------------------------------------------------------------------------------- /modules/core/04-channel/v2/types/keys.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | sdk "github.com/cosmos/cosmos-sdk/types" 5 | ) 6 | 7 | const ( 8 | // SubModuleName defines the channelv2 module name. 9 | SubModuleName = "channelv2" 10 | 11 | // KeyAsyncPacket defines the key to store the async packet. 12 | KeyAsyncPacket = "async_packet" 13 | ) 14 | 15 | // AsyncPacketKey returns the key under which the packet is stored 16 | // if the receiving application returns an async acknowledgement. 17 | func AsyncPacketKey(clientID string, sequence uint64) []byte { 18 | return append(AsyncPacketPrefixKey(clientID), sdk.Uint64ToBigEndian(sequence)...) 19 | } 20 | 21 | // AsyncPacketPrefixKey returns the prefix key under which all async packets are stored 22 | // for a given clientID. 23 | func AsyncPacketPrefixKey(clientID string) []byte { 24 | return append([]byte(clientID), []byte(KeyAsyncPacket)...) 25 | } 26 | -------------------------------------------------------------------------------- /modules/core/04-channel/v2/types/merkle.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "slices" 5 | 6 | commitmenttypesv2 "github.com/cosmos/ibc-go/v10/modules/core/23-commitment/types/v2" 7 | ) 8 | 9 | // BuildMerklePath takes the merkle path prefix and an ICS24 path 10 | // and builds a new path by appending the ICS24 path to the last element of the merkle path prefix. 11 | func BuildMerklePath(prefix [][]byte, path []byte) commitmenttypesv2.MerklePath { 12 | prefixLength := len(prefix) 13 | if prefixLength == 0 { 14 | panic("cannot build merkle path with empty prefix") 15 | } 16 | 17 | // copy prefix to avoid modifying the original slice 18 | fullPath := slices.Clone(prefix) 19 | // append path to last element 20 | fullPath[prefixLength-1] = append(fullPath[prefixLength-1], path...) 21 | return commitmenttypesv2.NewMerklePath(fullPath...) 22 | } 23 | -------------------------------------------------------------------------------- /modules/core/05-port/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package port implements the ICS 05 - Port Allocation specification 3 | (https://github.com/cosmos/ibc/tree/main/spec/core/ics-005-port-allocation). This 4 | concrete implementation defines types and methods with which modules can bind 5 | to uniquely named ports allocated by the IBC handler. 6 | */ 7 | package port 8 | -------------------------------------------------------------------------------- /modules/core/05-port/keeper/keeper_test.go: -------------------------------------------------------------------------------- 1 | package keeper_test 2 | 3 | import ( 4 | "testing" 5 | 6 | testifysuite "github.com/stretchr/testify/suite" 7 | 8 | sdk "github.com/cosmos/cosmos-sdk/types" 9 | 10 | "github.com/cosmos/ibc-go/v10/modules/core/05-port/keeper" 11 | "github.com/cosmos/ibc-go/v10/testing/simapp" 12 | ) 13 | 14 | type KeeperTestSuite struct { 15 | testifysuite.Suite 16 | 17 | ctx sdk.Context 18 | keeper *keeper.Keeper 19 | } 20 | 21 | func (suite *KeeperTestSuite) SetupTest() { 22 | isCheckTx := false 23 | app := simapp.Setup(suite.T(), isCheckTx) 24 | 25 | suite.ctx = app.NewContext(isCheckTx) 26 | suite.keeper = app.IBCKeeper.PortKeeper 27 | } 28 | 29 | func TestKeeperTestSuite(t *testing.T) { 30 | testifysuite.Run(t, new(KeeperTestSuite)) 31 | } 32 | -------------------------------------------------------------------------------- /modules/core/05-port/module.go: -------------------------------------------------------------------------------- 1 | package port 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" 7 | "github.com/cosmos/ibc-go/v10/modules/core/client/cli" 8 | ) 9 | 10 | // Name returns the IBC port ICS name. 11 | func Name() string { 12 | return types.SubModuleName 13 | } 14 | 15 | // GetQueryCmd returns the root query command for IBC ports. 16 | func GetQueryCmd() *cobra.Command { 17 | return cli.GetQueryCmd() 18 | } 19 | -------------------------------------------------------------------------------- /modules/core/05-port/types/errors.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | ) 6 | 7 | // IBC port sentinel errors 8 | var ( 9 | ErrPortExists = errorsmod.Register(SubModuleName, 2, "port is already binded") 10 | ErrPortNotFound = errorsmod.Register(SubModuleName, 3, "port not found") 11 | ErrInvalidPort = errorsmod.Register(SubModuleName, 4, "invalid port") 12 | ErrInvalidRoute = errorsmod.Register(SubModuleName, 5, "route not found") 13 | ) 14 | -------------------------------------------------------------------------------- /modules/core/05-port/types/keys.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | const ( 4 | // SubModuleName defines the IBC port name 5 | SubModuleName = "port" 6 | 7 | // StoreKey is the store key string for IBC ports 8 | StoreKey = SubModuleName 9 | 10 | // RouterKey is the message route for IBC ports 11 | RouterKey = SubModuleName 12 | 13 | // QuerierRoute is the querier route for IBC ports 14 | QuerierRoute = SubModuleName 15 | ) 16 | -------------------------------------------------------------------------------- /modules/core/23-commitment/types/errors.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | ) 6 | 7 | // SubModuleName is the error codespace 8 | const SubModuleName string = "commitment" 9 | 10 | // IBC connection sentinel errors 11 | var ( 12 | ErrInvalidProof = errorsmod.Register(SubModuleName, 2, "invalid proof") 13 | ErrInvalidPrefix = errorsmod.Register(SubModuleName, 3, "invalid prefix") 14 | ErrInvalidMerkleProof = errorsmod.Register(SubModuleName, 4, "invalid merkle proof") 15 | ) 16 | -------------------------------------------------------------------------------- /modules/core/24-host/channel_keys.go: -------------------------------------------------------------------------------- 1 | package host 2 | 3 | import "fmt" 4 | 5 | const ( 6 | KeyChannelEndPrefix = "channelEnds" 7 | KeyChannelPrefix = "channels" 8 | ) 9 | 10 | // ICS04 11 | // The following paths are the keys to the store as defined in https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#store-paths 12 | 13 | // ChannelKey returns the store key for a particular channel 14 | func ChannelKey(portID, channelID string) []byte { 15 | return fmt.Appendf(nil, "%s/%s", KeyChannelEndPrefix, channelPath(portID, channelID)) 16 | } 17 | 18 | func channelPath(portID, channelID string) string { 19 | return fmt.Sprintf("%s/%s/%s/%s", KeyPortPrefix, portID, KeyChannelPrefix, channelID) 20 | } 21 | -------------------------------------------------------------------------------- /modules/core/24-host/connection_keys.go: -------------------------------------------------------------------------------- 1 | package host 2 | 3 | import "fmt" 4 | 5 | const KeyConnectionPrefix = "connections" 6 | 7 | // ICS03 8 | // The following paths are the keys to the store as defined in https://github.com/cosmos/ibc/blob/master/spec/core/ics-003-connection-semantics#store-paths 9 | 10 | // ClientConnectionsKey returns the store key for the connections of a given client 11 | func ClientConnectionsKey(clientID string) []byte { 12 | return FullClientKey(clientID, []byte(KeyConnectionPrefix)) 13 | } 14 | 15 | // ConnectionKey returns the store key for a particular connection 16 | func ConnectionKey(connectionID string) []byte { 17 | return fmt.Appendf(nil, "%s/%s", KeyConnectionPrefix, connectionID) 18 | } 19 | -------------------------------------------------------------------------------- /modules/core/24-host/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | 24-host is an implementation of ICS 24. 3 | 4 | The storage path supported are defined in ICS 24 (https://github.com/cosmos/ibc/blob/master/spec/core/ics-024-host-requirements#path-space). 5 | 6 | Hostname validation is implemented as defined in ICS 24 (https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements). 7 | */ 8 | package host 9 | -------------------------------------------------------------------------------- /modules/core/24-host/errors.go: -------------------------------------------------------------------------------- 1 | package host 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | ) 6 | 7 | // SubModuleName defines the ICS 24 host 8 | const SubModuleName = "host" 9 | 10 | // IBC client sentinel errors 11 | var ( 12 | ErrInvalidID = errorsmod.Register(SubModuleName, 2, "invalid identifier") 13 | ErrInvalidPath = errorsmod.Register(SubModuleName, 3, "invalid path") 14 | ErrInvalidPacket = errorsmod.Register(SubModuleName, 4, "invalid packet") 15 | ) 16 | -------------------------------------------------------------------------------- /modules/core/24-host/port_keys.go: -------------------------------------------------------------------------------- 1 | package host 2 | 3 | const ( 4 | KeyPortPrefix = "ports" 5 | ) 6 | 7 | // ICS05 8 | // The following paths are the keys to the store as defined in https://github.com/cosmos/ibc/tree/master/spec/core/ics-005-port-allocation#store-paths 9 | -------------------------------------------------------------------------------- /modules/core/api/api_test.go: -------------------------------------------------------------------------------- 1 | package api_test 2 | 3 | import ( 4 | "testing" 5 | 6 | testifysuite "github.com/stretchr/testify/suite" 7 | ) 8 | 9 | type APITestSuite struct { 10 | testifysuite.Suite 11 | } 12 | 13 | func TestApiTestSuite(t *testing.T) { 14 | testifysuite.Run(t, new(APITestSuite)) 15 | } 16 | -------------------------------------------------------------------------------- /modules/core/exported/commitment.go: -------------------------------------------------------------------------------- 1 | package exported 2 | 3 | // ICS 023 Types Implementation 4 | // 5 | // This file includes types defined under 6 | // https://github.com/cosmos/ibc/tree/master/spec/core/ics-023-vector-commitments 7 | 8 | // spec:Path and spec:Value are defined as bytestring 9 | 10 | // Root implements spec:CommitmentRoot. 11 | // A root is constructed from a set of key-value pairs, 12 | // and the inclusion or non-inclusion of an arbitrary key-value pair 13 | // can be proven with the proof. 14 | type Root interface { 15 | GetHash() []byte 16 | Empty() bool 17 | } 18 | 19 | // Prefix implements spec:CommitmentPrefix. 20 | // Prefix represents the common "prefix" that a set of keys shares. 21 | type Prefix interface { 22 | Bytes() []byte 23 | Empty() bool 24 | } 25 | 26 | // Path implements spec:CommitmentPath. 27 | // A path is the additional information provided to the verification function. 28 | type Path interface { 29 | Empty() bool 30 | } 31 | -------------------------------------------------------------------------------- /modules/core/exported/connection.go: -------------------------------------------------------------------------------- 1 | package exported 2 | 3 | // LocalhostConnectionID is the sentinel connection ID for the localhost connection. 4 | const LocalhostConnectionID string = "connection-localhost" 5 | -------------------------------------------------------------------------------- /modules/core/exported/module.go: -------------------------------------------------------------------------------- 1 | package exported 2 | 3 | const ( 4 | // ModuleName is the name of the IBC module 5 | ModuleName = "ibc" 6 | // StoreKey is the string store representation 7 | StoreKey = ModuleName 8 | // QuerierRoute is the querier route for the IBC module 9 | QuerierRoute = ModuleName 10 | // RouterKey is the msg router key for the IBC module 11 | RouterKey = ModuleName 12 | ) 13 | -------------------------------------------------------------------------------- /modules/core/internal/errors/errors.go: -------------------------------------------------------------------------------- 1 | package errors 2 | 3 | import ( 4 | sdk "github.com/cosmos/cosmos-sdk/types" 5 | 6 | coretypes "github.com/cosmos/ibc-go/v10/modules/core/types" 7 | ) 8 | 9 | // ConvertToErrorEvents converts all events to error events by appending the 10 | // error attribute prefix to each event's attribute key. 11 | func ConvertToErrorEvents(events sdk.Events) sdk.Events { 12 | if events == nil { 13 | return nil 14 | } 15 | 16 | newEvents := make(sdk.Events, len(events)) 17 | for i, event := range events { 18 | newEvents[i] = sdk.NewEvent(coretypes.ErrorAttributeKeyPrefix + event.Type) 19 | for _, attribute := range event.Attributes { 20 | newEvents[i] = newEvents[i].AppendAttributes(sdk.NewAttribute(coretypes.ErrorAttributeKeyPrefix+attribute.Key, attribute.Value)) 21 | } 22 | } 23 | 24 | return newEvents 25 | } 26 | -------------------------------------------------------------------------------- /modules/core/metrics/metrics.go: -------------------------------------------------------------------------------- 1 | package metrics 2 | 3 | // Prometheus metric labels. 4 | const ( 5 | // 02-client labels 6 | 7 | LabelClientType = "client_type" 8 | LabelClientID = "client_id" 9 | LabelUpdateType = "update_type" 10 | LabelMsgType = "msg_type" 11 | 12 | // Message server labels 13 | 14 | LabelSourcePort = "source_port" 15 | LabelSourceChannel = "source_channel" 16 | LabelDestinationPort = "destination_port" 17 | LabelDestinationChannel = "destination_channel" 18 | LabelTimeoutType = "timeout_type" 19 | LabelDenom = "denom" 20 | LabelSource = "source" 21 | ) 22 | -------------------------------------------------------------------------------- /modules/core/types/events.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | const ErrorAttributeKeyPrefix = "ibccallbackerror-" 4 | -------------------------------------------------------------------------------- /modules/core/types/expected_interfaces.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | sdk "github.com/cosmos/cosmos-sdk/types" 5 | paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" 6 | ) 7 | 8 | // ParamSubspace defines the expected Subspace interface for module parameters. 9 | type ParamSubspace interface { 10 | GetParamSet(ctx sdk.Context, ps paramtypes.ParamSet) 11 | } 12 | -------------------------------------------------------------------------------- /modules/light-clients/06-solomachine/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, 3 | Header and Misbehaviour types for the Solo Machine light client. 4 | This implementation is based off the ICS 06 specification 5 | (https://github.com/cosmos/ibc/tree/master/spec/client/ics-006-solo-machine-client) 6 | 7 | Note that client identifiers are expected to be in the form: 06-solomachine-{N}. 8 | Client identifiers are generated and validated by core IBC, unexpected client identifiers will result in errors. 9 | */ 10 | package solomachine 11 | -------------------------------------------------------------------------------- /modules/light-clients/06-solomachine/errors.go: -------------------------------------------------------------------------------- 1 | package solomachine 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | ) 6 | 7 | var ( 8 | ErrInvalidHeader = errorsmod.Register(ModuleName, 2, "invalid header") 9 | ErrInvalidSequence = errorsmod.Register(ModuleName, 3, "invalid sequence") 10 | ErrInvalidSignatureAndData = errorsmod.Register(ModuleName, 4, "invalid signature and data") 11 | ErrSignatureVerificationFailed = errorsmod.Register(ModuleName, 5, "signature verification failed") 12 | ErrInvalidProof = errorsmod.Register(ModuleName, 6, "invalid solo machine proof") 13 | ) 14 | -------------------------------------------------------------------------------- /modules/light-clients/06-solomachine/keys.go: -------------------------------------------------------------------------------- 1 | package solomachine 2 | 3 | const ( 4 | ModuleName = "06-solomachine" 5 | ) 6 | -------------------------------------------------------------------------------- /modules/light-clients/07-tendermint/codec.go: -------------------------------------------------------------------------------- 1 | package tendermint 2 | 3 | import ( 4 | codectypes "github.com/cosmos/cosmos-sdk/codec/types" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/exported" 7 | ) 8 | 9 | // RegisterInterfaces registers the tendermint concrete client-related 10 | // implementations and interfaces. 11 | func RegisterInterfaces(registry codectypes.InterfaceRegistry) { 12 | registry.RegisterImplementations( 13 | (*exported.ClientState)(nil), 14 | &ClientState{}, 15 | ) 16 | registry.RegisterImplementations( 17 | (*exported.ConsensusState)(nil), 18 | &ConsensusState{}, 19 | ) 20 | registry.RegisterImplementations( 21 | (*exported.ClientMessage)(nil), 22 | &Header{}, 23 | ) 24 | registry.RegisterImplementations( 25 | (*exported.ClientMessage)(nil), 26 | &Misbehaviour{}, 27 | ) 28 | } 29 | -------------------------------------------------------------------------------- /modules/light-clients/07-tendermint/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package tendermint implements a concrete LightClientModule, ClientState, ConsensusState, 3 | Header, Misbehaviour and types for the Tendermint consensus light client. 4 | This implementation is based off the ICS 07 specification 5 | (https://github.com/cosmos/ibc/tree/main/spec/client/ics-007-tendermint-client) 6 | 7 | Note that client identifiers are expected to be in the form: 07-tendermint-{N}. 8 | Client identifiers are generated and validated by core IBC, unexpected client identifiers will result in errors. 9 | */ 10 | package tendermint 11 | -------------------------------------------------------------------------------- /modules/light-clients/07-tendermint/fraction.go: -------------------------------------------------------------------------------- 1 | package tendermint 2 | 3 | import ( 4 | cmtmath "github.com/cometbft/cometbft/libs/math" 5 | "github.com/cometbft/cometbft/light" 6 | ) 7 | 8 | // DefaultTrustLevel is the tendermint light client default trust level 9 | var DefaultTrustLevel = NewFractionFromTm(light.DefaultTrustLevel) 10 | 11 | // NewFractionFromTm returns a new Fraction instance from a tmmath.Fraction 12 | func NewFractionFromTm(f cmtmath.Fraction) Fraction { 13 | return Fraction{ 14 | Numerator: f.Numerator, 15 | Denominator: f.Denominator, 16 | } 17 | } 18 | 19 | // ToTendermint converts Fraction to tmmath.Fraction 20 | func (f Fraction) ToTendermint() cmtmath.Fraction { 21 | return cmtmath.Fraction{ 22 | Numerator: f.Numerator, 23 | Denominator: f.Denominator, 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /modules/light-clients/07-tendermint/keys.go: -------------------------------------------------------------------------------- 1 | package tendermint 2 | 3 | const ( 4 | ModuleName = "07-tendermint" 5 | ) 6 | -------------------------------------------------------------------------------- /modules/light-clients/07-tendermint/migrations/expected_keepers.go: -------------------------------------------------------------------------------- 1 | package migrations 2 | 3 | import ( 4 | "cosmossdk.io/log" 5 | storetypes "cosmossdk.io/store/types" 6 | 7 | sdk "github.com/cosmos/cosmos-sdk/types" 8 | 9 | "github.com/cosmos/ibc-go/v10/modules/core/exported" 10 | ) 11 | 12 | // ClientKeeper expected account IBC client keeper 13 | type ClientKeeper interface { 14 | GetClientState(ctx sdk.Context, clientID string) (exported.ClientState, bool) 15 | IterateClientStates(ctx sdk.Context, prefix []byte, cb func(string, exported.ClientState) bool) 16 | ClientStore(ctx sdk.Context, clientID string) storetypes.KVStore 17 | Logger(ctx sdk.Context) log.Logger 18 | } 19 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/blsverifier/crypto.go: -------------------------------------------------------------------------------- 1 | package blsverifier 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/prysmaticlabs/prysm/v5/crypto/bls" 7 | ) 8 | 9 | func AggregatePublicKeys(publicKeys [][]byte) (bls.PublicKey, error) { 10 | return bls.AggregatePublicKeys(publicKeys) 11 | } 12 | 13 | func VerifySignature(signature []byte, message [32]byte, publicKeys [][]byte) (bool, error) { 14 | aggregatedPublicKey, err := AggregatePublicKeys(publicKeys) 15 | if err != nil { 16 | return false, fmt.Errorf("failed to aggregate public keys %v", err) 17 | } 18 | return bls.VerifySignature(signature, message, aggregatedPublicKey) 19 | } 20 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/keeper/export_test.go: -------------------------------------------------------------------------------- 1 | package keeper 2 | 3 | import sdk "github.com/cosmos/cosmos-sdk/types" 4 | 5 | // MigrateContractCode is a wrapper around k.migrateContractCode to allow the method to be directly called in tests. 6 | func (k Keeper) MigrateContractCode(ctx sdk.Context, clientID string, newChecksum, migrateMsg []byte) error { 7 | return k.migrateContractCode(ctx, clientID, newChecksum, migrateMsg) 8 | } 9 | 10 | // GetQueryPlugins is a wrapper around k.getQueryPlugins to allow the method to be directly called in tests. 11 | func (k Keeper) GetQueryPlugins() QueryPlugins { 12 | return k.getQueryPlugins() 13 | } 14 | 15 | // SetQueryPlugins is a wrapper around k.setQueryPlugins to allow the method to be directly called in tests. 16 | func (k *Keeper) SetQueryPlugins(plugins QueryPlugins) { 17 | k.setQueryPlugins(plugins) 18 | } 19 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/keeper/options.go: -------------------------------------------------------------------------------- 1 | package keeper 2 | 3 | // Option is an extension point to instantiate keeper with non default values 4 | type Option interface { 5 | apply(*Keeper) 6 | } 7 | 8 | type optsFn func(*Keeper) 9 | 10 | func (f optsFn) apply(keeper *Keeper) { 11 | f(keeper) 12 | } 13 | 14 | // WithQueryPlugins is an optional constructor parameter to pass custom query plugins for wasmVM requests. 15 | // Missing fields will be filled with default queriers. 16 | func WithQueryPlugins(plugins *QueryPlugins) Option { 17 | return optsFn(func(k *Keeper) { 18 | currentPlugins := k.getQueryPlugins() 19 | newPlugins := currentPlugins.Merge(plugins) 20 | 21 | k.setQueryPlugins(newPlugins) 22 | }) 23 | } 24 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/testing/simapp/README.md: -------------------------------------------------------------------------------- 1 | # 08-Wasm Testing SimApp 2 | 3 | This testing directory is a duplicate of the ibc-go testing directory. 4 | It is only here as a way of creating a separate SimApp binary to avoid introducing a dependency on the 08-wasm 5 | module from within ibc-go. 6 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/testing/simapp/encoding.go: -------------------------------------------------------------------------------- 1 | package simapp 2 | 3 | import ( 4 | "github.com/cosmos/cosmos-sdk/std" 5 | 6 | simappparams "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/v10/testing/simapp/params" 7 | ) 8 | 9 | // MakeTestEncodingConfig creates an EncodingConfig for testing. This function 10 | // should be used only in tests or when creating a new app instance (NewApp*()). 11 | // App user shouldn't create new codecs - use the app.AppCodec instead. 12 | // [DEPRECATED] 13 | func MakeTestEncodingConfig() simappparams.EncodingConfig { 14 | encodingConfig := simappparams.MakeTestEncodingConfig() 15 | std.RegisterLegacyAminoCodec(encodingConfig.Amino) 16 | std.RegisterInterfaces(encodingConfig.InterfaceRegistry) 17 | return encodingConfig 18 | } 19 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/testing/simapp/genesis.go: -------------------------------------------------------------------------------- 1 | package simapp 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // The genesis state of the blockchain is represented here as a map of raw json 8 | // messages key'd by an identifier string. 9 | // The identifier is used to determine which module genesis information belongs 10 | // to so it may be appropriately routed during init chain. 11 | // Within this application default genesis information is retrieved from 12 | // the ModuleBasicManager which populates json from each BasicModule 13 | // object provided to it during init. 14 | type GenesisState map[string]json.RawMessage 15 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/testing/simapp/params/amino.go: -------------------------------------------------------------------------------- 1 | //go:build test_amino 2 | // +build test_amino 3 | 4 | package params 5 | 6 | import ( 7 | "github.com/cosmos/cosmos-sdk/codec" 8 | "github.com/cosmos/cosmos-sdk/codec/types" 9 | "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" 10 | ) 11 | 12 | // MakeTestEncodingConfig creates an EncodingConfig for an amino based test configuration. 13 | // This function should be used only internally (in the SDK). 14 | // App user shouldn't create new codecs - use the app.AppCodec instead. 15 | // [DEPRECATED] 16 | func MakeTestEncodingConfig() EncodingConfig { 17 | cdc := codec.NewLegacyAmino() 18 | interfaceRegistry := types.NewInterfaceRegistry() 19 | marshaler := codec.NewAminoCodec(cdc) 20 | 21 | return EncodingConfig{ 22 | InterfaceRegistry: interfaceRegistry, 23 | Marshaler: marshaler, 24 | TxConfig: legacytx.StdTxConfig{Cdc: cdc}, 25 | Amino: cdc, 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/testing/simapp/params/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package params defines the simulation parameters in the simapp. 3 | 4 | It contains the default weights used for each transaction used on the module's 5 | simulation. These weights define the chance for a transaction to be simulated at 6 | any given operation. 7 | 8 | You can replace the default values for the weights by providing a params.json 9 | file with the weights defined for each of the transaction operations: 10 | 11 | { 12 | "op_weight_msg_send": 60, 13 | "op_weight_msg_delegate": 100, 14 | } 15 | 16 | In the example above, the `MsgSend` has 60% chance to be simulated, while the 17 | `MsgDelegate` will always be simulated. 18 | */ 19 | package params 20 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/testing/simapp/params/encoding.go: -------------------------------------------------------------------------------- 1 | package params 2 | 3 | import ( 4 | "github.com/cosmos/cosmos-sdk/client" 5 | "github.com/cosmos/cosmos-sdk/codec" 6 | "github.com/cosmos/cosmos-sdk/codec/types" 7 | ) 8 | 9 | // EncodingConfig specifies the concrete encoding types to use for a given app. 10 | // This is provided for compatibility between protobuf and amino implementations. 11 | type EncodingConfig struct { 12 | InterfaceRegistry types.InterfaceRegistry 13 | Codec codec.Codec 14 | TxConfig client.TxConfig 15 | Amino *codec.LegacyAmino 16 | } 17 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/testing/simapp/params/proto.go: -------------------------------------------------------------------------------- 1 | //go:build !test_amino 2 | 3 | package params 4 | 5 | import ( 6 | "github.com/cosmos/cosmos-sdk/codec" 7 | "github.com/cosmos/cosmos-sdk/codec/types" 8 | "github.com/cosmos/cosmos-sdk/x/auth/tx" 9 | ) 10 | 11 | // MakeTestEncodingConfig creates an EncodingConfig for a non-amino based test configuration. 12 | // This function should be used only internally (in the SDK). 13 | // App user shouldn't create new codecs - use the app.AppCodec instead. 14 | // [DEPRECATED] 15 | func MakeTestEncodingConfig() EncodingConfig { 16 | cdc := codec.NewLegacyAmino() 17 | interfaceRegistry := types.NewInterfaceRegistry() 18 | protoCdc := codec.NewProtoCodec(interfaceRegistry) 19 | 20 | return EncodingConfig{ 21 | InterfaceRegistry: interfaceRegistry, 22 | Codec: protoCdc, 23 | TxConfig: tx.NewTxConfig(protoCdc, tx.DefaultSignModes), 24 | Amino: cdc, 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/testing/simapp/simd/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "os" 5 | 6 | "cosmossdk.io/log" 7 | 8 | svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" 9 | 10 | "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/v10/testing/simapp" 11 | "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/v10/testing/simapp/simd/cmd" 12 | ) 13 | 14 | func main() { 15 | rootCmd := cmd.NewRootCmd() 16 | if err := svrcmd.Execute(rootCmd, "", simapp.DefaultNodeHome); err != nil { 17 | log.NewLogger(rootCmd.OutOrStderr()).Error("failure when running app", "err", err) 18 | os.Exit(1) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/types/client_message.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | 6 | "github.com/cosmos/ibc-go/v10/modules/core/exported" 7 | ) 8 | 9 | var _ exported.ClientMessage = &ClientMessage{} 10 | 11 | // ClientType is a Wasm light client. 12 | func (ClientMessage) ClientType() string { 13 | return Wasm 14 | } 15 | 16 | // ValidateBasic defines a basic validation for the wasm client message. 17 | func (c ClientMessage) ValidateBasic() error { 18 | if len(c.Data) == 0 { 19 | return errorsmod.Wrap(ErrInvalidData, "data cannot be empty") 20 | } 21 | 22 | return nil 23 | } 24 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/types/events.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | // IBC 08-wasm events 4 | const ( 5 | // EventTypeStoreWasmCode defines the event type for bytecode storage 6 | EventTypeStoreWasmCode = "store_wasm_code" 7 | // EventTypeMigrateContract defines the event type for a contract migration 8 | EventTypeMigrateContract = "migrate_contract" 9 | 10 | // AttributeKeyWasmChecksum denotes the checksum of the wasm code that was stored or migrated 11 | AttributeKeyWasmChecksum = "wasm_checksum" 12 | // AttributeKeyClientID denotes the client identifier of the wasm client 13 | AttributeKeyClientID = "client_id" 14 | // AttributeKeyNewChecksum denotes the checksum of the new wasm code. 15 | AttributeKeyNewChecksum = "new_checksum" 16 | 17 | AttributeValueCategory = ModuleName 18 | ) 19 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/types/expected_keepers.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | storetypes "cosmossdk.io/store/types" 5 | 6 | sdk "github.com/cosmos/cosmos-sdk/types" 7 | 8 | "github.com/cosmos/ibc-go/v10/modules/core/exported" 9 | ) 10 | 11 | // ClientKeeper defines the expected client keeper 12 | type ClientKeeper interface { 13 | ClientStore(ctx sdk.Context, clientID string) storetypes.KVStore 14 | GetClientState(ctx sdk.Context, clientID string) (exported.ClientState, bool) 15 | SetClientState(ctx sdk.Context, clientID string, clientState exported.ClientState) 16 | } 17 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/types/genesis.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | errorsmod "cosmossdk.io/errors" 5 | ) 6 | 7 | // NewGenesisState creates an 08-wasm GenesisState instance. 8 | func NewGenesisState(contracts []Contract) *GenesisState { 9 | return &GenesisState{Contracts: contracts} 10 | } 11 | 12 | // Validate performs basic genesis state validation returning an error upon any 13 | // failure. 14 | func (gs GenesisState) Validate() error { 15 | for _, contract := range gs.Contracts { 16 | if err := ValidateWasmCode(contract.CodeBytes); err != nil { 17 | return errorsmod.Wrap(err, "wasm bytecode validation failed") 18 | } 19 | } 20 | 21 | return nil 22 | } 23 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/types/keys.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import "cosmossdk.io/collections" 4 | 5 | const ( 6 | // ModuleName for the wasm client 7 | ModuleName = "08-wasm" 8 | 9 | // StoreKey is the store key string for 08-wasm 10 | StoreKey = ModuleName 11 | 12 | // Wasm is the client type for IBC light clients created using 08-wasm 13 | Wasm = ModuleName 14 | 15 | // KeyChecksums is the key under which all checksums are stored 16 | // Deprecated: in favor of collections.KeySet 17 | KeyChecksums = "checksums" 18 | ) 19 | 20 | // ChecksumsKey is the key under which all checksums are stored 21 | var ChecksumsKey = collections.NewPrefix(0) 22 | -------------------------------------------------------------------------------- /modules/light-clients/08-wasm/types/wasm_vm.go: -------------------------------------------------------------------------------- 1 | //go:build cgo && !nolink_libwasmvm 2 | 3 | package types 4 | 5 | import wasmvm "github.com/CosmWasm/wasmvm/v2" 6 | 7 | var _ WasmEngine = (*wasmvm.VM)(nil) 8 | -------------------------------------------------------------------------------- /modules/light-clients/09-localhost/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, 3 | Header and Misbehaviour types for the Localhost light client. 4 | This implementation is based off the ICS 09 specification 5 | (https://github.com/cosmos/ibc/blob/main/spec/client/ics-009-loopback-cilent) 6 | 7 | Note the client identifier is expected to be: 09-localhost. 8 | This is validated by core IBC in the 02-client submodule. 9 | */ 10 | package localhost 11 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ibc-go", 3 | "lockfileVersion": 3, 4 | "requires": true, 5 | "packages": {} 6 | } 7 | -------------------------------------------------------------------------------- /proto/buf.gen.gogo.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | plugins: 3 | - name: gocosmos 4 | out: .. 5 | opt: plugins=grpc,Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types 6 | - name: grpc-gateway 7 | out: .. 8 | opt: logtostderr=true,allow_colon_final_segments=true 9 | -------------------------------------------------------------------------------- /proto/buf.gen.swagger.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | plugins: 3 | - name: swagger 4 | out: ../tmp-swagger-gen 5 | opt: logtostderr=true,fqn_for_swagger_name=true,simple_operation_ids=true 6 | -------------------------------------------------------------------------------- /proto/buf.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | name: buf.build/cosmos/ibc 3 | deps: 4 | - buf.build/cosmos/cosmos-sdk:aa25660f4ff746388669ce36b3778442 5 | - buf.build/cosmos/cosmos-proto:1935555c206d4afb9e94615dfd0fad31 6 | - buf.build/cosmos/gogo-proto:a14993478f40695898ed8a86931094b6656e8a5d 7 | - buf.build/googleapis/googleapis:8d7204855ec14631a499bd7393ce1970 8 | - buf.build/cosmos/ics23:b1abd8678aab07165efd453c96796a179eb3131f 9 | breaking: 10 | use: 11 | - FILE 12 | lint: 13 | use: 14 | - DEFAULT 15 | - COMMENTS 16 | - FILE_LOWER_SNAKE_CASE 17 | except: 18 | - UNARY_RPC 19 | - COMMENT_FIELD 20 | - SERVICE_SUFFIX 21 | - PACKAGE_VERSION_SUFFIX 22 | - RPC_REQUEST_STANDARD_NAME 23 | - RPC_RESPONSE_STANDARD_NAME 24 | -------------------------------------------------------------------------------- /proto/ibc/applications/interchain_accounts/controller/v1/controller.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.applications.interchain_accounts.controller.v1; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/types"; 6 | 7 | // Params defines the set of on-chain interchain accounts parameters. 8 | // The following parameters may be used to disable the controller submodule. 9 | message Params { 10 | // controller_enabled enables or disables the controller submodule. 11 | bool controller_enabled = 1; 12 | } 13 | -------------------------------------------------------------------------------- /proto/ibc/applications/interchain_accounts/v1/account.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.applications.interchain_accounts.v1; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types"; 6 | 7 | import "cosmos_proto/cosmos.proto"; 8 | import "gogoproto/gogo.proto"; 9 | import "cosmos/auth/v1beta1/auth.proto"; 10 | 11 | // An InterchainAccount is defined as a BaseAccount & the address of the account owner on the controller chain 12 | message InterchainAccount { 13 | option (gogoproto.goproto_getters) = false; 14 | option (gogoproto.goproto_stringer) = false; 15 | option (cosmos_proto.implements_interface) = "ibc.applications.interchain_accounts.v1.InterchainAccountI"; 16 | 17 | cosmos.auth.v1beta1.BaseAccount base_account = 1 [(gogoproto.embed) = true]; 18 | string account_owner = 2; 19 | } 20 | -------------------------------------------------------------------------------- /proto/ibc/applications/transfer/v1/denomtrace.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.applications.transfer.v1; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types"; 6 | 7 | // DenomTrace contains the base denomination for ICS20 fungible tokens and the 8 | // source tracing information path. 9 | message DenomTrace { 10 | option deprecated = true; 11 | // path defines the chain of port/channel identifiers used for tracing the 12 | // source of the fungible token. 13 | string path = 1; 14 | // base denomination of the relayed fungible token. 15 | string base_denom = 2; 16 | } 17 | -------------------------------------------------------------------------------- /proto/ibc/applications/transfer/v1/packet.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.applications.transfer.v1; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types"; 6 | 7 | // FungibleTokenPacketData defines a struct for the packet payload 8 | // See FungibleTokenPacketData spec: 9 | // https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures 10 | message FungibleTokenPacketData { 11 | // the token denomination to be transferred 12 | string denom = 1; 13 | // the token amount to be transferred 14 | string amount = 2; 15 | // the sender address 16 | string sender = 3; 17 | // the recipient address on the destination chain 18 | string receiver = 4; 19 | // optional memo 20 | string memo = 5; 21 | } 22 | -------------------------------------------------------------------------------- /proto/ibc/applications/transfer/v1/transfer.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.applications.transfer.v1; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types"; 6 | 7 | // Params defines the set of IBC transfer parameters. 8 | // NOTE: To prevent a single token from being transferred, set the 9 | // TransfersEnabled parameter to true and then set the bank module's SendEnabled 10 | // parameter for the denomination to false. 11 | message Params { 12 | // send_enabled enables or disables all cross-chain token transfers from this 13 | // chain. 14 | bool send_enabled = 1; 15 | // receive_enabled enables or disables all cross-chain token transfers to this 16 | // chain. 17 | bool receive_enabled = 2; 18 | } 19 | -------------------------------------------------------------------------------- /proto/ibc/core/client/v2/config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.core.client.v2; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/core/02-client/v2/types"; 6 | 7 | // Config is a **per-client** configuration struct that sets which relayers are allowed to relay v2 IBC messages 8 | // for a given client. 9 | // If it is set, then only relayers in the allow list can send v2 messages 10 | // If it is not set, then the client allows permissionless relaying of v2 messages 11 | message Config { 12 | // allowed_relayers defines the set of allowed relayers for IBC V2 protocol for the given client 13 | repeated string allowed_relayers = 1; 14 | } -------------------------------------------------------------------------------- /proto/ibc/core/client/v2/counterparty.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.core.client.v2; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/core/02-client/v2/types"; 6 | 7 | // CounterpartyInfo defines the key that the counterparty will use to message our client 8 | message CounterpartyInfo { 9 | // merkle prefix key is the prefix that ics provable keys are stored under 10 | repeated bytes merkle_prefix = 1; 11 | // client identifier is the identifier used to send packet messages to our client 12 | string client_id = 2; 13 | } 14 | -------------------------------------------------------------------------------- /proto/ibc/core/client/v2/genesis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.core.client.v2; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/core/02-client/v2/types"; 6 | 7 | import "ibc/core/client/v2/counterparty.proto"; 8 | import "gogoproto/gogo.proto"; 9 | 10 | // GenesisCounterpartyInfo defines the state associating a client with a counterparty. 11 | message GenesisCounterpartyInfo { 12 | // ClientId is the ID of the given client. 13 | string client_id = 1; 14 | 15 | // CounterpartyInfo is the counterparty info of the given client. 16 | CounterpartyInfo counterparty_info = 2 [(gogoproto.nullable) = false]; 17 | } 18 | 19 | // GenesisState defines the ibc client v2 submodule's genesis state. 20 | message GenesisState { 21 | // counterparty info for each client 22 | repeated GenesisCounterpartyInfo counterparty_infos = 1 [(gogoproto.nullable) = false]; 23 | } 24 | -------------------------------------------------------------------------------- /proto/ibc/core/connection/v1/genesis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ibc.core.connection.v1; 4 | 5 | option go_package = "github.com/cosmos/ibc-go/v10/modules/core/03-connection/types"; 6 | 7 | import "gogoproto/gogo.proto"; 8 | import "ibc/core/connection/v1/connection.proto"; 9 | 10 | // GenesisState defines the ibc connection submodule's genesis state. 11 | message GenesisState { 12 | repeated IdentifiedConnection connections = 1 [(gogoproto.nullable) = false]; 13 | repeated ConnectionPaths client_connection_paths = 2 [(gogoproto.nullable) = false]; 14 | // the sequence for the next generated connection identifier 15 | uint64 next_connection_sequence = 3; 16 | Params params = 4 [(gogoproto.nullable) = false]; 17 | } 18 | -------------------------------------------------------------------------------- /proto/ibc/lightclients/wasm/v1/genesis.proto: -------------------------------------------------------------------------------- 1 | 2 | syntax = "proto3"; 3 | package ibc.lightclients.wasm.v1; 4 | 5 | import "gogoproto/gogo.proto"; 6 | 7 | option go_package = "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/v10/types"; 8 | 9 | // GenesisState defines 08-wasm's keeper genesis state 10 | message GenesisState { 11 | // uploaded light client wasm contracts 12 | repeated Contract contracts = 1 [(gogoproto.nullable) = false]; 13 | } 14 | 15 | // Contract stores contract code 16 | message Contract { 17 | option (gogoproto.goproto_getters) = false; 18 | // contract byte code 19 | bytes code_bytes = 1; 20 | } 21 | -------------------------------------------------------------------------------- /releases-decision-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmos/ibc-go/0e5639592507c9468924f01179d7489931285f10/releases-decision-tree.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | certifi==2023.7.22 2 | charset-normalizer==3.3.0 3 | idna==3.7 4 | semver==3.0.2 5 | urllib3==2.0.7 6 | requests==2.31.0 7 | -------------------------------------------------------------------------------- /scripts/README.md: -------------------------------------------------------------------------------- 1 | Generally we should avoid shell scripting and write tests purely in Golang. 2 | However, some libraries are not Goroutine-safe (e.g. app simulations cannot be run safely in parallel), 3 | and OS-native threading may be more efficient for many parallel simulations, so we use shell scripts here. 4 | -------------------------------------------------------------------------------- /scripts/build-wasm-simapp-docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eou pipefail 4 | 5 | # build_wasm_image extracts the correct libwasm version and checksum 6 | # based on the go.mod and builds a docker image with the provided tag. 7 | function build_wasm_image() { 8 | local version="$(scripts/get-libwasm-version.py --get-version)" 9 | local checksum="$(scripts/get-libwasm-version.py --get-checksum)" 10 | docker build . -t "${1}" -f modules/light-clients/08-wasm/Dockerfile --build-arg LIBWASM_VERSION=${version} --build-arg LIBWASM_CHECKSUM=${checksum} 11 | } 12 | 13 | # default to latest if no tag is specified. 14 | TAG="${1:-ibc-go-wasm-simd:latest}" 15 | 16 | build_wasm_image "${TAG}" 17 | -------------------------------------------------------------------------------- /scripts/go-lint-all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e -o pipefail 4 | 5 | REPO_ROOT="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/.." &> /dev/null && pwd )" 6 | export REPO_ROOT 7 | 8 | lint_module() { 9 | local root="$1" 10 | shift 11 | cd "$(dirname "$root")" && 12 | echo "linting $(grep "^module" go.mod) [$(date -u +"%Y-%m-%dT%H:%M:%S")]" && 13 | golangci-lint run ./... -c "${REPO_ROOT}/.golangci.yml" "$@" 14 | } 15 | export -f lint_module 16 | 17 | find "${REPO_ROOT}" -type f -name go.mod -print0 | 18 | xargs -0 -I{} bash -c 'lint_module "$@"' _ {} "$@" 19 | -------------------------------------------------------------------------------- /scripts/go-mod-tidy-all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | for modfile in $(find . -name go.mod); do 6 | echo "Updating $modfile" 7 | DIR=$(dirname $modfile) 8 | (cd $DIR; go mod tidy) 9 | done 10 | -------------------------------------------------------------------------------- /scripts/init-simapp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SIMD_BIN=${SIMD_BIN:=$(which simd 2>/dev/null)} 4 | 5 | if [ -z "$SIMD_BIN" ]; then echo "SIMD_BIN is not set. Make sure to run make install before"; exit 1; fi 6 | echo "using $SIMD_BIN" 7 | if [ -d "$($SIMD_BIN config home)" ]; then rm -r $($SIMD_BIN config home); fi 8 | $SIMD_BIN config set client chain-id simapp-1 9 | $SIMD_BIN config set client keyring-backend test 10 | $SIMD_BIN config set app api.enable true 11 | $SIMD_BIN keys add alice 12 | $SIMD_BIN keys add bob 13 | $SIMD_BIN init test --chain-id simapp-1 14 | $SIMD_BIN genesis add-genesis-account alice 5000000000stake --keyring-backend test 15 | $SIMD_BIN genesis add-genesis-account bob 5000000000stake --keyring-backend test 16 | $SIMD_BIN genesis gentx alice 1000000stake --chain-id simapp-1 17 | $SIMD_BIN genesis collect-gentxs -------------------------------------------------------------------------------- /scripts/linkify_changelog.py: -------------------------------------------------------------------------------- 1 | import fileinput 2 | import re 3 | 4 | # This script goes through the provided file, and replaces any " \#", 5 | # with the valid mark down formatted link to it. e.g. 6 | # " [\#number](https://github.com/cosmos/cosmos-sdk/issues/) 7 | # Note that if the number is for a PR, github will auto-redirect you when you click the link. 8 | # It is safe to run the script multiple times in succession. 9 | # 10 | # Example: 11 | # 12 | # $ python ./scripts/linkify_changelog.py CHANGELOG.md 13 | for line in fileinput.input(inplace=1): 14 | line = re.sub(r"\s\\#([0-9]+)", r" [\\#\1](https://github.com/cosmos/ibc-go/issues/\1)", line.rstrip()) 15 | print(line) 16 | -------------------------------------------------------------------------------- /scripts/protoc-swagger-gen.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eo pipefail 4 | 5 | mkdir -p ./tmp-swagger-gen 6 | cd proto 7 | proto_dirs=$(find ./ -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) 8 | for dir in $proto_dirs; do 9 | # generate swagger files (filter query files) 10 | query_file=$(find "${dir}" -maxdepth 1 \( -name 'query.proto' -o -name 'service.proto' \)) 11 | if [[ ! -z "$query_file" ]]; then 12 | buf generate --template buf.gen.swagger.yaml $query_file 13 | fi 14 | done 15 | 16 | cd .. 17 | 18 | # combine swagger files 19 | # uses nodejs package `swagger-combine`. 20 | # all the individual swagger files need to be configured in `config.json` for merging 21 | swagger-combine ./docs/client/config.json -o ./docs/client/swagger-ui/swagger.yaml -f yaml --continueOnConflictingPaths true --includeDefinitions true 22 | 23 | # clean swagger files 24 | rm -rf ./tmp-swagger-gen -------------------------------------------------------------------------------- /scripts/protocgen.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eo pipefail 4 | 5 | echo "Generating gogo proto code" 6 | cd proto 7 | 8 | buf generate --template buf.gen.gogo.yaml $file 9 | 10 | cd .. 11 | 12 | # move proto files to the right places 13 | cp -r github.com/cosmos/ibc-go/v*/modules/* modules/ 14 | cp -r github.com/cosmos/ibc-go/modules/light-clients/08-wasm/v*/* modules/light-clients/08-wasm/ 15 | # If other modules are added later with protos, they need to be added above here 👆 16 | rm -rf github.com 17 | 18 | # copy legacy denom trace to internal/types 19 | mv modules/apps/transfer/types/denomtrace.pb.go modules/apps/transfer/internal/types/ 20 | 21 | go mod tidy 22 | -------------------------------------------------------------------------------- /simapp/genesis.go: -------------------------------------------------------------------------------- 1 | package simapp 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // GenesisState of the blockchain is represented here as a map of raw json 8 | // messages key'd by an identifier string. 9 | // The identifier is used to determine which module genesis information belongs 10 | // to so it may be appropriately routed during init chain. 11 | // Within this application default genesis information is retrieved from 12 | // the ModuleBasicManager which populates json from each BasicModule 13 | // object provided to it during init. 14 | type GenesisState map[string]json.RawMessage 15 | -------------------------------------------------------------------------------- /simapp/params/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package params defines the simulation parameters in the simapp. 3 | 4 | It contains the default weights used for each transaction used on the module's 5 | simulation. These weights define the chance for a transaction to be simulated at 6 | any given operation. 7 | 8 | You can replace the default values for the weights by providing a params.json 9 | file with the weights defined for each of the transaction operations: 10 | 11 | { 12 | "op_weight_msg_send": 60, 13 | "op_weight_msg_delegate": 100, 14 | } 15 | 16 | In the example above, the `MsgSend` has 60% chance to be simulated, while the 17 | `MsgDelegate` will always be simulated. 18 | */ 19 | package params 20 | -------------------------------------------------------------------------------- /simapp/params/encoding.go: -------------------------------------------------------------------------------- 1 | package params 2 | 3 | import ( 4 | "github.com/cosmos/cosmos-sdk/client" 5 | "github.com/cosmos/cosmos-sdk/codec" 6 | "github.com/cosmos/cosmos-sdk/codec/types" 7 | ) 8 | 9 | // EncodingConfig specifies the concrete encoding types to use for a given app. 10 | // This is provided for compatibility between protobuf and amino implementations. 11 | type EncodingConfig struct { 12 | InterfaceRegistry types.InterfaceRegistry 13 | Codec codec.Codec 14 | TxConfig client.TxConfig 15 | Amino *codec.LegacyAmino 16 | } 17 | -------------------------------------------------------------------------------- /simapp/params/params.go: -------------------------------------------------------------------------------- 1 | package params 2 | 3 | // Simulation parameter constants 4 | const ( 5 | StakePerAccount = "stake_per_account" 6 | InitiallyBondedValidators = "initially_bonded_validators" 7 | ) 8 | -------------------------------------------------------------------------------- /simapp/simd/cmd/cmd_test.go: -------------------------------------------------------------------------------- 1 | package cmd_test 2 | 3 | import ( 4 | "fmt" 5 | "testing" 6 | 7 | "github.com/stretchr/testify/require" 8 | 9 | svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" 10 | "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" 11 | 12 | "github.com/cosmos/ibc-go/simapp" 13 | "github.com/cosmos/ibc-go/simapp/simd/cmd" 14 | ) 15 | 16 | func TestInitCmd(t *testing.T) { 17 | rootCmd := cmd.NewRootCmd() 18 | rootCmd.SetArgs([]string{ 19 | "init", // Test the init cmd 20 | "simapp-test", // Moniker 21 | fmt.Sprintf("--%s=%s", cli.FlagOverwrite, "true"), // Overwrite genesis.json, in case it already exists 22 | }) 23 | 24 | require.NoError(t, svrcmd.Execute(rootCmd, "", simapp.DefaultNodeHome)) 25 | } 26 | -------------------------------------------------------------------------------- /simapp/simd/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "os" 5 | 6 | "cosmossdk.io/log" 7 | 8 | svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" 9 | 10 | "github.com/cosmos/ibc-go/simapp" 11 | "github.com/cosmos/ibc-go/simapp/simd/cmd" 12 | ) 13 | 14 | func main() { 15 | rootCmd := cmd.NewRootCmd() 16 | if err := svrcmd.Execute(rootCmd, "", simapp.DefaultNodeHome); err != nil { 17 | log.NewLogger(rootCmd.OutOrStderr()).Error("failure when running app", "err", err) 18 | os.Exit(1) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /testing/mock/README.md: -------------------------------------------------------------------------------- 1 | This package is only intended to be used for testing core IBC. In order to maintain secure 2 | testing, we need to do message passing and execution which requires connecting an IBC application 3 | module that fulfills all the callbacks. We cannot connect to ibc-transfer which does not support 4 | all channel types so instead we create a mock application module which does nothing. It simply 5 | return nil in all cases so no error ever occurs. It is intended to be as minimal and lightweight 6 | as possible and should never import simapp. 7 | -------------------------------------------------------------------------------- /testing/mock/ack.go: -------------------------------------------------------------------------------- 1 | package mock 2 | 3 | // EmptyAcknowledgement implements the exported.Acknowledgement interface and always returns an empty byte string as Response 4 | type EmptyAcknowledgement struct { 5 | Response []byte 6 | } 7 | 8 | // NewEmptyAcknowledgement returns a new instance of EmptyAcknowledgement 9 | func NewEmptyAcknowledgement() EmptyAcknowledgement { 10 | return EmptyAcknowledgement{ 11 | Response: []byte{}, 12 | } 13 | } 14 | 15 | // Success implements the Acknowledgement interface 16 | func (EmptyAcknowledgement) Success() bool { 17 | return true 18 | } 19 | 20 | // Acknowledgement implements the Acknowledgement interface 21 | func (EmptyAcknowledgement) Acknowledgement() []byte { 22 | return []byte{} 23 | } 24 | -------------------------------------------------------------------------------- /testing/mock/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | This package is only intended to be used for testing core IBC. In order to maintain secure 3 | testing, we need to do message passing and execution which requires connecting an IBC application 4 | module that fulfills all the callbacks. We cannot connect to ibc-transfer which does not support 5 | all channel types so instead we create a mock application module which does nothing. It simply 6 | return nil in all cases so no error ever occurs. It is intended to be as minimal and lightweight 7 | as possible and should never import simapp. 8 | */ 9 | package mock 10 | -------------------------------------------------------------------------------- /testing/simapp/genesis.go: -------------------------------------------------------------------------------- 1 | package simapp 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // GenesisState of the blockchain is represented here as a map of raw json 8 | // messages key'd by an identifier string. 9 | // The identifier is used to determine which module genesis information belongs 10 | // to so it may be appropriately routed during init chain. 11 | // Within this application default genesis information is retrieved from 12 | // the ModuleBasicManager which populates json from each BasicModule 13 | // object provided to it during init. 14 | type GenesisState map[string]json.RawMessage 15 | --------------------------------------------------------------------------------