Conviction Voting on Aragon (CF DAO Proposal)

Over the weekend a small group of Aragon contributors got together to hack on an implementation of Conviction Voting at ETHBerlin. Major shoutout to @Paty from Aragon One, @sembrestels From P2PModels, @deam from Aragon Black, and @stellarmagnet from Autark for their help!

Conviction Voting is relatively sophisticated and we were unable to complete the application in the 36 hour hackathon–despite not sleeping much. We did manage to make a lot of progress in the short period of time however.

We created a design in Figma which you can view here. And the repo is here.

I’ve created issues for the remaining tasks at a high level that need to be done to get the application into a working state.

I’m requesting 5000 DAI to continue development, I can’t guarantee that will be sufficient to complete the app, but it should be enough to attract a few contributors to push things forward. Funds will be managed transparently via an Aragon DAO, and we will ask for additional funds as needed.

13 Likes

Insane for one weekend! Will enthusiastically upvote

3 Likes

Vote has been created in the CF DAO (https://mainnet.aragon.org/#/agp10/0xdbe4a3cc1eca108c1215d974b9bab8863f522b75)

3 Likes

would it make sense to create a conviction DOT voting? are dot voting and conviction voting compatible?

1 Like

The short answer is no, they are doing two fairly different things.

With Dot Voting you have a proposal with a set of options to choose from and a specific duration, for that proposal you allocate weight among those options, and effectively create a ranked list as an output.

With conviction voting all options are placed on the table, and individual options can be executed if they reach a conviction threshold, and new proposals can be added at any time. This is a continuous process without a fixed duration.

The conviction voting implementation we are working on is intended specifically for fund allocation, it is not suitable for more general decision making. It’s possibly you could apply it for managing a ranked list in a continuous fashion, and in that case it could potentially be used in similar contexts as Dot Voting, though that is 1) not currently the focus of the conviction voting app 2) still not a drop in replacement because Dot Voting is a discrete, time-boxed process and not a continuous one.

1 Like

thank you I got it now.
I like this design the most cause I don’t understand why the vault balance is important to show

Is it possible to create a DAO with a token which you can be staked and based on time staked formula you get an amount of tokens you can use for conviction, dot and normal voting. The better you vote the more tokens you can earn but you can never drop below the amount of voting tokens based on the time-staked formula.

1 Like

The reason the vault balance is important is because the threshold for passing proposals is dynamic based on the funds that are available in the vault.

The threshold is indicated by the dotted line in the progress bar, and that will adjust based on the level of funds available. You can think of each proposal has having a request amount (eg 750 DAI), and the threshold to pass that is a function based on the proportion of the request relative to the Vault’s balance. So if you are requesting 90% of the funds, you will need 100% (or even more) of conviction accumulated to that proposal. (Note that a conviction requirement of more than 100% would be impossible to pass until more funds get added to the vault).

It may make sense to make a separate thread for that topic, I think something like that could be interesting, but its a bit unclear to me exactly what that would entail. Perhaps some sort of deposit app which accepts tokens and locks them for a certain period, and depending on the period locked the user gets a variable amount of tokens that can be used in the org in return.

1 Like

Its just so the voting is more fun and people who vote good / correct / same like most get rewarded for their sense what the people want. the better your sense the more voting power / tokens you get the more influence you have. It would be as you said just a contract where you can lock your tokens and then get Vtokens in return which will be calculated based on the time you locked your tokens. the longer you lock the more tokens you get but you can never loose more then this calculated token amount but you can loose tokens if you have more then this.

so its about asking the people how much money from the vault should be allocated to certain proposals. In this case I would prefer this design:

and if 100% vote that 100% of the funds should go to this proposal than all funds move from the vault to a smart contract DAICO or what kind of proposals are allowed would it be possible to create a proposal as a team for developing the stuff i propose?

To confirm you are saying like like having the vault balances listed? (it seems like maybe you edit the top tabs, but not sure that’s relevant to the vault stuff?).

There is some parameterization such that you can specify what the minimum request amount is and what the maximum request amount (both relative to current vault balance) are, but essentially yes if a proposal has enough conviction then it will be executed and move funds out of the vault.

The proposals are simply a transfer of funds out of the vault to an address, this address could be to to another organizations vault, or to an EOA. The conviction voting app doesn’t make any specific distinction on the recipient addresses.

yes i created a design which i like. the vault is important to show as you said so people know because the convert % into numbers is difficult

and i was thinking why not put all vote apps into one so its not such a mess (my impression)

I think it would be interesting to aggregate “voting” apps/instances into a single view when they have the same interface… but I don’t know about combining something like conviction voting with the standard voting app or the dot voting (since they don’t really have the same inputs/outputs).

Its also currently a limitation of AragonOS/AragonJS that there is a one-to-one relationship between an app’s frontend and associated contracts, so implementing something like would be non-trivial. That’s not to say its not something that shouldnt be pursued, but its probably important to make the case for changes to aragonJS to support that sort of thing.

Definitely not something that I would want to tackle (or even discuss) in the context of implementing a conviction voting app.

1 Like

yes i know thats why you have different taps for different kind of votes (dot, conviction, binary) and in the all tap where you see every vote they all shown but when you click on it you jump to the correct UI for the correct input/output

perhaps its possible to create a separate web app which link them in one UI?

Not quite what we are going for with Apiary but there is some similarity, you may be interested: Daolist is now Apiary, an Aragon DAO Explorer

The goal is to provide a more user centric experience, where users can subscribe to organizations and eventually have a “activity feed” view which shows all of the activities across all the orgs they are interested in one place. So you can imagine a vote showing up there and allowing them to either click into the specific voting app and vote (using the deeplinking feature in 0.8), or perhaps in the future vote directly from that feed using something like what is proposed here: Aragon Button: Interact with DAOs everywhere

1 Like

hey @lkngtn !!! it is exiting indeed to see the work done during ETH Berlin can (and will) move forward!

My question about this (and also related to the Apiary request is why do you see this to be in the scope of the CFDAO and not other funding mechanism?

I would only see fit in the scope is if the developers to be paid for this job are community members (properly skilled ofc) and not the usual flock/nest developers??

Could you clarify wich one is the case??

also… How is the Aragon DAO you mentioned formed? Not sure if there is a bad connection to the Ethereum network right now from my side, but I can see no token holders in the linked DAO.

I tend to agree, not because the developers are part of flock/nest teams (they are also community members) nor because these efforts shouldn’t be funded, they most definitely should. I feel there should be another DAO that funds this kind of endeavours.

While this may be slightly out of the scope of CFDAO, this is the only other option. This is way out of scope for nest

I don’t think to be a member of an existing team should preclude someone for applying for funding, in fact, these community contributors are best placed to work on this kind of experimental, low-cost projects as they already understand the stack really well.

It’s worth pointing out that just because someone works for a team, it doesn’t mean that team has the bandwidth to carry out these ideas. Also, these team’s are funded on their road maps. These projects will fall outside that scope

The CFDAO has been a real success and in lew of a better option, this and apiary should be approved

1 Like

I’m not talking about precluding flock guys, but about including and encouraging dev community members to work and gain knowledge and experience on the Aragon tech stack.

I do agree, and if we manage to use this to attract and train new devs on the Aragon tech, the success would only be increasing! Don’t you think?

1 Like

I totally agree. We need to do more to encourage and develop our community, especially our dev community. @burrrata and I have been working on an AGP that would start to address this, you can find the forum post here.

the purpose of this AGP is more general, it will reward all kinds of contributions not just dev still, I do think we need something like a mini nest program for smaller grants such as this. something that targets developers specifically. The main issue I with using CFDAO for these types of applications is one visibility. A new DAO would make focused on this activity would have a clear scope and be much easier to promote

2 Likes

I know this already passed, but I think that @sepu85 question is worth discussing further…

As far as I’m aware the scope of the “CFDAO” or AGP-10 DAO is defined in AGP-10, which states:

The purpose of the Bounty DAO is to fund low-cost, low-risk bounties that are proposed and voted on by ANT holders.

I think both this and the Apiary proposal fit reasonably well within that scope.

I work for Aragon One, and created this proposal, but this project is NOT an Aragon One related project. While some of the initial work done at EthBerlin was done by members of other flock teams (thanks), there is not any expectation that those members will continue contributing beyond the hackathon. But even if they do, I think it is healthy to support projects which encourage collaboration between flock team members and the wider community.

I would like to see conviction voting implemented as an aragon app, but it is not currently part of any flock or nest teams roadmap.

I’m requesting 5000 DAI to continue development, I can’t guarantee that will be sufficient to complete the app, but it should be enough to attract a few contributors to push things forward. Funds will be managed transparently via an Aragon DAO , and we will ask for additional funds as needed.

The funds were sent to the Conviction org, with current members being myself and @sembrestels – We intend to direct the funds towards the further development of the conviction voting app that was started at EthBerlin, as described in the proposal.

I consider the project to be under the 1Hive umbrella, because I think that it is an interesting mechanism that might help further 1Hive’s goal of helping improve funding for open source projects, and 1Hive members have previously expressed interest in working on conviction voting.

Many of 1Hive’s members/contributors are currently engaged in a Nest grant, but the scope of that grant has clear deliverables, we can’t simply take the funds in that grant and direct them to other projects that we are interested in like conviction voting, the approach we have taken so far is to segment funds that have been received for specific deliverables (like dandelion, apiary, and conviction voting) into independent orgs with membership and custody of those funds managed by the subset of members actively involved in that project.

The main 1Hive org exists and operates as a DAO on rinkeby, https://rinkeby.aragon.org/#/hive – it is an independent and community driven organization that has not received any funding from Aragon (because all CFDAO/Nest funds have been directed to specific projects/initiatives and not to the 1Hive DAO itself).

Currently there are 4 possible ways to request funding from the Aragon Association / Aragon Network – AGP10/CFDAO, AGPs, Nest, and Flock. Both Nest and Flock have fairly strict requirements and have minimum requirements in terms of scope. The AGP process is more open ended, but it has been made clear that it is not acceptable to request funds or grants to develop software projects outside of flock or nest. This leaves only the CFDAO if you are interested in working on a development project that doesn’t fit into the Nest/Flock program.

I would love to see more experimentation and AGP proposals to provide alternatives, I would even support simply increasing the budget for the CFDAO if we start to see it utilized more by the community. I personally felt that the CFDAO was being underutilized and warranted more attention from the community and this is one of the reasons I chose to create these two recent proposals.

3 Likes

Hello community,

I’m happy to announce that our 4 weeks of work on the conviction voting have been very fruitful. The community arround this Aragon app has increased, and we welcome @fabriv, @jayalves, and @vivianedias as new collaborators. We also have engaged with the Commons Stack folks, and we are eager to see the meaningful things we will do together.

These are the main achivements we have got using the funds of the CFDAO:

  • A polished contract with well-defined and documented functions. We also have improved the solidity conviction formula implementation to avoid overflows (still under review), and have connected the app contract to a token manager (with the tokens to stake) and a vault (with the tokens for funding).
  • A javascript library with different formulas related to conviction. With it we can calculate the maximum amount of conviction a stake is going to accumulate, and when it is going to pass the threshold, for example.
  • Many visual components that represent how conviction is going to evolve. They still need some UX/UI polishment, but we have:
    • A conviction bar: it represents your conviction, the total amount of conviction, the future amount acording to the current stake, and a dashed line representing the threshold.
    • A conviction trend: it represents the prediction of the increase or decrease of conviction in a proposal in the following 5 units of time.
    • A conviction countdown: it represents the time that is needed for conviction to surpass the threshold, or the amount of tokens needed for it to surpass at some point.
    • A conviction chart: it represents the evolution of conviction in the last 50 units of time, and the prediction on how it is going to evolve for the next 50 units. It also represents the threshold as a dashed line.
  • A set of mockups with a new design (not implemented yet).

And this is how the app looks like at the moment:

Main view

It shows a table with the active proposals, the money they are requesting, and their conviction bar and trend. On the left the vault funds are shown, and the proposal you are supporting at the moment.

Supported proposal

When you open a proposal, you see more details, such as the link, creator, and beneficiary of the proposal, the time it needs to pass the threshold, and a chart showing the past and predicted future conviction.

You can withdraw your support on a proposal at any moment, and you need to do it if you want to support another proposal.

Proposal ready to execute

When a proposal’s conviction has passed the threshold, it is ready to execute. Executing it will transfer the funds from the vault to the beneficiary. As there will be less funds in the vault, it will increase the threshold for the other proposals.

Panel to add a new proposal

To submit a new proposal you need to fill a title, an amount of money, a beneficiary address, and an optional link for further info.


The app is still on development, but you can already check it out following the instructions in its README file. You can also join the community by entering the #conviction-voting channel at the 1Hive keybase team. Check out the amazing stuff the Commons Stack community is doing too.

Of course, there is still a lot of work in front of us, but we wanted to share with the broad community the progress we have done with the funds we recieved.

Thanks a lot for your support.

8 Likes