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
Governance program #1635
Governance program #1635
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is starting to look really clear, still a few questions about those extra mints and how to handle some of the larger types
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made some initial comments but I'm still a little confused overall TBH and trying to orient myself. It feels like we're trying to do shoot for something very generic but at the same time specializing parts of the interface for program upgrades, which I find unsettling design wise.
I don't fully grok the Council yet and why we need it.
You are right we are aiming to create all purpose governance program but the prototype was focused on program upgrades. Given that I think we should specialise the parts of the api where it targets program upgrades explicitly. I'm thinking about the following structure: Please let me know what you think |
Council is a way to define an optional voting population which is different from the community of main token holders A practical application of this policy may be to have a very large population controlling |
Thanks! The hard coding of a Governance mint and a Council mint doesn't sit well with me yet. For example what if a 3rd body is needed for some applications, or a Council isn't needed. Instead a Governance could just have 1 or more mints associated with it, and the mint that is used as the Governance mint vs Council mint is determining when a Proposal is created for that Governance account. |
It's in fact like that. Both |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like the changes since last time! Beyond the comments I have here, some of which are final nits, looks good to me.
…oken threshold limits
Co-authored-by: Michael Vines <mvines@gmail.com>
Co-authored-by: Michael Vines <mvines@gmail.com>
1) Update VoterRecord and governing tokens deposit/withdraw workflow to support mulitsig 2) Support vote authority 2) Use u64 instead of Slot for time periods
Hey, love the work on governance. I have a few thoughts that I was wondering if you would consider. For every proposal. Users vote both with their wallet(1 vote) and with their sol(1 vote per sol). Both 66% of sol in the voting wallets have to vote yes for a proposal and 66% of the number of wallets voting have to vote yes for a proposal go through. THIS HELPS WITH PEOPLE WHO HAVE STAKE GETTING MORE OF A SAY, WHILE MAINTAINING PURE DEMOCRACY AS WELL Additionally, for a proposal to go through, there must be a certain percentage of total SOL/wallets that vote for an improvement proposal in total. Additionally, I think voting should be able to happen without taking your SOL out of staking, so possibly a vote token could be minted when you stake. I also think an election every few years for a handful of devs to a council would be a good way to establish some checks and balances! Then this council also has to vote 66% for a proposal for it to go through. In my opinion, with governance, we should try to mimic the democratized governments of the world with the added twist that SOL and wallet number should have value in the voting system. Checks and balances are key! Let me know what you think! I have never commented on github before, but believe I have some good ideas about a democratized and sustainable governance system. |
Summary:
Governance is a program the chief purpose of which is to control the upgrade of other programs through democratic means.
It can also be used as an authority provider for mints and other forms of access control as well where we may want
a voting population to vote on disbursement of access or funds collectively.
Governance can handle arbitrary executions of code, but it's real power lies in the power to upgrade programs. It does this through executing commands to the bpf-upgradable-loader program.
Bpf-upgradable-loader allows any signer who has Upgrade authority over a Buffer account and the Program account itself
to upgrade it using its Upgrade command.
Governance accounts:
Proposal workflow: