-
Notifications
You must be signed in to change notification settings - Fork 399
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
extend 03-connection with a proof object for chains that can't introspect their own consensus state. #839
Conversation
@@ -360,13 +360,14 @@ function connOpenTry( | |||
proofClient: CommitmentProof, | |||
proofConsensus: CommitmentProof, | |||
proofHeight: Height, | |||
proofHostConsensusState: CommitmentProof, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a way to signal that this is optional?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also my understanding is that in your implementation the proof field here is actually a marshalled header.
This is the flow from my understanding:
- You pass in the marshalled header here in
proofHostConsensusState
- in your handler you check that the passed in header hashes to one of your stored header hashes
- you create a consensus state out of the header
- you prove that the counterparty stored that consensus state in its client.
So this field shouldn't actually contain a CommitmentProof
object. Instead it contains some arbitrary chain-specific data, that will be used to verify proofConsensus
that is passed in above.
So I think instead of referring to it this way, it makes more sense to call this something like:
hostConsensusInfo: bytes
or something similar, and to signal in documentation that this is optional for chains to accept.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a way to signal that this is optional?
yeah there is
hostConsensusInfo: bytes
how about hostConsensusStateProof?: bytes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still think it shouldn't be named proof. Because the object in question is not actually a proof.
It is metadata that is constructing the value that will get proven agains the consensusStateProof
which is a separate argument to this function.
Open to a different name other than hostConsensusInfo
but I do think we should avoid Proof
in the name since semantically it doesn't match with the way we're using Proof
arguments in IBC spec functions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any other information a chain may request to extend the connection handshake info with? Or is this the only expected addition?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the only addition
I'm okay with this change, but here are my reservations:
|
Bump, I'm in favour of moving the spec to this repo. And possibly exporting generated rust, go types from this repo. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved, blocked on another approval. Perhaps @colin-axner when you can put it in your iteration. cc: @crodriguezvega
I can take on the nits in a separate PR.
Agreed with the proto approach, but that should be done in a separate PR as well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…pect their own consensus state. (cosmos#839) * extend 03-connection with HostConsensusStateProof * make hostConsensusStateProof optional
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
Hey guys, Protocol Lead for composable here. We've been working on extending ibc beyond cosmos and we've been working with the core ibc team on making this happen. Through this relationship we requested the 02-client refactor and now finally we're requesting this 03-connection extension.
The Problem
03-connection as is requires that host state machines can introspect their own consensus state. Unfortunately this requirement is incompatible with every single blockchain we're working with (substrate, NEAR, ethereum). All of whom do not provide this sort of api to query past headers from within the blockchain runtime.
The solution
Inorder to keep to the IBC 03-connection specification and not skip the counterparty consensus state verification. We replace the requirement of host
ConsensusState
introspection, with a requirement of an on-chain map of block numbers to header hashes which can then be used to verify theproofHostConsensusState
(aka full header)