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

Design Solana ABI management process #7421

Closed
mvines opened this issue Dec 11, 2019 · 1 comment · Fixed by #7524
Closed

Design Solana ABI management process #7421

mvines opened this issue Dec 11, 2019 · 1 comment · Fixed by #7524
Assignees

Comments

@mvines
Copy link
Member

mvines commented Dec 11, 2019

The Solana ABI (binary interface to the cluster) is currently only defined implicitly by the implementation, and requires a very careful eye to notice breaking changes. This makes it extremely difficult to upgrade the software on an existing cluster without rebooting the ledger. During early development we deliberately decided to ignore breaking ABI changes but we can no longer afford this luxury.

As a starting point, I think we will need:

  1. A way to identify all structs/enums that cannot be modified without breaking the ABI (Transactions, Shreds, Ledger bits).
  2. A mechanism to turn CI red when those structs/enums are modified.
  3. A human process to decide whether a breaking change should be accepted, and if so how to manage the resulting hard fork.
  4. A comprehensive test suite (cc: Network ABI Testing #6123) of golden binary ledgers that should always be consumable by newer software versions
  5. Guidelines to the eng team for all of the above, including general agreement on how strict we want to be. eg, once the system program is published/locked down, would it be permitted to even add a new system instruction? Most strictly, no
@mvines mvines added this to the Supertubes v0.22.0 milestone Dec 11, 2019
@ryoqun
Copy link
Member

ryoqun commented Dec 11, 2019

(Coming from here)

I'll give this issue a try!

First I'll lightly research what other projects are doing with regard to tracking ABIs in the rust community and by other DLTs. And I'll write a draft design proposal for it based on these findings (This will be my first design proposal, btw!).

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