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

all vats that will be deployed in Vaults Release must be upgradable #6553

Closed
10 tasks done
Tracked by #7562
dckc opened this issue Nov 9, 2022 · 7 comments
Closed
10 tasks done
Tracked by #7562

all vats that will be deployed in Vaults Release must be upgradable #6553

dckc opened this issue Nov 9, 2022 · 7 comments
Assignees
Labels
contract-upgrade cosmic-swingset package: cosmic-swingset enhancement New feature or request Epic Governance Governance Inter-protocol Overarching Inter Protocol needs-design vaults_triage DO NOT USE
Milestone

Comments

@dckc
Copy link
Member

dckc commented Nov 9, 2022

What is the Problem Being Solved?

Analogous to #5666:

We need all of these to be upgradable, so we don't find ourselves stuck later when we want to add a feature or fix a bug. That means replacing their Far objects with instances of a durable Kind.

Description of the Design

based on a quick audit it looks like the gaps are:

Tasks

  1. automerge:no-update
  2. automerge:no-update bypass:integration
    dckc
  3. vaults_triage
    turadg
  4. automerge:no-update contract-upgrade cosmic-swingset
    michaelfig
  5. oracle vaults_triage
    turadg
  6. ERTP cosmic-swingset enhancement vaults_triage wallet
    michaelfig
  7. 7 of 7
    cosmic-swingset enhancement vaults_triage
    dckc
  8. bug cosmic-swingset vaults_triage
    michaelfig warner
  9. enhancement vaults_triage
    michaelfig

indicentally, not in pismoA nor vaults:

note related issues covering some startup vats/contracts not in the @agoric/vats package:

and there's perhaps some overlap in scope with #4511

Security Considerations

?

Test Plan

CI test (swingset or bootstrap) of each vat

cc @JimLarson @turadg @michaelfig @Chris-Hibbert

@dckc dckc added enhancement New feature or request cosmic-swingset package: cosmic-swingset Inter-protocol Overarching Inter Protocol Governance Governance contract-upgrade labels Nov 9, 2022
@dckc
Copy link
Member Author

dckc commented Nov 9, 2022

@Chris-Hibbert are the committee, contractGovernor and binaryVoteCounter contracts in the scope of #5200?

perhaps it's better to scope this to packages/vats/; #4983 covers packages/inter-protocol. #4511 isn't scoped to any package(s)... hm...

@dckc dckc changed the title make startup vats upgradeable: board, chainStorage, bank, ... make vats package: board, chainStorage, bank, ... Nov 9, 2022
@dckc dckc changed the title make vats package: board, chainStorage, bank, ... make vats package upgradeable: board, chainStorage, bank, ... Nov 9, 2022
@Chris-Hibbert
Copy link
Contributor

are the committee, contractGovernor and binaryVoteCounter contracts in the scope of #5200?

Yes.

@warner
Copy link
Member

warner commented Jan 25, 2023

That means replacing their Far objects with instances of a durable Kind.

To be picky (I was too glib in the issue that this line was copied from), it also requires:

  • those KindHandles are kept in durable storage
  • the startup process of each vat/contract uses Baggage and more defineKind calls to reassociate behavior with every Kind (defineKind must be called at the start of every incarnation, so once per upgrade)
  • it also uses provide patterns to ensure that each exported object is only created once (in the first incarnation), not once-per-upgrade
  • everything that behavior needs to do its job is kept in durable storage

But for sure, if you see Far in the code for a vat, and that object isn't explicitly marked as "subject to abandonment during upgrade, clients will observe the trauma and must be prepared to deal with it", then that vat is probably not really upgradable.

@dckc
Copy link
Member Author

dckc commented Jan 26, 2023

... it also requires: ...

Is that list collected anywhere for reference? Is #5708 still a good summary?

In any case, perhaps it's good input to Agoric/documentation#750

@dckc dckc changed the title make vats package upgradeable: board, chainStorage, bank, ... make vats package upgradeable: board, chainStorage, ... Jan 26, 2023
@dckc dckc assigned michaelfig and unassigned dckc Mar 6, 2023
@turadg
Copy link
Member

turadg commented Mar 30, 2023

@dckc I've replaced 5200 in the description with #7248 which is about upgradability per se. That the state of governance is durable (#5200) is not strictly a requirement.

@michaelfig michaelfig assigned ivanlei and unassigned michaelfig Apr 21, 2023
@turadg turadg changed the title make vats package upgradeable: board, chainStorage, ... all vats that will be deployed as part of the bulldozer must be upgradable Apr 24, 2023
@turadg
Copy link
Member

turadg commented Apr 24, 2023

Treating this ticket as an epic, removing its estimate. Made each bare checklist item into an issue and estimated.

@turadg turadg changed the title all vats that will be deployed as part of the bulldozer must be upgradable all vats that will be deployed in Vaults must be Zoe-upgradable Apr 24, 2023
@turadg turadg changed the title all vats that will be deployed in Vaults must be Zoe-upgradable all vats that will be deployed in Vaults Release must be upgradable Apr 24, 2023
@dckc dckc added the Epic label May 6, 2023
@dckc
Copy link
Member Author

dckc commented May 9, 2023

The last of the items on the checklist here is done:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contract-upgrade cosmic-swingset package: cosmic-swingset enhancement New feature or request Epic Governance Governance Inter-protocol Overarching Inter Protocol needs-design vaults_triage DO NOT USE
Projects
None yet
Development

No branches or pull requests

8 participants