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

Programify feature gate #1

Closed
wants to merge 5 commits into from
Closed

Conversation

buffalojoec
Copy link
Owner

@buffalojoec buffalojoec commented Oct 26, 2023

This is SIMD 1/3 expected for Multi-Client Feature Gates. See solana-foundation#76

Goals:

  • Decentralized control over queuing new runtime features
  • Automatic feature activation selection based on stake weight with supporting
    software
  • Decentralized governance of the mechanism itself

Resulting Architecture:

  1. 👉 Feature Creation: Features can be created by anyone. Each is owned by
    an upgradeable BPF program at Feature111111111111111111111111111111111111
  2. Feature Queuing: A governance process nominates features that should be
    queued for activation
  3. Feature Recognition & Activation: Features are activated based on stake
    support of nodes who recognize the feature in their software version

Summary

This SIMD outlines a proposal to replace the non-existent system account at
address Feature111111111111111111111111111111111111, which is the owner of
all feature accounts, with an upgradeable BPF program.

It defines the program's initial functionality - which consists solely of the
capability to revoke pending feature activations - and an accompanying
governance system for managing upgrades of the program.

Important note: the process by which core contributors activate features
would remain completely unchanged by this SIMD.

bji and others added 3 commits October 17, 2023 00:14
* create transaction receipt simd

* update

* Update 0063-transaction-receipt.md

* Update 0063-transaction-receipt.md

* fix name

* tree spec wip

* receipt tree spec wip

* fixup

* remove logs from receipt

* update

* update

* update

* fix lint

* fix bankhash

* Update 0064-transaction-receipt.md

* Update 0064-transaction-receipt.md

* Update 0064-transaction-receipt.md

* update tree spec

* change receipt structure to use Message hash instead of a signature.

* bench: add benchmarks on receipt tree with message hashes instead of signatures

Removed signatures and added message hashes for our benchmarks.

* minor fixes

* minor fixes

* Update 0064-transaction-receipt.md

* fix: add len of receipts to tree

* fix: add byte ordering for length suffix

* fix: lint

* change Receipt to TransactionReceipt

Co-authored-by: Trent Nelson <[email protected]>

* change slot to block

Co-authored-by: Trent Nelson <[email protected]>

* optimisations and clean up

* remove redundant comment

Co-authored-by: ripatel-fd <[email protected]>

* remove redundant comment for version

Co-authored-by: ripatel-fd <[email protected]>

* add root for empty set.

Co-authored-by: Richard Patel <[email protected]>

* fix typo

Co-authored-by: Richard Patel <[email protected]>

* append justification for sha256

Co-authored-by: Richard Patel <[email protected]>

* change terminology for receipts

Co-authored-by: Richard Patel <[email protected]>

* fix receipt terminology for tree

Co-authored-by: Richard Patel <[email protected]>
Co-authored-by: Trent Nelson <[email protected]>

* Minor clean up

* fix

* Update 0064-transaction-receipt.md

* grammar

* clarify

* typo

* clarify

* company name

* precision

* add layout and fix lint

Co-authored-by: Richard Patel <[email protected]>

* fix typo in transaction

Co-authored-by: lheeger-jump <[email protected]>

* make layout section more explicit

Co-authored-by: Richard Patel <[email protected]>

* nit: mention theoretical perf in hash function choice

Co-authored-by: ripatel-fd <[email protected]>

* change should to must - rf2119

Co-authored-by: Trent Nelson <[email protected]>

* update should to must - rfc2119

Co-authored-by: Trent Nelson <[email protected]>

* replace "fixed" with "avoided" to be more clear

Co-authored-by: Trent Nelson <[email protected]>

* More details in terminology section

Co-authored-by: Trent Nelson <[email protected]>

* fix lint and add missing node in tree spec

Co-authored-by: Trent Nelson <[email protected]>

* Clarify impact of receipts

Co-authored-by: Trent Nelson <[email protected]>

* fix lint

* add intermediate_node when leaf count is zero

Co-authored-by: Trent Nelson <[email protected]>

* Author list

* Fix hash notation

Co-authored-by: Trent Nelson <[email protected]>

* add empty intermediate root for empty vector illustration

* Empty tree

---------

Co-authored-by: harsh4786 <[email protected]>
Co-authored-by: Trent Nelson <[email protected]>
Co-authored-by: ripatel-fd <[email protected]>
Co-authored-by: Richard Patel <[email protected]>
Co-authored-by: lheeger-jump <[email protected]>
Co-authored-by: Trent Nelson <[email protected]>
… template (solana-foundation#73)

* add: living status

* add: key work language to template

When writing your SIMD, you should follow keyword usage as specified in rfc 2119 and rfc 8174

* add: supercede and extends

added the ability to denote if a specific SIMD proposed supercedes or extends a previous SIMD

* fix: lint issues

* added blurb on scrutiny and review

added blurb on scrutiny and review
Copy link

@CriesofCarrots CriesofCarrots left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! A few suggestions (none of which are character-wrapped, sorry... if you know of some good way to do that, short of c+p-ing out to my text editor, please let me know!).

proposals/0077-programify-feature-gate.md Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Outdated Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Outdated Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Outdated Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Outdated Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Outdated Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Outdated Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Outdated Show resolved Hide resolved
proposals/0077-programify-feature-gate.md Outdated Show resolved Hide resolved
@buffalojoec
Copy link
Owner Author

buffalojoec commented Oct 27, 2023

Thanks for the review! I broke the revisions up into a few commits. Once we're happy with it, I'll squash and open the SIMD for review.

Copy link

@CriesofCarrots CriesofCarrots left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, thanks for the cleanup! I'm happy with this as a starting place for the SIMD

address wording feedback

revise motivation section

one more pass on wording
@buffalojoec buffalojoec force-pushed the programify-feature-gate branch from 04f077e to 93322ef Compare October 29, 2023 11:21
@buffalojoec buffalojoec closed this Nov 9, 2023
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 this pull request may close these issues.

5 participants