CAST Revamp - A voting tool for FLIPs and token communities

Hello everyone,

BuildSquad is actively revamping CAST with several new changes/improvements that will be funded through grants. The overall idea is that CAST would be the official tool for FLIP voting and all of this process (FLIPs authoring, voting, etc) is going to be now facilitated on-chain, this process should be open to all flow accounts with minimum setup needed, as such it’s going to promote further end-to-end community involvement and decentralized governance.

but first things first…

What is CAST?
CAST was created as a voting tool for token communities on the Flow blockchain in order to make DAOs more accessible, easier to manage, and more fun for all participants.

How does CAST work?
In essence, this is how the app works:

For more detailed info, I’d suggest having a look at:

Where are we currently standing?
We’re still in the early stages, we have finished some UI/UX changes and completed the smart contract design, at this point, we would really like to involve you folks in helping us shape this in the best way possible for the community…

In this GitHub project board you can have a look at our work so far, we follow a strictly open-source approach.

The smart contract design was created by having the following product requirements in mind:

  1. Flow Governance Working Group
  • The Flow FLIP community should be created on-chain on a new account owned by the Flow Governance Working Group. This is a one-off event
  • The new account would be topped up and would pay for the storage of the proposals
  • The Flow Governance Working Group (GWG) should be the admin of this community. Admins are like FLIP sponsors and get the privileges to -
    • Add more admins (“sponsors”)
    • Approve/ disapprove proposals going to vote (verify they’ve followed the prior FLIP proposal process + request a change in voting strategy, etc.)
  1. FLIP author/ proposer
  • Create, choose voting strategies and submit for review
  • Update text or strategies based on GWG’s inputs
  • Launch proposal (stores on-chain)
  • Proposer pays for the transaction to create the proposal, while GWG pays for its storage
  1. Community Voter
  • Votes
    • Storage of votes - on-chain… like sub-resource of the proposal
  • Pays the transaction fee to vote
  1. Anonymous user
  • View all proposals
  • Verify the votes on a proposal.

Our solution

  • This is a high-level view of our smart contract design:

  • Here you can have a look at our smart contract design, please note the contract named CAST.cdc.

  • Not sure what the design entails/don’t find the comments on the code helpful? Please have a look at our doc explaining the main resources of the design.

Please have a look at those resources and do not hesitate to comment on/question/improve our design, we would really appreciate your feedback on this! :pray:

This is the previous thread we opened while we were working on the design in order to align with the community Discord

What’s next?
CAST has an exciting roadmap of upcoming features, here you can get a glimpse of it.

We are now presenting you our solution in order to get some feedback, we are going to give this some time so we make sure we have a final solution that is bulletproof and endorsed by the community and afterward, we will move to the next phase, the implementation of our design and phase 1, phase 1 looks like this:

Phase 1 aims to upgrade CAST to a fully on-chain voting solution, including on-chain proposal storage, vote storage, and token-weighted custom voting strategies. An admin dashboard for proposal management and proposal analytics will provide comprehensive insights.

Thank you for bearing with me on this long post and hopefully you are as excited as we are about the CAST revamp!

Shut out to @vishal @kshitij.chaudhary @jeromep for making this happen and to @alilloig @liobrasil Parikshit for building this with me.