DXdao recognizes the need to change, build and adapt new systems and strives to reach consensus in a scalable, decentralized and effective way.
- DXdao Manifesto.
Right now our mainnet governance has very few votes and active proposals, most of them are worker proposals. It is not decentralized, we rely on one company to host an app on a server for us to vote and use third party services to communicate with the blockchain. And it is clearly not effective since after a year and a half of being created we haven’t interacted with any DEFI protocol.
So…something needs to be done, right?
We can lay down minimum requirements that we need to start walking towards the governance system we always wanted:
DXdao governance platform should be independent from any other service or company, having complete control over itself.
DXdao governance should be cheap to interact for the user and for the DXdao to maintain.
DXdao governance should have the ability to quickly interact with new DEFI protocols and dapps.
Can we do this without affecting our currently infrastructure?
Basically the “user facing” smart contracts that are used by DXdao voters are the schemes and the voting machines, we use the Genesis Protocol voting machine for all our schemes just because is the only choice, but if we want we can use a new one with new features that still uses the very cool holographic consensus.
This is the Daostack architecture:
Everything will continue working the same way it always did, but we will have two apps using DXdao smart contracts at the same time, in a future alchemy can integrate features from the voting-dapp and the voting dapp can do the same from alchemy, an open-source win-win.
The biggest change that we will bring will be in the voting machine contract, where we will use a fork of Genesis Protocol we have been using on alchemy but with the following features:
Use DXD as staking token.
Refund create proposal, vote and stake gas costs on chain in the same transaction.
Sign votes, as a voter I will be able to sign a vote to be used in a proposal A for an amount R of reputation before T time.
Share signed votes, as a proposal creator or voter I will be able to gather all the signed votes and execute them on chain.
This changes will make the voting process a bit more complex since we are adding concept of signed votes, you can understand it better if you think on how “valid” your vote is, the ultimate validation of your vote is when is on chain, in the storage of the smart contract and is not very “valid” when you just signed it and share it to another voter, because there is only you and the other voter who knows your decision. But signing votes cost nothing and the signature can be used later to execute the vote on chain and reach full on-chain validation.
What would I be able to do in the first version of the governance dapp?
- Create proposals with multiple ETH transfers, DXD transfers and any other ERC20 approved tokens and REP mint/burns.
- View all proposals created in the only scheme that will be used (this mean that you can see just the proposals created in the dapp).
- Stake for yes or no in proposals, in one or multiple proposals at the same time.
- Vote for yes or no in proposals, in one or multiple proposals at the same time.
- Sign votes for yes or no in proposals, in one or multiple proposals at the same time.
- Signal votes for yes or no in proposals, in one or multiple proposals at the same time.
- Send one or multiple signed votes in a proposal.
- Receive on chain refunds of the gas spent on governance actions.
Steps to our minimal governance dapp
1.- Design and implement new DXD Voting Machine.
2.- Modify the current founding and voting power scheme to execute multiple cryptocurrency transfers and REP minting/burning in one proposal, besides that the scheme will keep track of created proposals information in the smart contract state and provide the necessary methods to fetch all proposals information directly form the blockchain.
3.- Build a decentralized application that will connect with our mainnet infrastructure but use only the new founding and voting power schemes with the DXD voting machine.
4.- Audit the smart contracts and the dapp.
5.- Deploy to mainnet.
Is this governance platform 1.x or 2.0?
Technically speaking is 1.x, we are not introducing any breaking changes, just adding more features over the classical Genesis Protocol voting machine and creating a new dapp that we will use this features, I would call it governance platform v1.1.
The next features that can be added on governance platform 1.x are:
- Better integration with alchemy, list and show information of all proposals created in dxdao.
- Use of multicall and constraint schemes, allowing more powerful and flexible smart contracts interactions.
- Use distributed networks to share signed information across voters.
- Multiple networks support, use Rinkeby, xDai and Mainnet in the same dapp.
How long would it take?
Lot of work has already been done in step 1 and 2, and I have a local fork of dxtrust dapp ready to start the development of step 3, so I expect to have a beta version ready for December and a final stable version for end of the year.
I want to be the tech-lead of this project till it reaches an stable version and then we can decide on the next features and how the dapp would be managed, I will be adding the development of the governance dapp as goal in my next worker proposal.
So whats the goal in the end?
The goal is to recognizes the need to change, build and adapt new systems and strives to reach consensus in a scalable, decentralized and effective way. The first version of our voting dapp might not be as fast as centralized systems and may not as easy to use as other voting platforms, but it will be ours, under our control, built around the needs of the the hardcore decentralized organization we are, in the end we will buidl what we need and best for us.