Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

chore: bump ics29 to tip of main #900

Merged
merged 60 commits into from
Feb 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
0a7ad9b
removing unused proto imports in interchain-accounts (#718)
damiannolan Jan 12, 2022
dd9c385
Merge pull request #721 from cosmos/colin/694-fix-err-msg
colin-axner Jan 13, 2022
d882b43
refactor: move ica connection identifiers from port to version metada…
damiannolan Jan 13, 2022
a4b9517
make IsValidAddr private and extend regex to account for 0 length str…
colin-axner Jan 13, 2022
5f4a90c
Update LICENSE (#728)
crodriguezvega Jan 13, 2022
5b7d362
refactor: allow ICA authentication module provided timeout timestamp …
colin-axner Jan 13, 2022
b0b52a3
Fix ambiguity in TimeoutTimestamp docs (#715)
assafmo Jan 13, 2022
e2693b0
bump docs json lock file to fix security vulnerability (#727)
colin-axner Jan 14, 2022
e28b6d1
fix: gogoproto yaml (#732)
seantking Jan 14, 2022
7415da7
refactor: no longer removing active channel mapping on close channel …
seantking Jan 14, 2022
8924ee6
refactor: reusable metadata validation (#729)
damiannolan Jan 14, 2022
e2ac503
remove amino, enforce serialize and deserialize functions to only acc…
colin-axner Jan 14, 2022
87bb391
fix: update IsRevisionFormat and IsClientIDFormat to account for newl…
colin-axner Jan 17, 2022
87b058d
add goreleaser github action to attach simd binary to releases and pr…
crodriguezvega Jan 18, 2022
bfcf9ab
docs: ica tx atomicity docs and code snippet updates (#719)
damiannolan Jan 18, 2022
89ffaaf
deps: bump vuepress-theme-cosmos (#754)
crodriguezvega Jan 18, 2022
4fb75e8
fix: remove error from ics27 channel ack (#751)
damiannolan Jan 20, 2022
60ed992
feat: adding helper fn to generate capability name for testing (#776)
seantking Jan 21, 2022
a6656a0
test: adding test for accessing interchain account after closing chan…
seantking Jan 21, 2022
f822756
Replace github.com/pkg/errors with stdlib errors (#775)
dkmccandless Jan 21, 2022
01c5848
update roadmap (#735)
crodriguezvega Jan 22, 2022
e19623f
fix: resolve proto lint failure - buf.yaml (#781)
damiannolan Jan 24, 2022
d7bf2a8
feat: query host chain msg events via cli (#782)
damiannolan Jan 24, 2022
1da4885
docs: add MakeFile command to view docs locally (#788)
seantking Jan 26, 2022
8dfbc9c
fix: support custom chain IDs for testing (#774)
ramacarlucho Jan 26, 2022
3e6464b
chore: renaming API fns (#786)
seantking Jan 27, 2022
640ba14
build(deps): bump google.golang.org/grpc from 1.43.0 to 1.44.0 (#796)
dependabot[bot] Jan 27, 2022
4f70554
chore: restructure code logically (#804)
colin-axner Jan 27, 2022
19b5b5f
refactor: construct ics27 error acknowledgement with determinstic ABC…
colin-axner Jan 28, 2022
3c2f2eb
docs: active channel description (#787)
seantking Jan 28, 2022
54dc848
add helper function in testing package: RecvPacketWithResult (#810)
colin-axner Jan 28, 2022
f393893
chore: use connection ID in interchain account store keys (#791)
damiannolan Jan 28, 2022
90a175e
chore: remove unnecessary arg from RelayPacket testing function (#813)
colin-axner Jan 28, 2022
1c0bee5
chore: use host chain connection id in ica address generation (#790)
damiannolan Jan 28, 2022
d8c74f4
docs: adding ica docs for exclusive submodule app wiring (#809)
damiannolan Jan 28, 2022
25fb89d
Defensive checks for active channel (#785)
seantking Jan 31, 2022
20e5dd9
Add stable release policy (#685)
colin-axner Feb 1, 2022
f7bb142
build(deps): bump github.com/cosmos/cosmos-sdk from 0.44.5 to 0.45.0 …
dependabot[bot] Feb 2, 2022
8cba0eb
rename portid and port prefix for interchain accounts submodules (#779)
crodriguezvega Feb 2, 2022
83c3e41
test: adding ica test for multiple controllers, single host (#816)
damiannolan Feb 2, 2022
142056f
the ica_auth page was renamed to auth-modules (#792)
crodriguezvega Feb 2, 2022
ac46ac0
chore: replace error string in transfer acks with const (#818)
damiannolan Feb 2, 2022
4c28c1c
refactor: active channel key format (#823)
seantking Feb 2, 2022
fed6a86
refactor: RegisterInterchainAccount (#814)
seantking Feb 2, 2022
bbcc09c
refactor: reformat KeyOwnerAccount (#833)
seantking Feb 2, 2022
5ae8e35
chore: adding encoding and txType fields to metadata (#824)
damiannolan Feb 2, 2022
6c48f7e
refactor: include transaction response in ics27 channel acknowledgeme…
colin-axner Feb 2, 2022
1021617
ADR 003: ICS27 Ack format (#812)
colin-axner Feb 3, 2022
c7ea0e8
test: ensure ics27 optimistic packet sends are disallowed (#842)
damiannolan Feb 3, 2022
ec36c75
docs: add security model to ics27 docs (#841)
colin-axner Feb 3, 2022
f6a9279
test: Register using same owner address on multiple connections (#846)
seantking Feb 4, 2022
81b619d
Move emissions to functions (#783)
nir1218 Feb 7, 2022
7b7eb9f
Added ChannelId to MsgChannelOpenInitResponse (#848)
rigelrozanski Feb 7, 2022
c378ff3
build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.0 to 0.45.1 …
dependabot[bot] Feb 7, 2022
31487bc
fix: ica host OnRecvPacket error acknowledgement (#885)
damiannolan Feb 8, 2022
482b7ab
chore: add defensive check to ensure metadata does not change when re…
colin-axner Feb 8, 2022
acbc9b6
refactor: WriteAcknowledgement API (#882)
seantking Feb 9, 2022
d5e2ba5
bug: use custom ante handler to reject redundant transactions in sima…
crodriguezvega Feb 9, 2022
8f62a47
refactor: allow the mock module to be used multiple times as base ibc…
colin-axner Feb 10, 2022
e0161a7
Merge branch 'main' of github.com:cosmos/ibc-go into ics29-fee-middle…
colin-axner Feb 10, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Release

on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+-?[a-z0-9]*' # Push events to matching v*, i.e. v1.0.0, v20.15.10, v3.0.0-alpha1

jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.4.0
with:
fetch-depth: 0

- uses: actions/setup-go@v2
with:
go-version: '1.17'

- name: Release
uses: goreleaser/goreleaser-action@v2
if: startsWith(github.ref, 'refs/tags/')
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35 changes: 35 additions & 0 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
before:
hooks:
- go mod tidy

builds:
- main: ./testing/simapp/simd/main.go
binary: simd
flags:
- -tags=netgo ledger
- -mod=readonly
ldflags:
- -s -w -X github.com/cosmos/cosmos-sdk/version.Name=sim -X github.com/cosmos/cosmos-sdk/version.AppName=simd -X github.com/cosmos/cosmos-sdk/version.Version={{.Version}} -X "github.com/cosmos/cosmos-sdk/version.BuildTags=netgo,ledger"
env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
# for goarch use defaults: 386, amd64 and arm64.

checksum:
name_template: SHA256SUMS-{{.Version}}.txt
algorithm: sha256

release:
mode: keep-existing

archives:
- name_template: "{{ .ProjectName }}_simd_v{{ .Version }}_{{ .Os }}_{{ .Arch }}"
files:
- LICENSE
- README.md
- RELEASES.md
- SECURITY.md
- CHANGELOG.md
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,25 +39,37 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Dependencies

* [\#404](https://github.com/cosmos/ibc-go/pull/404) Bump Go version to 1.17
* (core) [\#709](https://github.com/cosmos/ibc-go/pull/709) Replace github.com/pkg/errors with stdlib errors

### API Breaking

* (channel( [\#848](https://github.com/cosmos/ibc-go/pull/848) Added `ChannelId` to MsgChannelOpenInitResponse
* (testing( [\#813](https://github.com/cosmos/ibc-go/pull/813) The `ack` argument to the testing function `RelayPacket` has been removed as it is no longer needed.
* (testing) [\#774](https://github.com/cosmos/ibc-go/pull/774) Added `ChainID` arg to `SetupWithGenesisValSet` on the testing app. `Coordinator` generated ChainIDs now starts at index 1
* (transfer) [\#675](https://github.com/cosmos/ibc-go/pull/675) Transfer `NewKeeper` now takes in an ICS4Wrapper. The ICS4Wrapper may be the IBC Channel Keeper when ICS20 is not used in a middleware stack. The ICS4Wrapper is required for applications wishing to connect middleware to ICS20.
* (core) [\#650](https://github.com/cosmos/ibc-go/pull/650) Modify `OnChanOpenTry` IBC application module callback to return the negotiated app version. The version passed into the `MsgChanOpenTry` has been deprecated and will be ignored by core IBC.
* (core) [\#629](https://github.com/cosmos/ibc-go/pull/629) Removes the `GetProofSpecs` from the ClientState interface. This function was previously unused by core IBC.
* (transfer) [\#517](https://github.com/cosmos/ibc-go/pull/517) Separates the ICS 26 callback functions from `AppModule` into a new type `IBCModule` for ICS 20 transfer.
* (modules/core/02-client) [\#536](https://github.com/cosmos/ibc-go/pull/536) `GetSelfConsensusState` return type changed from bool to error.
* (channel) [\#644](https://github.com/cosmos/ibc-go/pull/644) Removes `CounterpartyHops` function from the ChannelKeeper.
* (testing) [\#776](https://github.com/cosmos/ibc-go/pull/776) Adding helper fn to generate capability name for testing callbacks
* (testing) [\#892](https://github.com/cosmos/ibc-go/pull/892) IBC Mock modules store the scoped keeper and portID within the IBCMockApp. They also maintain reference to the AppModule to update the AppModule's list of IBC applications it references. Allows for the mock module to be reused as a base application in middleware stacks.
* (channel) [\#882](https://github.com/cosmos/ibc-go/pull/882) The `WriteAcknowledgement` API now takes `exported.Acknowledgement` instead of a byte array

### State Machine Breaking

* (transfer) [\#818](https://github.com/cosmos/ibc-go/pull/818) Error acknowledgements returned from Transfer `OnRecvPacket` now include a deterministic ABCI code and error message.

### Improvements

* (testing) [\#810](https://github.com/cosmos/ibc-go/pull/810) Additional testing function added to `Endpoint` type called `RecvPacketWithResult`. Performs the same functionality as the existing `RecvPacket` function but also returns the message result. `path.RelayPacket` no longer uses the provided acknowledgement argument and instead obtains the acknowledgement via MsgRecvPacket events.
* (connection) [\#721](https://github.com/cosmos/ibc-go/pull/721) Simplify connection handshake error messages when unpacking client state.
* (channel) [\#692](https://github.com/cosmos/ibc-go/pull/692) Minimize channel logging by only emitting the packet sequence, source port/channel, destination port/channel upon packet receives, acknowledgements and timeouts.
* [\#383](https://github.com/cosmos/ibc-go/pull/383) Adds helper functions for merging and splitting middleware versions from the underlying app version.
* (modules/core/05-port) [\#288](https://github.com/cosmos/ibc-go/issues/288) Making the 05-port keeper function IsBound public. The IsBound function checks if the provided portID is already binded to a module.
* (channel) [\#644](https://github.com/cosmos/ibc-go/pull/644) Adds `GetChannelConnection` to the ChannelKeeper. This function returns the connectionID and connection state associated with a channel.
* (channel) [\647](https://github.com/cosmos/ibc-go/pull/647) Reorganizes channel handshake handling to set channel state after IBC application callbacks.
* (client) [\#724](https://github.com/cosmos/ibc-go/pull/724) `IsRevisionFormat` and `IsClientIDFormat` have been updated to disallow newlines before the dash used to separate the chainID and revision number, and the client type and client sequence.

### Features

Expand All @@ -67,6 +79,8 @@ Ref: https://keepachangelog.com/en/1.0.0/

### Bug Fixes

* (testing) [\#884](https://github.com/cosmos/ibc-go/pull/884) Add and use in simapp a custom ante handler that rejects redundant transactions

## [v2.0.2](https://github.com/cosmos/ibc-go/releases/tag/v2.0.2) - 2021-12-15

### Dependencies
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2021 COSMOS
Copyright (c) 2022 COSMOS

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ build-docs:
cp ~/output/$${path_prefix}/index.html ~/output ; \
done < versions ;

view-docs:
@cd docs && \
npm install && npm run serve

.PHONY: build-docs

###############################################################################
Expand Down
39 changes: 39 additions & 0 deletions RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,45 @@ To summarize: **All our ibc-go releases allow chains to communicate successfully

We ensure all major releases are supported by relayers ([hermes](https://github.com/informalsystems/ibc-rs), [rly](https://github.com/strangelove-ventures/relayer) and [ts-relayer](https://github.com/confio/ts-relayer) at the moment) which can relay between the new major release and older releases. We have no plans of upgrading to an IBC protocol specification v2.0, as this would be very disruptive to the ecosystem.

## Stable Release Policy

The beginning of a new major release series is marked by the release of a new major version. A major release series is comprised of all minor and patch releases made under the same major version number. The series continues to receive bug fixes (released as minor or patch releases) until it reaches end of life. The date when a major release series reaches end of life is determined by one of the two following methods:
- If the next major release is made within the first 6 months, then the end of life date of the major release series is 1 year after its initial release.
- If the next major release is made 6 months after the initial release, then the end of life date of the major release series is 6 months after the release date of the next major release.

For example, if the current major release series is v1 and was released on January 1st, 2022, then v1 will be supported at least until January 1st, 2023. If v2 is published on August 1st 2022, then v1's end of life will be March 1st, 2023.

Only the following major release series have a stable release status:

|Release|End of Life Date|
|-------|-------|
|`v1.1.x`|July 01, 2022|
|`v1.2.x`|July 01, 2022|
|`v2.0.x`|February 01, 2023|

**Note**: The v1 major release series will reach end of life 6 months after merging this policy. v2 will reach end of life one year after merging this policy.

### What pull requests will be included in stable patch-releases?

Pull requests that fix bugs and add features that fall in the following categories:

* **Severe regressions**.
* Bugs that may cause **client applications** to be **largely unusable**.
* Bugs that may cause **state corruption or data loss**.
* Bugs that may directly or indirectly cause a **security vulnerability**.
* Non-breaking features that are strongly requested by the community.
* Non-breaking CLI improvements that are strongly requested by the community.

### What pull requests will NOT be automatically included in stable patch-releases?

As rule of thumb, the following changes will **NOT** be automatically accepted into stable point-releases:

* **State machine changes**, unless the previous behaviour would result in a consensus halt.
* **Protobuf-breaking changes**.
* **Client-breaking changes**, i.e. changes that prevent gRPC, HTTP and RPC clients to continue interacting with the node without any change.
* **API-breaking changes**, i.e. changes that prevent client applications to *build without modifications* to the client application's source code.
* **CLI-breaking changes**, i.e. changes that require usage changes for CLI users.

## Graphics

The decision tree above was generated with the following code:
Expand Down
26 changes: 23 additions & 3 deletions docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,17 +109,37 @@ module.exports = {
{
title: "Interchain Accounts",
directory: true,
path: "/app_modules",
path: "/app-modules",
children: [
{
title: "Overview",
directory: false,
path: "/app_modules/interchain-accounts/overview.html"
path: "/app-modules/interchain-accounts/overview.html"
},
{
title: "Authentication Modules",
directory: false,
path: "/app-modules/interchain-accounts/auth-modules.html"
},
{
title: "Active Channels",
directory: false,
path: "/app-modules/interchain-accounts/active-channels.html"
},
{
title: "Integration",
directory: false,
path: "/app_modules/interchain-accounts/integration.html"
path: "/app-modules/interchain-accounts/integration.html"
},
{
title: "Parameters",
directory: false,
path: "/app-modules/interchain-accounts/parameters.html"
},
{
title: "Transactions",
directory: false,
path: "/app-modules/interchain-accounts/transactions.html"
},
]
},
Expand Down
25 changes: 25 additions & 0 deletions docs/app-modules/interchain-accounts/active-channels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!--
order: 3
-->

# Understanding Active Channels

The Interchain Accounts module uses [ORDERED channels](https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#ordering) to maintain the order of transactions when sending packets from a controller to a host chain. A limitation when using ORDERED channels is that when a packet times out the channel will be closed.

In the case of a channel closing, a controller chain needs to be able to regain access to the interchain account registered on this channel. `Active Channels` enable this functionality. Future versions of the ICS-27 protocol and the Interchain Accounts module will likely use a new
channel type that provides ordering of packets without the channel closing on timing out, thus removing the need for `Active Channels` entirely.

When an Interchain Account is registered using the `RegisterInterchainAccount` API, a new channel is created on a particular port. During the `OnChanOpenAck` and `OnChanOpenConfirm` steps (controller & host chain) the `Active Channel` for this interchain account
is stored in state.

It is possible to create a new channel using the same controller chain portID if the previously set `Active Channel` is now in a `CLOSED` state. This channel creation can be initialized programatically by sending a new `OnChanOpenInit` message like so:

```go
msg := channeltypes.NewMsgChannelOpenInit(portID, string(versionBytes), channeltypes.ORDERED, []string{connectionID}, icatypes.PortID, icatypes.ModuleName)
handler := k.msgRouter.Handler(msg)
```

Alternatively, any relayer operator may initiate a new channel handshake for this interchain account once the previously set `Active Channel` is in a `CLOSED` state. This is done by initiating the channel handshake on the controller chain using the same portID associated with the interchain account in question.

It is important to note that once a channel has been opened for a given Interchain Account, new channels can not be opened for this account until the currently set `Active Channel` is set to `CLOSED`.

Loading