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

ICS28: Channel initialization should have a timeout #860

Merged
merged 4 commits into from
Dec 2, 2022

Conversation

mpoke
Copy link
Contributor

@mpoke mpoke commented Oct 14, 2022

Closes #832

@mpoke mpoke added the ready-for-review Pull requests which are ready for review. label Oct 14, 2022
@mpoke mpoke requested a review from jtremback October 14, 2022 13:52
Copy link
Member

@AdityaSripal AdityaSripal left a comment

Choose a reason for hiding this comment

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

I think this needs some more discussion. How do you prevent the TRY from succeeding after the timeout exceeds on INIT? How should the consumer chain react if this occurs?

@mpoke
Copy link
Contributor Author

mpoke commented Oct 25, 2022

I think this needs some more discussion. How do you prevent the TRY from succeeding after the timeout exceeds on INIT?

The TRY will fail at the following line (see https://github.com/cosmos/ibc/blob/74444db64bbd4c3645f49e4780dca0a5cff843c5/spec/app/ics-028-cross-chain-validation/methods.md#ccv-pcf-cotry1):

// verify that the underlying client is the expected client of the consumer chain
abortTransactionUnless(chainToClient[clientState.chainId] == connectionEnd.clientIdentifier)

How should the consumer chain react if this occurs?

The consumer should eventually shut down. The handshake will not be successful.

@AdityaSripal
Copy link
Member

It doesn't seem like it would?

Because there is a height for which the INIT is valid, so the TRY can be submitted with that height as the proof.

The INIT timeout is also measured against the initializing chain. So the timeout might occur without the TRY chain noticing.

Seems like a race exists, we designed packet timeout with the counterparty time to explicitly avoid this race

@mpoke
Copy link
Contributor Author

mpoke commented Oct 27, 2022

It doesn’t seem like it would?

Do you refer to the TRY failing or the Consumer eventually shutting down?

Because there is a height for which the INIT is valid, so the TRY can be submitted with that height as the proof.

It’s not about the proof. TRY will fail after the channel initialization timeout because the chainId will be removed from chainToClient when the consumer chain will be stopped, see StopConsumerChain.

The INIT timeout is also measured against the initializing chain. So the timeout might occur without the TRY chain noticing.

Note that the channel initialization timeout of Interchain Security is not a timeout for the INIT part of the channel handshake. It's a timeout for the entire handshake. This timeout is on the provider side. The INIT is always on the consumer. Thus, the TRY chain will always be the provider, which for sure will notice a timeout occurring.

Seems like a race exists, we designed packet timeout with the counterparty time to explicitly avoid this race

Not sure that I follow.

@AdityaSripal
Copy link
Member

Ahh ok, I misunderstood the proposal. One I mistook TRY for being executed on the consumer chain. Also it seems like you will remove the consumer chain if the full handshake is not complete by a certain time.

My remaining question is still what happens to the consumer chain in this case. What will happen if it is stuck on INIT or OPEN (after ACK) when the provider chain has removed the consumer chain

@mpoke
Copy link
Contributor Author

mpoke commented Oct 27, 2022

My remaining question is still what happens to the consumer chain in this case. What will happen if it is stuck on INIT or OPEN (after ACK) when the provider chain has removed the consumer chain

It gets stuck. It needs social consensus to deal with it: either restart the process to be a consumer or start as a sovereign. I guess we could implement some sort of Interchain Query for the consumer to query the provider and see if it was kicked out. What do you think?

@AdityaSripal
Copy link
Member

No let's not introduce a new application to handle this edge case. Social consensus is fine, I think there should be a note in the spec to mention this

@mpoke mpoke merged commit 57c774c into marius/831-vsc-timeout Dec 2, 2022
@mpoke mpoke deleted the marius/278-init-timeout branch December 2, 2022 12:23
mpoke added a commit that referenced this pull request Dec 7, 2022
* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names

* add VSC timeout

* refactor proposal names (#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* ICS28: Channel initialization should have a timeout (#860)

* add init timeout

* fix typo

* add note on timed out channel init

* update vsc timeout as per implementation

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
dshiell pushed a commit to polymerdao/ibc that referenced this pull request Dec 16, 2022
* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names

* add VSC timeout

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* ICS28: Channel initialization should have a timeout (cosmos#860)

* add init timeout

* fix typo

* add note on timed out channel init

* update vsc timeout as per implementation

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
dshiell added a commit to polymerdao/ibc that referenced this pull request Dec 16, 2022
* ICS20: Replace Metadata with Memo (cosmos#877)

* memo string replacement

* formatting

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

* ICS9: remove localhost client (cosmos#878)

* remove localhost client

* Update CHANGELOG.md

* Update README.md

* fix: update comment about channel state check in `sendPacket` (cosmos#865)

* update comment

* typo

* remove comment

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>

* ICS5: fix releasePort signature (cosmos#885)

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

* ICS721: Add tokenData to PacketData (cosmos#876)

* add tokenData to PacketData; improve TypeScript formatting

* revert else style

* extend 03-connection with a proof object for chains that can't introspect their own consensus state. (cosmos#839)

* extend 03-connection with HostConsensusStateProof

* make hostConsensusStateProof optional

* ICS28: Reflect deferred unbonding completion in spec (cosmos#826)

* call UnbondingCanComplete in EndBlock

* update README

* update ics23 link (cosmos#891)

* update eli5 blog post link (cosmos#892)

* ICS28: Sovereign to consumer chain transition (cosmos#840)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* add note re. the existing staking module

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* ICS28: VSCPackets should have timeout on provider (cosmos#858)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names

* add VSC timeout

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* ICS28: Channel initialization should have a timeout (cosmos#860)

* add init timeout

* fix typo

* add note on timed out channel init

* update vsc timeout as per implementation

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* add angbrav as code owner (cosmos#895)

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

* save progress

* start adding proof generation logic and update graphical_proof.jpg

* rm spec/.DS_Store

Signed-off-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Haifeng Xi <haifeng@bianjie.ai>
Co-authored-by: Web3 Philosopher <seunlanlege@gmail.com>
Co-authored-by: Marius Poke <marius.poke@posteo.de>
Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.com>
dshiell added a commit to polymerdao/ibc that referenced this pull request Feb 13, 2023
* ICS20: Replace Metadata with Memo (cosmos#877)

* memo string replacement

* formatting

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

* ICS9: remove localhost client (cosmos#878)

* remove localhost client

* Update CHANGELOG.md

* Update README.md

* fix: update comment about channel state check in `sendPacket` (cosmos#865)

* update comment

* typo

* remove comment

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>

* ICS5: fix releasePort signature (cosmos#885)

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

* ICS721: Add tokenData to PacketData (cosmos#876)

* add tokenData to PacketData; improve TypeScript formatting

* revert else style

* extend 03-connection with a proof object for chains that can't introspect their own consensus state. (cosmos#839)

* extend 03-connection with HostConsensusStateProof

* make hostConsensusStateProof optional

* ICS28: Reflect deferred unbonding completion in spec (cosmos#826)

* call UnbondingCanComplete in EndBlock

* update README

* update ics23 link (cosmos#891)

* update eli5 blog post link (cosmos#892)

* ICS28: Sovereign to consumer chain transition (cosmos#840)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* add note re. the existing staking module

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* ICS28: VSCPackets should have timeout on provider (cosmos#858)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names

* add VSC timeout

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* ICS28: Channel initialization should have a timeout (cosmos#860)

* add init timeout

* fix typo

* add note on timed out channel init

* update vsc timeout as per implementation

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* add angbrav as code owner (cosmos#895)

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

* save progress

* start adding proof generation logic and update graphical_proof.jpg

* rm spec/.DS_Store

Signed-off-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Haifeng Xi <haifeng@bianjie.ai>
Co-authored-by: Web3 Philosopher <seunlanlege@gmail.com>
Co-authored-by: Marius Poke <marius.poke@posteo.de>
Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.com>
dshiell added a commit to polymerdao/ibc that referenced this pull request Mar 8, 2023
* ICS20: Replace Metadata with Memo (cosmos#877)

* memo string replacement

* formatting

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

* ICS9: remove localhost client (cosmos#878)

* remove localhost client

* Update CHANGELOG.md

* Update README.md

* fix: update comment about channel state check in `sendPacket` (cosmos#865)

* update comment

* typo

* remove comment

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>

* ICS5: fix releasePort signature (cosmos#885)

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

* ICS721: Add tokenData to PacketData (cosmos#876)

* add tokenData to PacketData; improve TypeScript formatting

* revert else style

* extend 03-connection with a proof object for chains that can't introspect their own consensus state. (cosmos#839)

* extend 03-connection with HostConsensusStateProof

* make hostConsensusStateProof optional

* ICS28: Reflect deferred unbonding completion in spec (cosmos#826)

* call UnbondingCanComplete in EndBlock

* update README

* update ics23 link (cosmos#891)

* update eli5 blog post link (cosmos#892)

* ICS28: Sovereign to consumer chain transition (cosmos#840)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* add note re. the existing staking module

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* ICS28: VSCPackets should have timeout on provider (cosmos#858)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names

* add VSC timeout

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* ICS28: Channel initialization should have a timeout (cosmos#860)

* add init timeout

* fix typo

* add note on timed out channel init

* update vsc timeout as per implementation

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* add angbrav as code owner (cosmos#895)

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

* save progress

* start adding proof generation logic and update graphical_proof.jpg

* rm spec/.DS_Store

Signed-off-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Haifeng Xi <haifeng@bianjie.ai>
Co-authored-by: Web3 Philosopher <seunlanlege@gmail.com>
Co-authored-by: Marius Poke <marius.poke@posteo.de>
Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.com>
dshiell added a commit to polymerdao/ibc that referenced this pull request May 15, 2023
* ICS20: Replace Metadata with Memo (cosmos#877)

* memo string replacement

* formatting

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

* ICS9: remove localhost client (cosmos#878)

* remove localhost client

* Update CHANGELOG.md

* Update README.md

* fix: update comment about channel state check in `sendPacket` (cosmos#865)

* update comment

* typo

* remove comment

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>

* ICS5: fix releasePort signature (cosmos#885)

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

* ICS721: Add tokenData to PacketData (cosmos#876)

* add tokenData to PacketData; improve TypeScript formatting

* revert else style

* extend 03-connection with a proof object for chains that can't introspect their own consensus state. (cosmos#839)

* extend 03-connection with HostConsensusStateProof

* make hostConsensusStateProof optional

* ICS28: Reflect deferred unbonding completion in spec (cosmos#826)

* call UnbondingCanComplete in EndBlock

* update README

* update ics23 link (cosmos#891)

* update eli5 blog post link (cosmos#892)

* ICS28: Sovereign to consumer chain transition (cosmos#840)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* add note re. the existing staking module

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* ICS28: VSCPackets should have timeout on provider (cosmos#858)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names

* add VSC timeout

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* ICS28: Channel initialization should have a timeout (cosmos#860)

* add init timeout

* fix typo

* add note on timed out channel init

* update vsc timeout as per implementation

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* add angbrav as code owner (cosmos#895)

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

* save progress

* start adding proof generation logic and update graphical_proof.jpg

* rm spec/.DS_Store

Signed-off-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Haifeng Xi <haifeng@bianjie.ai>
Co-authored-by: Web3 Philosopher <seunlanlege@gmail.com>
Co-authored-by: Marius Poke <marius.poke@posteo.de>
Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.com>
dshiell added a commit to polymerdao/ibc that referenced this pull request Aug 2, 2023
* ICS20: Replace Metadata with Memo (cosmos#877)

* memo string replacement

* formatting

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

* ICS9: remove localhost client (cosmos#878)

* remove localhost client

* Update CHANGELOG.md

* Update README.md

* fix: update comment about channel state check in `sendPacket` (cosmos#865)

* update comment

* typo

* remove comment

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>

* ICS5: fix releasePort signature (cosmos#885)

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

* ICS721: Add tokenData to PacketData (cosmos#876)

* add tokenData to PacketData; improve TypeScript formatting

* revert else style

* extend 03-connection with a proof object for chains that can't introspect their own consensus state. (cosmos#839)

* extend 03-connection with HostConsensusStateProof

* make hostConsensusStateProof optional

* ICS28: Reflect deferred unbonding completion in spec (cosmos#826)

* call UnbondingCanComplete in EndBlock

* update README

* update ics23 link (cosmos#891)

* update eli5 blog post link (cosmos#892)

* ICS28: Sovereign to consumer chain transition (cosmos#840)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* add note re. the existing staking module

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* ICS28: VSCPackets should have timeout on provider (cosmos#858)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names

* add VSC timeout

* refactor proposal names (cosmos#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* ICS28: Channel initialization should have a timeout (cosmos#860)

* add init timeout

* fix typo

* add note on timed out channel init

* update vsc timeout as per implementation

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* add angbrav as code owner (cosmos#895)

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

* save progress

* start adding proof generation logic and update graphical_proof.jpg

* rm spec/.DS_Store

Signed-off-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Haifeng Xi <haifeng@bianjie.ai>
Co-authored-by: Web3 Philosopher <seunlanlege@gmail.com>
Co-authored-by: Marius Poke <marius.poke@posteo.de>
Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.com>
AdityaSripal added a commit that referenced this pull request Sep 14, 2023
* feat: add spec for multi-hop channels

* chore: naming

* chore: add notes on chain registry

* Polymer/multihop (#1)

* ICS20: Replace Metadata with Memo (#877)

* memo string replacement

* formatting

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

* ICS9: remove localhost client (#878)

* remove localhost client

* Update CHANGELOG.md

* Update README.md

* fix: update comment about channel state check in `sendPacket` (#865)

* update comment

* typo

* remove comment

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>

* ICS5: fix releasePort signature (#885)

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

Signed-off-by: Jun Kimura <junkxdev@gmail.com>

* ICS721: Add tokenData to PacketData (#876)

* add tokenData to PacketData; improve TypeScript formatting

* revert else style

* extend 03-connection with a proof object for chains that can't introspect their own consensus state. (#839)

* extend 03-connection with HostConsensusStateProof

* make hostConsensusStateProof optional

* ICS28: Reflect deferred unbonding completion in spec (#826)

* call UnbondingCanComplete in EndBlock

* update README

* update ics23 link (#891)

* update eli5 blog post link (#892)

* ICS28: Sovereign to consumer chain transition (#840)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names (#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* add note re. the existing staking module

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* ICS28: VSCPackets should have timeout on provider (#858)

* update CreateConsumerClient for sovereign chains

* update InitGenesis for sovereign chains

* establish CCV on ACK and handle preCCV completion

* update Channel Uniqueness Correctness Reasoning

* add pre-CCV module interface with staking

* add clarifications

* add overview TODO

* fix pendingChanges bug

* refactor proposal names

* add VSC timeout

* refactor proposal names (#855)

* Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* enable optimistic opening handshakes

* remove ConsumerAdditionProposal.initialHeight

* handle proposals in BeginBlock

* pass consumer unbonding period via gov proposal

* update channel init overview - wip

* update overview

* update modified date

* ICS28: Channel initialization should have a timeout (#860)

* add init timeout

* fix typo

* add note on timed out channel init

* update vsc timeout as per implementation

Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>

* add angbrav as code owner (#895)

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

* save progress

* start adding proof generation logic and update graphical_proof.jpg

* rm spec/.DS_Store

Signed-off-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Haifeng Xi <haifeng@bianjie.ai>
Co-authored-by: Web3 Philosopher <seunlanlege@gmail.com>
Co-authored-by: Marius Poke <marius.poke@posteo.de>
Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.com>

* update to ics-033

* start updating channel spec for multihop; add diagram for relayer proof querying

* chore: update spec history

* chore: spacing

* remove TODO comment; per PR feedback, connection proof not require for channel INIT

* add comment to MultihopProof struct making the proof ordering more clear; update proof generation logic to not include the key which should be generated during verification

* add verification proof pseudo code

* add/update multihop proof verification logic

* Update spec/core/ics-004-channel-and-packet-semantics/README.md

Co-authored-by: Aditya <adityasripal@gmail.com>

* Update spec/core/ics-033-multi-hop/README.md

Co-authored-by: Aditya <adityasripal@gmail.com>

* remove consState var to simplify consensusState update assignment

* rename VerifyMultihopConsensusStateProof --> VerifyMultihopConsensusAndConnectionStateProofs to better reflect the function logic; further simplify the function logic and update comments

* simplify multihop proof logic steps further

* Ds/multihop (#4)

update multi-hop diagrams and remove old diagrams

* start updating multihop spec to include client state information in the proof

* check consensus/connection proof lengths immediately

* update spec with latest multihop solution

* remove client state from multihop proofs

* update spec with chanCloseFrozen; fix/update other parts of multihop spec

* revise and update multihop spec details

* add check to match client id in ConnectionEnd with client id in subsequent consensus state key

* fix indentation

* Update spec/core/ics-033-multi-hop/README.md

Co-authored-by: Anca Zamfir <ancazamfir@users.noreply.github.com>

* Update spec/core/ics-033-multi-hop/README.md

Co-authored-by: Anca Zamfir <ancazamfir@users.noreply.github.com>

* Update spec/core/ics-033-multi-hop/README.md

Co-authored-by: Anca Zamfir <ancazamfir@users.noreply.github.com>

* Update spec/core/ics-004-channel-and-packet-semantics/README.md

Co-authored-by: Anca Zamfir <ancazamfir@users.noreply.github.com>

* Update spec/core/ics-004-channel-and-packet-semantics/README.md

Co-authored-by: Anca Zamfir <ancazamfir@users.noreply.github.com>

* Update spec/core/ics-004-channel-and-packet-semantics/README.md

Co-authored-by: Anca Zamfir <ancazamfir@users.noreply.github.com>

* fix typo prevChain --> previousChain

* add comments for connection and multihopConnectionEnd

* Update spec/core/ics-003-connection-semantics/README.md

Co-authored-by: Aditya <adityasripal@gmail.com>

* add frozen channel proof generation logic

* refactor getMaxDelayPeriod to return the time and block delay

* use Identifier type instead of string for connectionHops array

* cleanup proof gen pseudo code

* check proof heights for consensus and connection states during multihop proof generation; use "proofHeight" instead of "keyHeight" for consistency

* Update spec/core/ics-033-multi-hop/README.md

Co-authored-by: Anca Zamfir <ancazamfir@users.noreply.github.com>

* cleanup multihop proof gen pseudo code

* remove trailing whitespace; refactor multihop proof generation and add proof gen helper function descriptions

* add extra info about connectionHops ordering; update proof ordering to match connectionHops (receiver --> sender)

* clarify multi-hop proof verification now that proof ordering matches the connectionHops ordering (receiver --> sender)

* address latest PR feedback

* more pr feedback

* address more multihop PR feedback

* update multi-hop proof query/verification specs and add frozen channel proof logic

* update multi-hop proof diagrams

* wip address latest PR feedback

* add more clarifying comments/explanations and incorporate more PR feedback

---------

Signed-off-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Derek <derek@polymerlabs.org>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Jun Kimura <junkxdev@gmail.com>
Co-authored-by: Haifeng Xi <haifeng@bianjie.ai>
Co-authored-by: Web3 Philosopher <seunlanlege@gmail.com>
Co-authored-by: Marius Poke <marius.poke@posteo.de>
Co-authored-by: Daniel T <30197399+danwt@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.com>
Co-authored-by: Anca Zamfir <ancazamfir@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-for-review Pull requests which are ready for review.
Projects
No open projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants