-
Notifications
You must be signed in to change notification settings - Fork 212
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
orchestration - ICA Controller - Account - Close Connection Lifecycle #9192
Comments
Note: it does not seem that localchain.js has an equivalent concept of closing currently |
Also to consider: connections can be closed from underneath us in some error cases (i think ordered channels are more susceptible to closing than unordered channels). In the |
Something tangential to consider: localchain.js / vat-localchain does not have a concept of closing an account. Should it? |
Re-assigning to @0xpatrickdev for design |
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. This handler is only called when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. This handler is only called when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. This handler is only called when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. This handler is only called when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. This handler is only called when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
I worked with @michaelfig and this how we plan to handle the questions:
|
At least the first item here is dependent on #9066. I think #9587 will mark this closed if these items are tracked in a separate ticket (they seem out of scope to "ICA Controller", anyways, but this ticket was written some time ago) cc @mitdralla @LuqiPan |
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. This handler is only called when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. This handler is only called when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reopen() will only fire when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reopen() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .close(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reopen() will only fire when external factors force a channel closure (iow - if .close() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reactivate() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .deactivate(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reactivate() will only fire when external factors force a channel closure (iow - if .deactivate() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reactivate() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .deactivate(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reactivate() will only fire when external factors force a channel closure (iow - if .deactivate() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reactivate() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .deactivate(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reactivate() will only fire when external factors force a channel closure (iow - if .deactivate() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reactivate() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .deactivate(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reactivate() will only fire when external factors force a channel closure (iow - if .deactivate() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reactivate() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .deactivate(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reactivate() will only fire when external factors force a channel closure (iow - if .deactivate() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reactivate() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .deactivate(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reactivate() will only fire when external factors force a channel closure (iow - if .deactivate() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
- adds .reactivate() method to IcaAccountKit['holder'] to re-establish an ICA channel using the original requestedRemoteAddress. it's intended to be used internally to automatically re-establish a channel, but also exposed to holders if they wish to re-open their account after calling .deactivate(). includes corresponding 'ReopenAccount' invitationMaker on CosmosOrchestrationAccount. - performs cleanup after a connection is closed - namely resetting localAddr, remoteAddr, and connection in state. chainAddress and port are preserved. - adds logic to onClose() handler to automatically re-establish the ICA channel. `reactivate() will only fire when external factors force a channel closure (iow - if .deactivate() is called by the holder, this will not fire) - updates network-fakes.ts to cache mockChainAddresses based on PortID:ConnectionID to mimic ICS-27 protocol - refs: #9192 - refs: #9068
refs: #9068 refs: #9192 ## Description 1. Includes e2e tests of different channel closing behaviors added in #9857: - ~~Automatically reopen a closed ICA channel (e.g. a packet timed out)~~ requires #9891 to complete. See #9864 (comment) - `CosmosOrchestrationAccount` (`IcaAccout`) holder can close their account - `CosmosOrchestrationAccount` (`IcaAccount`) holder can reopen their account 2. Includes `publish local and remote ibc addresses to vstorage` to facilitate querying the ICA account (channel) info from an off-chain client. - NOTE: if an account is a reopened, the localAddress and remoteAddress originally published to vstorage will be stale. Same with some of the values stored in `CosmosOrchestrationAccountKit`'s exo state. The ChainAddress will be the same, but the full address strings will contain new channelIDs. This is tech debt being taken on until #9066. 3. Includes test to ensure clients cannot successfully submit `MsgChanCloseInit` for ICA and Transfer channels ### Security Considerations n/a ### Scaling Considerations n/a ### Documentation Considerations n/a ### Testing Considerations This PR includes high fidelity tests with simulated chains. ### Upgrade Considerations n/a
In the course of #9114, we realized we need to give more thought to Closing accounts.
https://github.com/Agoric/agoric-sdk/pull/9114/files#r1550578668
The text was updated successfully, but these errors were encountered: