As it has been pointed out in the thread before, developing a decentralized court protocol has always been a part of the roadmap. In the original whitepaper, the Aragon Court is highlighted as a network service that would be really beneficial for sovereign DAOs, as they cannot use the traditional legal system should a dispute arise.
During 2018, a lot of research was made on the Court, including developing an agent-based simulation of the model to test our assumptions.
After Aragon 0.6 was released on mainnet, we were able to direct more focus into the research and development needed to launch the Aragon Network v1 as a sovereign DAO. The issue was that DAOs that can execute fund transfers on simple majority votes, are vulnerable to 51% attacks, in which an attacker could convince a majority of token holders to vote for a proposal to transfer all the funds out of the DAO and split it among those who vote for it.
To solve this problem, we came up with the idea of Proposal Agreements, in which a subjective oracle is used to resolve disputes on whether proposals are valid or not according to the rules of the organization. Minority stakeholders can be sure that only proposals that adhere to these rules can pass and be executed, regardless of how much support a malicious proposal could have. Proposal Agreements are useful not only for the Aragon Network DAO itself, but for other Aragon organizations that decide to use it.
Given that we had this clear need for dispute resolution, and we wanted the Aragon Network to be live as soon as possible, we heavily considered using Kleros for an initial version of the Aragon Court rather than implementing it from scratch. We were impressed by some of their research and we were pretty aligned on protocol economics.
Since the initial conversations we had with the Kleros team at the beginning of the year, we told them that our intention was to reuse as much as possible from what they had already implemented, but we clearly communicated that we wouldn’t be using the canonical Kleros version, but another instance with a different token derived from ANT.
While performing some technical due diligence before starting with the integration process, we detected multiple things that triggered us to start thinking about performing a substantial fork of the protocol.
One of the first things that we were worried about is that Kleros’ implementation had a lot of additional complexity in order to support a hierarchical court structure with different sub-courts that would resolve different types of disputes. The Aragon Network v1 only needed one court type to resolve disputes over Proposal Agreements, so all this added complexity was not worth the added attack surface.
In Kleros’ implementation, there is a special role for a ‘governor’ entity, which has complete and absolute power over the contract (being able to perform any arbitrary call from the Court contract). We thought that the governor has too much power, being able to resolve any dispute as they please, having the ability to mint an unlimited amount of juror tokens, removing the ETH deposited in the contract to pay for fees. Even though the team wants the governor to eventually be a DAO, at the moment the address that governs the live protocol is an externally-owned account, which means that if one private key were to be stolen, the protocol would be completely compromised. Relying on Kleros today requires not only trusting that the dispute resolution protocol works properly, but also that the owner of this account doesn’t intervene in the dispute.
The subjective oracle that is used to resolve disputes around Proposal Agreements is paramount to the security of the Network and of all the organizations that decide to use it as well. During our review, we were quite concerned about how few tests had been implemented (very little testing outside of the ‘happy path’) and how the team didn’t plan to do a security audit (and actually advocated against them).
After our review and few weeks before Kleros’ release, bounty hunters found two critical issues in Kleros’ implementation that would have completely undermined the mechanism. This further confirmed our decision of continuing with our own implementation.
Apart from some of the above concerns about Kleros’ implementation, there were some features that we felt were important that Kleros didn’t have at the moment nor had plans to implement:
- Lack of incentivization for executing gas heavy functions like drafting jurors for a dispute or slashing jurors that voted for a losing ruling. In most cases execution requires someone altruistically calling them (or at the very least an interested party paying for the computation for a larger group). In the case of drafting, until someone executed all pending drafts, the court will not accept jurors staking or unstaking.
- Kleros lacked a way to require users to pay a subscription fee in order to have the right to use the court. Subscription fees allow jurors to expect a predictable income from being staked into the court even if they aren’t selected to adjudicate a dispute or the dispute volume of the court drops.
- Kleros only supports paying fees with ETH, without support for ERC20s.
Aragon Court implementation
The Aragon Court has taken some ideas from Kleros and implemented them with a better architecture and cleaner code. We’ve never had a problem recognizing that Kleros has had a big influence in our work and implementation of the Aragon Court. But even though the Aragon Court project started as a fork of Kleros’ code, we haven’t been able to reuse any code.
Our plan is to continue improving the Aragon Court protocol with important changes such as using futarchy as the way to resolve disputes that are appealed all the way.
Even if we had used Kleros for the Aragon Network v1, we were planning on implementing future versions of the Aragon Court in-house to add those things. With the information that we had at the beginning of the year, we decided on starting our own implementation in a way that can be modified in the future, rather than using Kleros and starting to implement future versions of the Aragon Court from scratch further down the line. We were not confident in the state of the Kleros codebase in order for us to modify it to add these features, so we decided to start from scratch.
I am really happy and proud of the work the team has been doing on the Aragon Court and how it is shaping up.