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

Add import/export for client, connection, channel states #5948

Closed
cwgoes opened this issue Apr 7, 2020 · 13 comments · Fixed by #6087
Closed

Add import/export for client, connection, channel states #5948

cwgoes opened this issue Apr 7, 2020 · 13 comments · Fixed by #6087
Assignees

Comments

@cwgoes
Copy link
Contributor

cwgoes commented Apr 7, 2020

Then chains can be import-export upgraded & retain clients, connections, channels.

For light client verification to work, the import/export will have to retain the height (e.g. start at n + 1) and the chain ID.

cc @fedekunze

@cwgoes cwgoes added the x/ibc label Apr 7, 2020
@cwgoes cwgoes added this to the IBC 1.0 milestone Apr 7, 2020
@fedekunze
Copy link
Collaborator

fedekunze commented Apr 7, 2020

which are the types we need to import and export?

@cwgoes
Copy link
Contributor Author

cwgoes commented Apr 7, 2020

All of the state in x/ibc, essentially, I don't think there is anything we shouldn't export.

@fedekunze
Copy link
Collaborator

so if there are connections are channels open already should we keep them open or recreate the handshakes?

@fedekunze
Copy link
Collaborator

ok so we should also write simulations for genesis state too

@cwgoes
Copy link
Contributor Author

cwgoes commented Apr 8, 2020

If we end up doing upgrades at height n with the same chain ID I think we should keep the historical info as well.

@fedekunze
Copy link
Collaborator

fedekunze commented Apr 8, 2020

If we end up doing upgrades at height n with the same chain ID I think we should keep the historical info as well.

AFAIK you can't export state or not depending on a condition of the importer chain

@cwgoes
Copy link
Contributor Author

cwgoes commented Apr 8, 2020

I just mean "if we end up supporting those kinds of upgrades" (which are strictly better than our current kind of upgrade & so should replace them completely). As I understand this still requires changes in Tendermint.

@cwgoes
Copy link
Contributor Author

cwgoes commented Apr 20, 2020

Ref #5935 which might block on this.

@fedekunze
Copy link
Collaborator

kk, I'll start working on this. @cwgoes just to confirm, we should only export open connections and channels, right? I also assume all clients will need to be exported and then updated with the new chain ID on InitGenesis.

@fedekunze
Copy link
Collaborator

@AdityaSripal suggested to not export frozen clients 👍

@cwgoes
Copy link
Contributor Author

cwgoes commented Apr 24, 2020

Hmm, I'm pretty sure we want to export everything - if we don't export a closed channel, for example, the identifier will be freed up, and previously sent packets could possibly be re-played. We don't yet have a particular mechanism for "recovering" closed channels safely (it will require governance intervention), but in the meantime I think it's safest to export/import the entire state.

@fedekunze
Copy link
Collaborator

the identifier will be freed up, and previously sent packets could possibly be re-played

how? the timestamp would timeout, right?

@cwgoes
Copy link
Contributor Author

cwgoes commented Apr 24, 2020

the identifier will be freed up, and previously sent packets could possibly be re-played

how? the timestamp would timeout, right?

Possibly, but it depends on the timing of the export & the specific heights/timestamps involved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants