Governance plan


#8

Pitchforks everyone, can’t be having masters in the coming cypto-anarchism future

----E

----E

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.


#9

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.


#10

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.


#11

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


#12

Thought I’d continue with a couple more ideas I’ve been playing with, hopefully some of them will elicit a reaction :slight_smile:

  1. 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.
  2. 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:


#13

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.


#14

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.


#15

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.


#16

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.


#17

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!


#18

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.


#19

decentralized governance conference in greece in december. wonder if it will be enlightening and if we should have presence to take some notes.
https://dgov.earth/


#20

The concept of anonymized yet fair voting (1 grin = 1 vote) seems quite powerful.

Personally, I’m usually suspicious of mining-revenue-funded architectures, because of their vulnerability to corruption.


What I think Grin needs (before the mainnet)
#21

1 grin = 1 vote establishes a plutocracy. I’m not sure it is a desired end state to have the rich rule over the poor. Decisions often end up being seen as illegitimate in this structure, i.e. “The fat cats are just trying to deepen their own pockets”-style reasoning.


#22

Although the obvious alternative (1 user = 1 vote) seems unenforceable within the world of Grin. Even the blockchain security model (1 unit of mining power = 1 vote) establishes that same plutocracy.


#23

Bisq has developed a funding and governance model over the past 2 years. Here is a document descibing it on a high level:
https://docs.bisq.network/dao/phase-zero.html#the-bisq-dao-and-bsq-token

Here are a few thoughts from what I have learned during that process:

  • Get consultancy from expert lawyers (MME in Switzerland is not bad). My learning was very valueable from that and led to the result that I want to stay out completely from the legal system (no foundation). But for being safe on the legal side (so that individuals don’t get liable) the project needs to be fully decentralized (like Bitcoin, Bisq is still not sufficiently decentralized on the human resources/developer side). Risks during bootstrapping can only be minimized with organic and slow growth (like Bitcoin).
  • Is funding a requirement? If not, life is easier for you…
  • If funding is not a requirement, question if governance is really required. Bitcoin does well without a strict formal process. Anarchy is governance as well. Not the easiest though… Informal meritocracy and repuation works. Being open source and forkable is a good protection against power abuse.
  • If governance is based on meritocracy you might need to link it with contributions and then you have a tool for fairly distribute funds to developers and for decision making (voting based on past contribution/earned stake). Bisq’s model is based on that.
  • The effort and complexity of such a model should not be underestimated (I did). In Bisq’s case the DAO is much more complex than the exchange itself and took considerable time to develop. It also adds quite a bit of risk. Programming money is hard (you know). Programming a “company” is harder.
  • If there is a second layer P2P network life gets easier. Doing all on-chain does not scale (Ethereum). Though if you can build it into your system and avoid to make it general purpose (like Ethereum) i tmight be good enough (like Decred - don’t know much about it though).
  • Flexibilty is more important than perfection. Over time there will be more resources to find better solutions. Being flexible to react on real problems is key. If your project works well for now without a formal governance you might not need it in the forseeable future as well. Maybe never as Bitcoin has shown.

#24

Very valuable feedback @Manfred_Karrer, thanks for posting! One question

Did you try anything else before you decided a DAO was the way to go for development funding? If yes, how did that go and why did you end up programming a DAO?


#25

Yes we tried first with normal donations. As you can guess that is rather disappointing. Pays some small expenses but no dev salaries…
Then we did a crowdfunding campaign with Lighthouse (was a Bitcoin based anyone-can-pay crowdfunding project). We wanted to fund only the next milestone to fund 2 full time devs for 3 months. We asked for 20k USD and only reached 10k but as it was a all-or-nothing concept with Lighthouse we ended up with nothing as the goal was not met.

The DAO which we use now was actually planned from the very beginning, but it went through a lot of iterations. A main issue is that you cannot design anything which smells like securities as that would trigger high legal risks. Was looking into existing colored coin project (Counterparty) but ended up that I need features which have not been available there. Ethereum would have maybe worked but I did not want to introduce a new blockchain and I am very skeptical with Ethereum (to say the least).
Building our own system had a lot of benefits as we can design features as we need it and extend it to the trade protocol (there are 2 new trade protocol concepts out). Downside is as said that it got pretty complex and took more time/effort as expected. Also it is a high risk adventure.


#26

Going back to this thread, I have been giving this some thought recently.

How would you map donations to votes in such a scenario? It seems to me it’s impossible to be Sybil-resistant without a form of identity. I don’t think PoS works for governance and I’d prefer to see us start with a x-to-1 mapping used by the council, where x is one or more utxos of >=y amount and 1 is a single vote. There is potential in figuring out a smart way to decide y.

  1. the council is already bootstrapped which is good but for the sake of completeness we should track membership in grin-pm.
  2. the presence of x in a vote means you vote “yes” on a proposal and your vote counts as 1, x can either be a simple proof of ownership w/o giving away your outputs or a send on a multisig wallet controlled by the council, as a form of internal funding. I am not trying to solve funding here but this process can be potentially used for funding as well (eg. an investor is part of the council)
  3. the council expands in a meritocratic way by individuals nominating theirselves as council members and council members holding a vote (private vs public is up to debate). A form of liquid democracy (flexible vote transfers) is used among the council members to vote on anything (accepting new memberships, decisions on project development, and conflict resolution). In order to avoid making governance annoying, holding a vote on a topic needs to be requested by any current member or it can also be brought up to a governance meeting by the rest of the community and if deemed necessary the existing members can still hold a vote instead of having to vote on any triviality that can be decided by rough consensus (used currently).
  4. a single vote (or any number, fixed or proportional to the size of the council) can be granted to or bought if you wish by the rest of the community.

More on this in a future post.


#27

individuals nominating theirselves

I and 20 alternative accounts nominate myself