Proposal for an incremental Constitution and Dapp layer governance on EOS
This article is the sole opinion of Kyle (The Awakenment). It does not intend to represent the views of anyone else, including other members of the EOSVIBES team.
I’ve been wanting to write this article for some time, but due to a heavy workload, I kept putting it off. Having had recent conversations with other freedom-loving EOS community members including Marcin from Tokenika and Roman from CryptoLions (who also share some of my thoughts), it got me re-energized and refocused back into writing this article. Regardless of all the projects I currently have on my plate, it’s the right time to say what I believe needs to be said. I make no apologies for the length of this article (it's long), but the conclusions I've formulated have happened over several months and thus require a bit of context putting around them.
There are some Block Producers (perhaps the vocal majority) who feel that we should stick with the first set of proposed ideas around EOS governance whereby we maintain a lengthy Constitution and centralized arbitration forum (ECAF) that acts on the protocol layer. But there are others, myself included, who feel differently.
“The EOS user base is a multi-national, non-homogenous crowd from multiple jurisdictions and legal systems and by definition, their understanding of ‘what is governance’ is going to be extremely different across the board”.
“I would recommend that the existing Constitution take a step back from the idealism and state everything in actionable terms. At every point, the Constitution should be answering the questions: "what should people do if . . . ." It means pitifully little to say "the intent of the code IS THE LAW", or that "property rights ARE SACRED" if there isn't broad consistency to how community members will translate these IS's into action(s)”.
OK, so let’s begin…
I think it would be fair to say that as a community, we have made some mistakes in how we launched EOS. We were ill prepared and overly ambitious in terms of ‘want’ rather than ‘need’. Nobody is to blame for this and it’s good to be ambitious. What were perhaps lacking were the processes, people and infrastructure in place to adequately push forward on that stated ambition.
As a community, we all want EOS to be the market leading blockchain. In order for this to happen, we all need to be in agreement with the overall vision and direction in which we all want to take, which in turn, requires us all to work together. Decentralized autonomous systems are hard to get right, governed ones - harder still.
However, the mistakes we’ve made and how easily we have been able to bounce back from these mistakes shows just how robust and resilient EOS is, both as a community and as a blockchain.
So, with that said, let’s go back a bit and maybe have a recap of where we’ve come from, what mistakes we’ve made and how we move forward from here.
Approximately 2 months prior to the launch of the EOS main net, people from the EOSGov Telegram channel were asked to take part in a discussion as to what articles they wanted to see present in the EOS Constitution. Block.one hired Thomas Cox to come in and guide the process and facilitate the conversation.
Unfortunately, only a tiny fraction of token holders actually took part in this discussion - maybe 20 or so people, most of whom were made up of Block Producers Candidates, although there were some independent community members making contributions as well. These people were asked to use the EOS Go forum as the medium for giving their input.
I gave my input during this early stage conversation, both in the EOSGov Telegram channel and in the EOS Go forum. I expected and advocated for no more than 3 or 4 Constitution articles as a maximum. I’m not entirely sure how we ended up with a 20 Article Constitution, but this, I believe was the first mistake – the creation of a Constitution that was just way too long. Some of the articles just seemed to appear out of nowhere without my witnessing any discussion happening around them, maybe some of these discussions happened in private or on different forums than the ones I was present on, I don’t know, but a lot of articles seemed to appear just prior to the main net launching.
Now, the issues I have with the Constitution, apart from it being too long, aren’t necessarily with what’s being said (apart from Article XV – I take great exception to that particular article). The problem I have is with regards to their being no stated actions for how the community enforces each article. It's a lot of fun declaring principles for a Constitution, but it’s really hard grinding out the detailed work of making everything actionable and with consequences (without having some centralized police force to do it for us). We are trying to rush through a Constitution as if we know what we are doing when we simply don’t. I also believe it’s unhelpful when community members give themselves titles such as ‘Blockchain governance expert’ when there’s no such thing. You become an expert through gained experience and as yet, nobody has experience of a governed blockchain.
Without getting bogged down on too much detail. Let’s just take a quick look at a few of the articles contained within the 20 Article Constitution in which we’re all supposed to abide by (yet many openly flout) to see what I’m talking about when it comes to us declaring lovely sounding principles without grinding out the detailed work of making them actionable;
Article I - No Initiation of Violence
Members shall not initiate violence or the threat of violence against another Member. Lawful prosecution of crimes with the goal of preserving life, liberty and property does not constitute initiation of violence.
Sounds reasonable, but where are the stated actions that tell us exactly how this will be enforced on EOS?
I imagine it would take 50+ sub pages to explain the full workings of this article alone, probably 5 pages to quantify what actually constitutes as a threat of violence. Plus, the Lawful prosecution of crimes in some countries does sometimes involve violence by the state, so what then? If someone were to say to me ‘You better watch your back’ would that constitute as a threat or an initiation of violence? or would the interpretation be the responsibility of whichever ECAF/EMAC arbiter is chosen to look into the case? Without a huge list of what actually constitutes as a threat and without a stated actionable consequence of what happens to the individual or dapp who is in breach of this article – what is the point of it? If the threat of violence is open to interpretation by the arbiter, then the interpretations are likely to be inconsistent. If there are 10,000 squabbles taking place on EOS each month, then I’d imagine a third of them would involve some claim of being threatened in some way...
Article V - No Fiduciary
No Member shall have beneficial interest in more than 10% of the EOS token supply.
How would we ever know? What if the owner has two accounts each containing 10% of the token supply? How can this article even be enforced? What’s the point of this rule when a team of 3 people working together and owning 30% of the token supply is deemed acceptable?
Doesn’t having such an unenforceable article just make a mockery of this entire Constitution?
Article IX - Dispute Resolution
All disputes arising out of or in connection with this Constitution shall be finally settled under the Rules of Dispute Resolution of the EOS Core Arbitration Forum by one or more arbitrators appointed in accordance with the said Rules.
This article gives default powers to the EOS Core Arbitration Forum (ECAF) to issue orders on the protocol layer. I will describe why I think this weakens our blockchain later in this article.
Article XV - Termination of Agreement
A Member is automatically released from all revocable obligations under this Constitution 3 years after the last transaction signed by that Member is incorporated into the blockchain. After 3 years of inactivity an account may be put up for auction and the proceeds distributed to all Members according to the system contract provisions then in effect for such redistribution.
This article is absurd and I flat-out disagreed with its inclusion from the start. This completely goes against Dan Larimer’s ethos of protecting Life, Liberty and Property rights for all and I immediately got to work campaigning to have it removed. I feel there is now more than enough community support to have it removed permanently from whichever constitution the community decides to ratify. On a side note, one of my stated reasons for wanting Article XV removed was that we should find ways of rewarding people for staking on the EOS network and remaining active rather than finding ways to punish them for remaining inactive. We now have REX on the way and it goes some way to doing just this, as it rewards token holders for being active, staking and voting. To me, Article XV is a prime example of what signifies an irrelevant and lengthy Constitution that is being written too prematurely.
I could go on… but I won’t. The aim of this article is not to be critical for the sake of being critical; rather it’s an attempt to look at what I believe were missteps and to take learning from them so we don’t repeat them.
The current Constitution exists as a statement of principled ideals, nothing more. These ideals aren’t bad (I actually like most of them), they’re just kind of pointless without a stated way for us all to universally interpret and action them in a universally scalable manner.
Constitutional Discussions Continue..
The EOS Alliance is currently holding zoom calls in which all articles in Version 1 of the Constitution (v1) are getting discussed as a means to figuring out which ones the community like and which ones they don’t like. The purpose of these discussions is to come up with another variant (or several other variants) of the Constitution in which the community can vote on.
I think the EOS Alliance is performing well in this regard as it attempts to correct the previous mistake of only having a tiny minority of EOS community members involved in the Constitutional discussion(s). We need as much discussion and participation by as many community members as possible on all manner of EOS related subjects, so whatever/whoever encourages this increased participation is providing a valuable service.
The formats being used for these discussions (scheduled zoom calls) aren’t ideal as they offer no token holder feedback and the scheduling often doesn’t work for people located in different time zones, therefore they miss out on participating. We at EOSVIBES are working on a dapp that will hopefully improve things in this regard, but that’s for another discussion.
Regardless if we manage to increase the numbers of participants taking part in the discussion(s), I fear we may be continuing to miss the point if we are continually cajoled into coming up with yet another or maybe several amended lengthy Constitution(s) in which to present to the community to ratify.
I can understand the argument for wanting to formulate a set of beliefs and a community identity and for that identity to be encapsulated by a Constitution, but when the formulation is required to be completed within a certain time period (say 12 weeks), you will end up with a Constitution full of either irrelevance or absurdity or both like we have with the current Constitution.
My Proposed Solution is for an Incremental Constitution to take effect over time
Whilst I agree that lengthy Constitution(s) should rightly be part of the selection from which the community gets to choose from, I strongly recommend the EOS community members don’t vote for anything lengthy or complex and here’s why…
EOS is proving to be a flexible Build-it-as-you-go blockchain.
From the ground up, everything can and is being improved and updated at a rapid turn of pace. This flexibility gives EOS a massive advantage over competitor blockchains. Already EOS is the fastest blockchain out there and it’s only going to get quicker and more popular with dapps once IBC and side chains get added into the mix.
The referendum platform is also almost ready and if designed correctly, will be a game-changer. It will allow the EOS community to govern itself and to vote on important issues that will carve out the future direction of our blockchain. It will also make the rush for us to try and decide and finalize a constitution that we all need to immediately agree on, rather pointless.
Why is there this rush to formulate a lengthy Constitution when we have a referendum platform on the way that will allow the community to have its say on important matters and to pivot whenever there’s a requirement to do so?
At anytime, the EOS community can express its will via referenda (which I hope we do sparingly).
For all of the above reasons is why I am proposing a light touch Constitution (at least to begin with) and why I think Dan Larimer and Block.one’s proposed v2 Constitution is a good starting point.
Version 2 of the Constitution (v2) is in essence; Intent of Code is Law.
Unlike the current Constitution, it attempts to spell out the actionable consequences, although it still requires a lot more clarity regarding the how.
Essentially, elected Block Producers allow all software to run on EOS unless the code has unintended consequences (i.e. it has a bug that causes some kind of issue).
“If there is a dispute on intent of code, then intent shall be determined by a super majority vote of elected producers or an arbiter mutually agreed to by the parties to the dispute and enacted by producers. A super majority may, at their discretion, freeze a contract during an active dispute until such time as code to fix the contract is available.”
I interpret this to mean that the responsibility of BPs should be to issue updates of the core eosio code and if any new updates to this code negatively impacts dapps running on EOS then a super majority of BPs may, at their discretion, freeze a contract during an active dispute until such time as code to fix the contract is available.
I do not take this as a suggestion that BPs should be the arbitrators, decision makers or controllers for all dapps built on EOS – Instead I suggest specialist arbitrators chosen by reputation within a free market environment carry out this task (EOSNY have produced some great work around this which I will discuss later in this article).
To Conclude this section
Issues will likely crop up in ways we cannot foresee in advance, these issues may or may not need the community to decide upon a solution, but these issues will likely formulate the constitution for us, over time in a progressive rather than forced manner. There will be many twists and turns to come and we cannot predict the future. If an event frequently crops up that the majority of the community doesn’t care for, then the majority can put a stop to it. This may require a constitutional amendment, a block producer vote, or it may require a community vote. Either way, the community is able to decide how to handle such unwanted happenings via the tools it has available and this is why I believe working towards an Incremental Constitution rather than defining and ratifying something in hast is a better approach.
Removing ECAF as the default Arbitrator on the Protocol Layer
Because the Constitutional articles are a list of principled ideals that are open to interpretation and have no stated actionable or enforceable measures backing them up, when it comes to enforcement, it leaves us with one rather onerous solution – Instead of the community policing itself under a free market solution, ECAF (EOS Core Arbitration Forum) sits on the protocol level and effectively does the policing/enforcing on behalf of the community.
Whilst this may give reassurance to some, it alarms others in equal measure because;
1) It takes two parties to agree to arbitration. If one party is a thief, then they are not going to agree to arbitration. If ECAF were to rule without agreement by both parties, then ECAF would cease to be an arbiter and would instead become an enforcer, therefore overstepping its powers as a mere arbitration forum.
2) Examining the evidence around accusations of theft takes time; therefore any kind of action taken by ECAF with regards to stolen funds will likely come too late to prevent it, thus rendering ECAF impotent in such cases – so what’s the point in this centralized organization being granted such powers in the first place?
3) ECAF community members’ with powers above those of arbitration will have powers above those of the average token holder. This is something that does not sit well with a large amount of advocates/investors in blockchain technology.
4) Humans with power become corruptible over time.
5) It is a centralized solution.
6) It does not scale.
7) This small group of people if allowed to act as police enforcers rather than mere arbiters may undermine the perception of EOS as an immutable blockchain and therefore reduce its market value.
Each time I or anyone else would raise one or more of the above issues in the EOSGov Telegram channel (especially with regards to ECAF acting in a policing/enforcement capacity), a governance enthusiasts would remind us (often with gleeful enthusiasm) that ‘EOS is a governed blockchain’ and what else did we expect…
Well, my expectation wasn’t for our immutable blockchain to have a centralized human enforcement layer sitting at the heart of it. Sure, we need arbitration, but the remit some are putting forward for ECAF to remain on the protocol layer and be given more powers than other free market arbitration forums could well undermine the perceived immutability of the EOS blockchain.
Plus, I always considered DPoS to be the governance layer in and of itself. As a community, we vote for the Block Producers we want to secure the network on our behalf and if they misbehave or become corrupt then we vote them out. Or at least that’s how it’s supposed to work.
For those worried about DAO or Parity type attacks taking place, they should seek solace in the robustness of DPoS. Block Producers could and should protect us from a DAO or Parity type attack, for when BPs work together as a majority, they are able to control transactions on the network (2/3 + 1 majority). This feature is often used to levy the accusation of centralization at EOS, but when you compare it to mining pools under a PoW system, it actually appears as the more decentralized system.
Employing (yes paying) ECAF (through the Worker Proposal Fund) as the single arbitration forum that sits on the protocol layer in order to somehow police EOS on our behalf would move us in the wrong direction. To me, it’s a solution based on the old paradigm of farming out authority to a centralized entity who somehow ‘knows better’ than the rest of us. I know others feel differently, but the question we need to ask ourselves remains;
Do we want our governance structure to be a decentralized one or not?
DPoS is decentralized.
As a token holder, I’d much rather BPs be the guardians of the network as they have the most visibility and we can (theoretically) vote them out if they prove to be bad actors or have a history of poor decision making. But with ECAF we don’t have this option. As individuals or as a group, if members of ECAF intent to seek executive powers then I don’t see how they could even consider requesting such positions without first seeking approval from the token holder community through the process of being elected (although this would come with its own set of problems as not only would it add another human layer into the mix, it would also require token holders to learn about and vote for another set of people/entities as well as Block Producers).
Voter fatigue/apathy is a very real concern. I believe it is such a concern that the community should only be required to vote for two things;
I) Trustworthy, Competent and Ethical Block Producers to secure the Network.
II) Protocol level changes.
For a community that transcends different cultures, languages as well as political and religious beliefs, we're bound to get radically different interpretations of what the current constitutional articles mean and how to enforce them. There is currently no stated way for us to interpret any violations of these articles with automated actionable consequences, so it is highly likely that different branches of ECAF operating on behalf of different cultures will interpret some aspects of the Constitution in different ways.
EMAC is the Chinese version of ECAF and apart from language, I’ve also heard some community members state that EMAC is required in order to take account of ‘cultural differences’ whilst still operating under the same Rules of Dispute Resolution as ECAF. On the surface, this appears perfectly reasonable, but dig a little deeper and the alarm bells start to ring.
As well as to arbitrate cases, ECAF was also derived out of a perceived need to issue block producers with orders to carry out certain functions such as freezing accounts and reappropriating funds. This idea was conceived out of the notion that if block producers hold all the powers of execution, then they should hold none of the powers in which to rule on what to execute, this power would remain with ECAF.
I) ECAF rule on cases and issue orders to block producers.
II) Block Producers execute the orders issued to them by ECAF.
I can see the logic in this two-stage approach, but when you take into account the fact that ECAF members are not elected and cases are conducted in private until an arbiter has ruled, this is a level of centralization that just isn’t very palatable to most blockchain enthusiasts. It’s not as if Block Producers’ powers don’t go unchecked – The RegProducer agreement defines the rules BPs abide by and the community do the policing. BPs are more closely scrutinized than any other party operating on EOS and this is exactly how DPoS is intended to work.
There is also a serious flaw in regards to ECAF being the sole centralized default forum sitting on the protocol layer that threatens the security of EOS.
As it currently stands, ECAF is a centralized forum with a single point of contact that issues orders to Block Producers who are supposed to carry out these orders. So with this in mind, let’s look at what could happen with regards to a case involving a nation state wanting to censor EOS
Example – ECAF on the Protocol Layer
If a hostile state were to take exception to something/anything running on EOS and wanted to censor it, its national court could send an order to ECAF/EMAC as the default arbitrator on the protocol layer demanding it to stop running the dapp it didn’t like. Now what happens if ECAF/EMAC agrees to abide by this court order and sends the order to the top 21 BPs to execute (this is how the system is set up under the current Constitution). How are we any different from a centralized system? To me it just makes a mockery of the decentralized platform we’ve built if we include this attack vector into our Constitution.
Some say, in such cases BPs could just choose to ignore the order(s) issued by ECAF/EMAC, which begs the question – What’s the point in having ECAF on the protocol layer? To provide some type of pseudo protection layer to Block Producers?
Example – ECAF on the Dapp Layer
Block producers are individual entities spread across the globe with hundreds of back up producers ready on standby to take over. Under a new Constitution whereby BPs are no longer required to carry out orders issued by ECAF, the hostile state given in the example above would have to issue their national court orders to the 21 block producers running the network. EOS requires a 2/3+1 majority agreement of the top 21 block producers in order to execute protocol level changes (which censoring would be). Some BPs (likely the ones who are located within the jurisdiction of this hostile state) may comply with the hostile states order to censor and the community could respond by withdrawing votes from those BPs who comply with the orders to censor and replace them with a back up BP in a different jurisdiction who doesn’t agree with the hostile states censorship order. For me, this is how a DPoS system should work. I vote for block producers to secure the network, not members of ECAF whom I have no ability to vote on.
It is easy to see where the single point of weakness lies when it comes to potentially censoring EOS. If ECAF/EMAC was removed from the protocol layer and this system was scrapped, then the resistance to a hostile state attempting to censor EOS would be much harder to do providing the majority of BPs were out of reach of its jurisdictional oversight.
That’s why it’s so important for us to;
A) Vote for a widely dispersed geographical network of Block Producers operating under as many different jurisdictions as possible.
B) Encourage all members of the community to do likewise.
C) Have a large and capable network of back up producers ready on stand by to take over.
My take (and I believe I share this mindset with a growing number of block producers/community members), ECAF should not police at the protocol level of EOS, instead they should be one of many competing arbitration forums that operate at the dapp level under free market conditions.
The community should be educated to only use dapps that allow arbitration forums to be incorporated into them and for there to be choice. These arbitration services could be automated or they could be staffed, or maybe they’re a mixture of both. Within a free market - all options could & should be represented and the best solutions with the best reputations will get implemented.
It’s also great to see those not directly involved in governance suggesting some great ideas around how we achieve this. EOS New York have put out a fantastic paper on their vision of how arbitration could work under free market conditions whereby any account can register to be an arbitrator and it’s a really great initiative that's gaining traction.
The EOS community, through referenda, will need to decide whether they want ECAF/arbitration to sit on the protocol layer or whether they'd prefer it to sit on the dapp layer.
For the purpose of remaining decentralized, I advocate that arbitration (including ECAF) sits on the dapp layer rather than the protocol layer and is responsible for issuing orders only in relation to the dapps on which they are registered to arbitrate on - an agreement made between the dapp and the user(s) of said dapp.
I would also like to take this opportunity to stress that I have nothing against the people involved in the organization known as ECAF/EMAC, I am sure they are all honorable people as well as great arbiters and if arbitration on EOS becomes an open and free market solution on the dapp layer (as I believe it should), then I'm sure ECAF/EMAC will no doubt benefit from their first mover advantage and will be able to carve out a great business for themselves in competition with other arbitration forums under free market conditions.
If as a community, we are able to agree on a free market solution for arbitration on the dapp layer rather than the protocol layer, then I think we can begin to address the concerns many community members, as well as potential investors and onlookers have in regards to EOS being too centralized.
Well done on getting all the way to the end :)