What kind of governance have you intended for grin?
New headmaster will be brought in when previous one dies/is murdered.
I’ve been agonising over a draft e-mail on that topic for almost a year now (period during which I’ve accidentally lost one draft). I’m going to have to ship it soon.
In the meantime, let me ask this: what are the different types of governance model you’ve identified and which would you prefer for Grin?
If possible support clean pre-fork coin splitting.
On top of my other unpopular opinions I’m also anti-democracy, I believe the voting on segwit delayed it a year. An ideal system would be declared flag day as if it was bitcoins early days, but user friendly coin splitting to let the market decide and develop “futures” trustlessly
While I suspect it would always be messy, but there is a worlds of difference between, what I think should be possible and the story of whichever bch millionaire offered to make 1 to 1 trade but decided the technical hassle wasn’t worth it and only one exchange got around to implementing it.
I’m still confused by scriptless scripts, but such a thing should be possible right?
IMO the most important models are on- and off-Blockchain governance.
I dislike off-chain governance for being very slow and not super effective. I feel like it stalls development.
The last governance example I had a look at was Polkadot’s way of solving the issue, it’s quite interesting https://github.com/paritytech/polkadot/wiki/Governance
Has an approach and some ideas towards goverance of a free currency-related, blockchain project.
It’s worth the read, not super advanced but understood and implemented.
It might be helpful to attempt to define “governance” and what is meant by it. In the blockchain space, I personally like how Vlad Zamfir puts it:
This aligns with my own understanding: Governance is about how decisions are made that are seen as legitimate. Legitimate, in the eyes of the participants (those involved in making decisions) and the stakeholders (those affected by those decisions). One can be a stakeholder and a participant at the same time, for example the congressman who is also a citizen, or the CEO who is also an employee.
I’ve tried to distill some of my thoughts in general about Governance, what it means in the context of Grin, and some questions to the community, as below.
- Governance has been a challenge for as long as humans have organised in groups. It’s not a new problem, and it’s certainly not unique to blockchains. There is yet to be a perfect solution, every model comes with its own benefits and limitations. It is not an easy problem and there is no one single obvious solution.
- If there is no conviction that decisions, actions, solutions will do good, it might be better to tread carefully and instead work to avoid doing harm. Keep it simple, stupid. Less is more. Etc.
- Governance is not only a design challenge, it’s a social challenge. One can devise the most clever system ever designed, but it won’t matter if the participants and stakeholders do not see it as legitimate.
- It is in my mind premature to solutionize and talk about “on-chain” or “off-chain” models (the “how”) before having a clear definition about what is to be governed, who the participants and stakeholders are, what the principles are, and what purpose is meant to be achieved with the governance in the first place (the “what”).
- There is a governance model in place already for Grin, even if it may not be explicit or documented in great detail. As a mere observer, from my perspective it looks like a type of meritocracy, where a technocratic council makes decisions, and a leader (Igno) has the right to exercise final say, but hardly ever has the need to do so. Everyone is free to join and participate in this process, but their voice will carry different weight depending on the respect and trust they command among the council’s current participants. You gain trust and respect by making meaningful contributions to the project, with a heavy emphasis on code contribution.
- There is legitimacy in this existing process, in that there is tacit consent in the community about it. I have not noticed anyone questioning the process with which decisions are being made so far, or challenging decisions as illegitimate. In that regards the current model, in my mind, is working for the time being.
- That is not to say that there are no contentious topics. For example, the discussion of emission rates have already resulted in public “promises” of hard forks, and may also have played a role in the formation of a new MW project. There will always be dissent, and this is just one example of a topic. Part of the objective of governance is to ensure that decisions, even those that individuals may disagree with, are still considered legitimate by the community as a whole. This will not always succeed.
- In general, the larger the community of participants and stakeholders becomes, the more difficult governance and co-ordination becomes. It therefore makes sense to work on formalising a process as early on as possible and iterate, allowing it to evolve together with the community. It’s easier to establish a baseline model in a small community in times of calm, than trying to force a complicated model onto a large community in times of need.
- At this stage in the project, it’s smooth sailing on fairly calm waters. There is no mainnet, there is no value easily attributed to the project or the network, and people do not seem that heavily invested in or incentivised by particular decision outcomes. This current state is temporary. As the project matures there will be a tonne of issues to resolve and difficult decisions to take that will come to impact many. When this time comes, it will be better to have a governance model in place that has a strong sense of legitimacy in the community and can tackle decisions (no matter the outcome) in a way that is well anchored among stakeholders and participants. Rather than dealing with these issues in an ad-hoc way that may result in the community questioning the validity of the decisions taken.
- As such, there is in my opinion no better time than right now to start working on formalising a governance model for Grin. Given the relatively early stage of the project, it may offer us learning opportunities before matters become complicated and mistakes costly.
- On the other hand, there’s also not much use in bike-shedding, or attempts to impose structure and order where none is needed. It could be that this just results in politics and acts as a distraction from meaningful work. But it may also be that it opens up for wider contributions and faster progress. Hard to say at this point, a lot of it depends on those who choose to engage.
C. Questions to the community
- How well do you think the existing model works, today, tomorrow and the day after?
- What do you think about any attempts to formalise a governance model structure?
- Are there specific subjects/questions you think are particularly important to be handled through a governance plan for Grin? If so, what are those?
- Is there a document today, outlining the principles and objectives that represent the mission of the Grin project and its community? If not, is there value in trying to create one?
I found the following material useful when thinking about this topic.
- Governance at EthCC '18, with Vlad Zamfir, quite theoretical and general.
- Governance at Deconomy '18, with Vlad Zamfir, more practical, outlining Ethereum’s current model and some of its challenges.
- Panel on Governance at Zcon0, with Peter Van Valkenburgh, Zooko Wilcox, Jill Carlson, Vitalik Buterin, and Jameson Lopp.
- An overview of Governance in Blockchains at Zcon0, with Nic Carter.
- Ethereum’s Governance Model at Zcon0, with Hudson Jameson
- Blockchain governance: Programming our future, by Fred Ehrsam
- Against on-chain governance, by Vlad Zamfir in response to Fred Ehrsam
- Blockchains should not be democracies, by Haseeb Qureshi
- Against Community Governance, by Dan Eigennman
- What is on-chain cryptocurrency governance? Is it plutocratic?, by Richard Reid. Responding to above articles and their criticisms of on-chain governance, in the context of Decred and Politeia.
Pitchforks everyone, can’t be having masters in the coming cypto-anarchism future
Governance is the codification and derandomization of decision making; decisions will always be done by humans and therefore not partially restrained by whatever process you have in mind, or it will be shit and you get eth dao-like bugs. I see no reason to be fancy about it. A fully anonymous currency that will almost certainly going to be used to buy drugs online and little else for years; legitimacy is not main concern or its the wrong word.
Thanks a lot for thinking about this @lehnberg, I’ve been trying to flesh out a proposal for a while but it’s a complex topic and I find it quite hard to mix it with development. I might have been trying to boil the ocean all in one go as well.
I generally agree with your general thoughts and your points on Grin. I also think that starting with something now is better than waiting. My take on your questions:
- How well do you think the existing model works, today, tomorrow and the day after? Today is fine but I agree we have it easy. It’s likely to change fairly rapidly as we approach mainnet.
- What do you think about any attempts to formalise a governance model structure? It’s a necessity, at least for us. We have to also keep in mind that most of governance is emergent and defined by the people involved. So we have to be careful to not come with a structure that would get too much in the way either. This community is young.
- Are there specific subjects/questions you think are particularly important to be handled through a governance plan for Grin? If so, what are those? There are a ton: hard forks, how to compensate developers, how to raise funds generally and direct them, what will we do in case of a major flaw allowing arbitrary coin issuance, ASIC resistance, etc.
- Is there a document today, outlining the principles and objectives that represent the mission of the Grin project and its community? If not, is there value in trying to create one? No and yes.
I think it’s important to also think of who are the major stakeholders and how can they be represented. For Grin, we’ll likely have developers and general contributors, miners, users, investors (are they different from users?) and companies (like exchanges and web wallets). How can each of these groups be represented? How can we do so while keeping governance decentralized and protect everyone’s privacy?
I had a model in mind that addresses some of this but haven’t refined it very much. I’ll still throw it out there to see what others’ thoughts are. Imagine we have a “wallet” comprised of any number of signatory. To begin with, we can seed that with the current committers list (people who are the most involved). So each committer has a key and it requires a certain threshold of signatures to move funds. Now people can get added, either by votes of people who are already in that group, or by popular vote (for example). We could reach hundreds of people who ideally all care and all represent some point of view.
From here, the decision process, at least as far as how it pertains to funds deployment is a series of transactions. And maybe even for decisions that don’t entail fund deployment, a positive vote could just be whether an output was spent or not. The funding itself can be done by applying gentle pressure on miner and investor benefits (ala @tromp fair mining license).
Of course, that still leaves a lot out (like what gets decided, how, what types of votes, etc.). Just throwing this out there to check what others’ think as well.
Would it be possible to “weigh” the voting signatures in your hypothetical “consensus wallet”? So that you and yeastplume for example have a greater say (maybe by having a larger number of signatures attributed to you) so that your inputs are more valuable, but still not omnipotent? Could start with a set number of signatures (like a thousand or something) shared proportionally between important voices like your own (say you get the equivalent of 300 signatures or something) and have that number decrease with every hard fork, so that over time your weighted opinion goes down and those signatures can be divvied up among new voices, such as third party app devs/exchanges/etc?
Then if you go all Voldermort on us, the spread of those signatures can be altered to reflect your craving for despotic power, and a hard fork can happen which allocates less voting weight to you? Nobody would choose the fork if it was unjust in theory.
There can be a flexible long-term vision for how leadership becomes less pronounced over time and votes more distributed.
MakerDAI (stable coin DAO) is currently working on their governance, and as they are one of the few legit projects out there, and in a similar vein to grin (making extremely useful, bulshit-free currency tech), it’s probably worth studying their efforts. Interesting recent post from them here: https://medium.com/makerdao/foundation-proposal-caeb382465c1
Thought I’d continue with a couple more ideas I’ve been playing with, hopefully some of them will elicit a reaction
- We could take some inspiration from the Athenian democracy. To be nominated, someone needs to donate (directly or indirectly) a fixed amount of grins to a project fund. To vote, every grin user can somehow commit their holdings (a proof they have unspent outputs) to a nominee. We could perhaps have vote transfer by committing to a non-nominee who would then commit to a nominee. The assembly would then be the top N nominees by vote count. This is in the more “out of the left field” department and we’d have to think about Sybil attacks.
- Piggyback on another foundation. I actually had some hopes the Zcash foundation would open up a bit but their last round of votes seems to have shut that down (41 over 23 voted to direct foundation efforts mostly toward Zcash). But we could check open source foundations for some of their legal help and handle funding separately. Perhaps something like the Software Freedom Conservancy.
@lehnberg also pointed out this related discussion regarding Monero:
Thanks for sharing this @igno.peverell. There are some of my randoms thoughts on it.
Reputation is one of the key components in a decision making process. It could be totally informal/subjective (“My name is Linus, and I am your God”) or very formalized (with ratings of any form including tokens). It’s a spectre of course, for example it may be binary (0 - no right of votes, 1 - one vote) which was described in your proposal of wallet and voters if I got it right. It could be number of shares. One of the questions of using some value token like grin as a project share is that it could be bought, not just earned, which may be fine in some cases btw. Less formal models don’t scale well but I prefer it and it very resistant to Sybil attacks.
Funding is important for new initiatives (Monero FFS sounds like a good way to achieve it) as well as for ongoing development. I see some companies like Parity started using Gitcoin to fix small or medium issues using bounty model. I’d like to see Grin project be truly opensource and not centralized around one (or few) companies like Zcash, but have to admit that compensation of developers is more tricky in fully decentralized case. From my experience is really important to have full time developers working on a project, part-time contributors could improve some isolated parts but could not make major changes. Traditional open source projects relies on corporates which use the project and hire developers, probably we could do better than that.
The most controversial part of course is making hard decisions, think of DAO or Parity hacks in Ethereum. Bitcoin was lucky enough to not be on the spot when they had to do such decisions, in case of Ethereum it was harder (however compare the reaction to DAO fork - “ok can you guys stop trading” and last debate on Parity funds when potentially less controversial decision was rejected by the community), in case of Grin one bad decision could kill the project because market is a bit more mature and expectations are higher now.
At least in the beginning I’d not build a complex formal system like https://github.com/paritytech/polkadot/wiki/Governance but rely on some form of social consensus like in Linux (one downside - Igno will have to start insulting people in emails), however some more formal mechanism to manage funds because Linux did not have that problem.
Less formal models don’t scale well but I prefer it and it very resistant to Sybil attacks.
That’s only true if its democratic in nature; this should be heavily mercitotoric.
Cranky main programmer works perfectly well and scales fantasicly.
Or again, clean pre-fork coin splitting so that its trivial to make futures, make code reliant on the market.
By less formal model I mean a reputation “score” based on social consensus, which usually is very meritocratic, you are right. Main programmer works well, that’s my point, but she doesn’t scale, unfortunately.
A multisignature wallet for managing project funds and acting as a voting mechanism sounds very interesting. What processes are in place in order to raise funds transparently and ensure a constant cashflow is more challenging. I like the idea of a mining pool paying collected fees to the project. I would be more cautious with democratizing decision making to a wider audience. It feels like a technocratic council consisted of core devs, and prominent stakeholders (miners, users) will serve the project fine, at least for the first couple of years.
There are a lot of topics and questions to cover, some are more important to tackle early, others can come at a later stage.
How votes are conducted is something that can better be resolved once it’s clear who is voting, and what they are supposed to be voting on. And if there are any particular requirements surrounding the actual process itself. Will it need to support remote participation? Will it need to be privacy preserving? That sort of thing.
There will be trade-offs required, no matter the approach taken. In order to figure out how to make the right trade-offs and avoid them being subjective, biased, or arbitrary, it makes sense to have a set of basic principles, purpose, and objectives established to guide the project.
As these have not been written yet, how about we make an attempt to do that? Perhaps set a fixed deadline for completion, create a page on the wiki or a pull request, invite anyone and everyone to participate, solicit a working group to take a stab at writing the first draft, schedule all hands meetings in a dedicated gitter channel to discuss and debate, and then, once the deadline has passed, have the core dev team (i.e. the existing technocratic council, however these are defined) vote to “ratify” it, and then merge it?
Once there is such a document and it’s clear what it is that should guide the project, it then becomes easier to understand where to go from there. What do you think?
PS: Not only does The Main Programmer model not scale well, it’s also not particularly fault tolerant. Even if we decide to go with this model, a lot of things still needs figuring out surrounding how it works in the case of the main programmer disappearing, being hit by a bus, or simply becoming burned out. What happened in the world of Python a few days ago is a good deterring example, I think.
PPS: Regarding foundations, I put together a wiki page weighing different use cases and approaches. Please contribute/comment!
Formalizing the timing/steps involved in determining actions (like how to use funding or implement GIPs) I agree is probably the most important thing. That way, even if it comes down to just having a merit based “board of directors” type that consists of core devs, at least there is a known/transparent process for people to contribute their ideas. This could end up being the extent of the governance model honestly.
Another thing that struck me is it would be very useful to have a kind of philosophy/vision document that sets more explicitly some of the future expectations for grin. Things like hard forks every six months, the idea that people could volunteer to send some mining rewards from pools, etc, to a developer multisig wallet, openmindendess to implementing future novel tech… etc. Starting with the most grounded and already agreed upon to the outlandish, but things that set the tone for the project. This would be very useful so that down the line there can be some expectations for how the project will evolve, and there will be precedent for ideas, making it less likely for people to be caught off guard in the future when the project is more popular/used.
This could be done in the wiki very easily and can’t hurt, but I could use peoples help coming up with a draft list of core tenets to start.
decentralized governance conference in greece in december. wonder if it will be enlightening and if we should have presence to take some notes.