-
Notifications
You must be signed in to change notification settings - Fork 33
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
Implement MVC E2E Feature Path F.5: Protocol Upgrades #882
Comments
@0xBigBoss This issue looks great! Made some small inline nits to the description but also have a few extra questions.
Rather than registering a handler (which is the async cosmos approach), the v1 repo is simpler in most sense. I believe the module should simply upgrade the protocol rather than needing a handler registration.
I believe this would need to be either 67%+ of the validator consensus or a special ACL owner as well. DO you think any network participant should be able to cancel the transaction? Extra requests:
|
@0xBigBoss Wanted to check in if there are any updates or progress on this? |
@h5law posted the following question in one of our internal channels. @0xBigBoss, is it fair to assume that our protocol upgrades will be the equivalent of Tendermint's |
hey @Olshansk issue description is updated.
Need to think about this, probably safe to do it this way as well. I planned on registering them during the upgrade module creation and applying any needed upgrades during the start. I guess these details can be an internal detail though and not necessarily available via interface. I believe I wanted to keep them separated so we can have a path for upgrading a binary early without necessarily applying them. I think it also makes sense to separate the logic of which upgrades are capable of handling vs actually applying them. Will move forward with it as a internal or submodule.
sry this was a typo.
hey @h5law and @Olshansk , we could include a separate variable, or we could convert the app version string to a number. I don't have much context on the purpose of that height struct though. |
To give context here the Maybe converting the app version string to a number is good, I was thinking more basic in terms of V0 height 100 would look like |
I looked at the docs [1] and here's the key takeaway:
tl;dr
This should be enough to unblock both efforts to continue in parallel, but lmk if you have any other questions. |
I'll be moving and grooving on this issue on this branch 0xbigboss/gov/upgrades-and-params |
Feel free to create a draft PR and keep pushing changes so we can provide preliminary feedback on specific parts if/when necessary. |
@0xBigBoss Wanted to check in w/ a few questions:
|
I am only reading that code path for now. But I don't think I'll include it in the PR other than the TODOs.
Nope not a blocker at all.
Nothing too crazy so far! Just filling the codebase with a bunch of debug logs lol.
Not quite there yet, I may have some changes to the spec once I have the initial version e2e with upgrades, but so far so good. I am still in progress on the utility/unit of work/persistence modules and how they all work together. |
I really want to leverage the "beginner's 👀 " as you do this. If you find opportunities to improve the codebase, refactor things, improve documentation, add tooling, etc, PLEASE don't hesitate to submit PRs alongside or create issues to track it. Thanks in advance! |
Objective: Implement MVC E2E Feature Path F.5: Protocol Upgrades
Origin Document:
Purpose: The purpose of this feature is to provide an interface for registering and applying blockchain protocol upgrades. It includes mechanisms for version-specific upgrade handlers, submitting upgrade messages, cancelling scheduled upgrades, as well as database schema and data migration during hard forks.
Actors: Check all of the protocol actors involved in the feature:
Data Structures:
Interfaces:
Diagram:
User Stories as Tests:
Happy Paths:
Happy Path: As an ACL owner, I successfully submitted a protocol upgrade message with valid input and checked the protocol is upgraded after the activation height. The upgrade includes schema changes and consensus rule changes.
Sad Path: As an ACL owner, I attempt to submit a protocol upgrade message with invalid input. The system rejects the message.
Sad Path: As an ACL owner, I attempt to jump forward too many versions with a protocol upgrade message. The system rejects the message.
Happy Path: As a ACL Owner, I submit a
CancelUpgrade
when I realize an upcoming scheduled upgrade contains issues. The gets accepted before the activation height, and the scheduled upgrade is cancelled.Sad Path: As a ACL Owner, I attempt to cancel a scheduled upgrade after its activation height has passed. The system rejects the
CancelUpgrade
.Deliverable
General issue deliverables
Testing Methodology
make ...
make ...
make test_all
LocalNet
is still functioning correctly by following the instructions at docs/development/README.mdk8s LocalNet
is still functioning correctly by following the instructions hereCreator: @0xBigBoss
Co-owner: @Olshansk
The text was updated successfully, but these errors were encountered: