Proposal: Aragon Court deployment to Polygon

Introduction

The Greet Team already developed an advanced Contracts & Escrow solution with integration to Aragon Court that is set to be deployed to Ethereum mainnet in October. This solution and integration is fundamentally good for ANT tokenomics; Guardians stake ANT to rule on Escrow cases disputed by Greet users, leading to less circulating supply of ANT and better adoption of ANT as a utility token.

Since we’ve been working with Aragon Court extensively and depend on it for our own integration, we received a request from a group of core contributors in Aragon if we’d like to help out with the Polygon and BSC deployments of Aragon Court.

Aragon Court & ANT cross-chain

As most community members are aware of, Aragon has strived to deploy its products to more cost-efficient blockchain networks, to facilitate more adoption. Aragon V1 is already deployed on Polygon, but Aragon Court is not - nor Aragon Govern - as it depends on the Aragon Court deployment.

Deployments of Aragon Court (Aragon Protocol) on Polygon and BSC is important because it would allow Guardians to rule on cases without experiencing unbearable gas fees. However - while a lot of dApps are cross-chain nowadays - these deployments are independent of each other. So technically, they’re autonomous deployments under a single frontend. Our take is that for Aragon Court, a simple cross-chain deployment is not enough because most DAOs are still on the Ethereum network. The ideal solution would be a MetaDapp, where you can dispute an Ethereum case on cost-efficient networks like Polygon and BSC. It will significantly reduce the associated gas costs for Guardians, allowing them to resolve Ethereum cases disputed to the Polygon or BSC deployment of Aragon Court. The final goal is to make any case disputable on any chain where we have Aragon Court deployment.

How can it be achieved? Stage one is a standard deployment to the new networks - Polygon and BSC. Then we need to onboard Guardians to that new deployment. We think that the best way to do it is staking rewards in ANT paid on Polygon / BSC for Guardians with staked ANT tokens on Ethereum. In such a way, we’ll be able to onboard experienced Guardians who were already using Aragon Court.

The next stage would be implementing a holistic resolution registry synced between all networks where we have Aragon Court deployment. However, we’ll need to use deterministic dispute UID, which will be unique for all networks. The simplest UID would be the hash of chain id and current dispute id in integer form: keccak256(abi.encodePacked(chainId, SEPARATOR, disputeId)). An even better solution would be to include a secondary UID so it’s possible to identify the case in a network agnostic way. For the Greet Escrow solution, UID can look like keccak256(abi.encodePacked(cid, milestoneIndex)). This UID should be included in dispute on-chain events of Aragon Court and can be passed either as dispute related metadata or as a separate function argument for dispute initiation.

Finally, to sync the results of all cases, we’ll need an Oracle network that will publish them to all networks of Aragon Court. To ensure trust, we can outsource this job to a professional Oracle network like Chainlink.

Another approach for syncing resolution results from Polygon / BSC to Ethereum can be optimistic confirmation. Any user can publish a resolution to the Resolution Registry by deterministic id with some collateral (300 DAI), proving the validity of the case on another network (Polygon, BSC). Then, any user can dispute it in Aragon Court in the same network with the registry and get the collateral of 300 DAI in case of fraud. Having on-chain proofs doesn’t require human labor to verify the scam, so anybody can just run a bot that will check all registry publications for fraud to win 300 DAI collateral. Greet can develop the open-source code for such a bot, which we release as a Docker container.

Based on this we’d like to discuss with the Aragon community the following proposal;

Milestone 1

  1. Deploy Aragon Protocol smart contracts to Polygon and BSC;
  2. Deploy ANT token to Polygon and BSC;
  3. Implement a staking program for guardians who keep ANT locked on Ethereum with rewards on Polygon / BSC.

The implementation of the staking program depends on the outcome of an independent vote for this staking program by the Aragon community. If it is not a successful vote, we only do step 1 and 2.

After completion of Milestone 1, we’ll discuss in details how we’ll achieve cross-chain dispute resolution;

  1. Develop and deploy Aragon Protocol resolution registry smart contract;
  2. Implement resolution registry in Greet Escrow;
  3. Develop docker image for Oracle network validators to sync Aragon Court resolutions between networks or optimistic confirmation for the same task;
  4. Adapt Aragon Protocol to the usage of deterministic UIDs.
4 Likes

Wouldn’t this be the occasion to also include a decentralised ID solution to increase the security of Aragon Court (so as to prevent a single attacker from creating a large number of wallets and hence have a high chance of being drafted as eg 2/3 jurors)?

Celeste already deployed such a solution and Luke from 1Hive (the DAO behind Celeste) mentioned they’re happy for us to use the code as it means having a single golden standard for courts

2 Likes

This is something we really need! Just have a few questions about the implementation:

  1. How will we get list of who has staked on Mainnet into Polygon Court & information on when the resolution has happened on Mainnet? Wouldn’t it require an oracle network as well?
  2. Wouldn’t having the same court fees as in Mainnet on Polygon be enough to incentivise guardians to explore Polygon Court? They will loose much less money on paying network fees and will get the same reward.
  3. If we have a Resolution Registry synced between networks, would not that imply the the resolution result is available on all networks, however the resolution can only happen on the same network as the dispute was published to? Isn’t it limiting the interoperability?
  4. Would it be possible to have a Dispute Registry which can be picked up by any Court and then a Resolution Registry to propagate the results between networks. We could have a way to specify if a dispute can be resolved by any or a particular network to protect form an issue that the Court System Security = Court on Network with Lowest Security
1 Like

Aragon Court already has Sybil protection because the probability of being drafted is weighted by the amount of staked $ANT. Also, it sounds dangerous to identify jurors on cases. Even if it’s proof of uniqueness rather than identity, the thought of unmasking would put many jurors off participating.

1 Like

I think the good timing to add DID can be integration of specialized branched courts which will require extra qualification. In such a case DID can be linked with some qualification proofs.

1 Like
  1. Having deterministic dispute id will allow to subscribe for resolution event on either network. Then you can execute resolution in smart contract which depend on it from any frontend. I think full fledged oracle network for staking rewards would be an overkill, we can put a multisig or later Aragon Govern as an operator for that which will confirm the merkle proof or other method we use to distribute the rewards.
  2. We still need to bootstrap the Polygon deployment one way or another, plus there would be gas costs for unstaking and moving ANT to Polygon, plus we don’t wish to reduce security of Mainnet deployment as it will be used by Govern and Aragon Network DAO. The amount of reward and the need of it is a subject for debate still.
  3. It’s ultimately depends on how the Court is used. In case of Greet we initiate a dispute from escrow contract get dispute id, then call execute method which checks resolution for that dispute id and do the distribution. With deterministic dispute id, we can initiate the case on Polygon, but get resolution synced to Ethereum, so execute function will get resolution by deterministic dispute id from registry on Ethereum.
  4. I like the idea, we can even limit the networks where the resolution will be synced on case basis, so high profile cases may put such limitation with additional gas costs.
1 Like

Another approach for syncing resolution results from Polygon to Ethereum can be optimistic confirmation. Any user can publish a resolution to the Resolution Registry by deterministic id with some collateral (300 DAI), proving the validity of the case on another network (Polygon, BSC). Then, any user can dispute it in Aragon Court in the same network with the registry and get the collateral of 300 DAI in case of fraud. Having on-chain proofs doesn’t require human labor to verify the scam, so anybody can just run a bot that will check all registry publications for fraud to win 300 DAI collateral. Greet can develop the open-source code for such a bot, which we release as a Docker container.

@jorge what do you think about the security of such a solution, is it more preferable to the Oracle network?

1 Like