What is your capability to deliver your project with high levels of trust and accountability?
Our proposal comes with minimal risk, as we have successfully delivered viable standalone proof of concept (POC) solutions to validate our approach to solving some of the biggest challenges - including wallet connect, mainnet registration, decentralized user accounts, verifiable private voting, and interfacing with Catalyst Core backend. These solutions will be married together into a single platform that offers all standalone capabilities in a single place.
Blockchain voting capabilities have been refined over 10 rounds of Catalyst, with more than 1.7 million votes cast. The Catalyst mobile app has been iterated on since Fund0, with encrypted private voting in use since Fund6. The team has deep expertise interfacing with the Catalyst Core backend for consuming parameters and key event details, fetching proposal information, and casting votes.
The Voting Center being deployed to Catalyst continuous testnet builds on the foundations of the voting app to incorporate features including delegation and dRep registration for liquid democracy, while improving the overall voting experience. In the delivery of this project, we will collect community feedback on that PoC implementation, which can be incorporated into the final unified product ready for production deployment in future Catalyst funds.
Over the past 9 months of building the Voting Center, Cardano’s ecosystem wallet teams have collaborated with the Catalyst team to implement key features including wallet connect, Cardano mainnet registration, vote delegation, and vote signing on a standalone desktop application.
In the process, communication channels and trusted relationships with wallet teams across Cardano have been established. We have also implemented and led integration efforts for new CIP changes required by our efforts, including CIP15, CIP30, CIP36, and CIP62 as demonstrated in the following link: Cardano Improvements Proposals (see CIP15, CIP30, CIP36, and CIP62 for more details).
Efforts to solve wallet connect design challenges have also sparked deep discussion and exploration of user authentication and authorization. These discussions have produced a well-defined approach for decentralized role-based access control that has received positive feedback from both community contributors and Cardano technical stakeholders.
In Fund10, (if we receive the mandate to continue as the operator of the Catalyst funding process) the team intends to deliver a standalone Snapshot Module that will allow users to easily verify their registration and check tentative voting power. This will serve as a reference for delivering similar capabilities inside the Voices platform, that can be extended to include additional roles and eligibility checks.
These solutions demonstrate team competencies in interfacing with the Cardano blockchain and Catalyst Core backend, while supporting the broad range of human processes required by Catalyst.
What are the main goals for the project and how will you validate if your approach is feasible?
The primary technical objectives of the proposed project will:
- Streamline the existing Catalyst experience into a single Voting Centre platform, effectively replacing Ideascale and readying to deprecate the existing iOS and Android voting apps, to enable:
- Creation of role registrations on mainnet to participate as a voter, representative, or proposer(enabling all future roles)
- Browsing, collaborating on, and submitting proposals (at any time) with all updates signed by authorized wallet
- Casting, confirming and auditing encrypted votes on private voting sidechain
- Viewing earned and paid rewards tied to connected wallet
- Introduce decentralized Authentication / Authorization (AuthN/AuthZ) framework to enable role-based access control for sensitive activities including collaborative (private) document editing and Catalyst dRep voting - without collecting emails
- Collaborate with the community on CIP changes and wallet integrations to associate key activities like proposal submission and vote casting with on-chain registrations to increase auditability and accountability across funding decisions and project delivery
- Lay unified foundations for future open-source collaboration with the community to refine processes and develop new capabilities inside a single home - without limiting opportunities for parallel community innovation
Benefits for each of the user groups impacted include:
- Voters
- Reduce number of applications required to participate
- Improve decision quality by helping voters find the right proposals based on skills, interests, and participation history
- Enhance visibility of rewards and post-funding outcomes of approved proposals
- Representatives
- Reduce the cognitive load of reviewing hundreds of proposals with intuitive navigation and embedded decision-assist insights
- Improve decision quality by increasing the amount of staked ADA participating on every proposal funding decision
- Boost visibility and adoption with representative discovery, including vanity link profiles on the platform complete with bio, socials, and domain of expertise
- Proposers
- Improve proposal quality with more intuitive interface that places submission questions and guidelines alongside proposal submission inputs
- Promote collaboration (and accountability) with embedded capabilities for co-proposing and signature-based document editing - available at any time
- Protect intellectual property with option for encrypting drafts prior to submitting final proposals
In combination, these improvements will enhance the overall decision quality and thoroughness of the funding process, in addition to the quality of proposals submitted for consideration.
Approach and implementation
Engineering and security best practices will be followed to implement the solution, in addition to consultation with both the Catalyst / Cardano community and internal IOG subject matter experts from cryptography, and game theory domains. Prior user research and community feedback informs our initial understanding of challenges to solve for.
Catalyst Voices intends to develop iOS, Android, and Web applications from a single code base with near-native speed and performance.
We will approach the implementation of sets of features in terms of “modules”. Each module will correspond to a user role, segmenting the experience into sections aimed at completing specific actions.
Role registrations, participation history, and saved preferences will unlock new aspects of the experience to help users engage at their own pace, on their own terms.
Learnings acquired through developing and maintaining existing tools (such as Catalyst Mobile App, Voting Center, Snapshot Module) will be leveraged in order to rewrite the target development frameworks by building a single platform that is highly secure, extensible, and maintainable. While we anticipate unexpected challenges in integrating all features into a single platform, our plan to leverage battle-tested reference implementations should de-risk and accelerate development significantly.
The project will also benefit from maximizing the results of prior discovery and design research. Wireframes and mock-up designs created for and after user testing for the proposal submission module to replace Ideascale will continue to refine the UX with further user feedback gathered during the delivery of this project. This will include features and UX interactions for user profiles, cross-module navigation, and embedded guidance.
Finally, the development of Catalyst Voices will follow the testing and deployment framework planned for the existing Catalyst stack. The latest experimental features will be deployed to a public devnet, and the latest stable features will be deployed to a public testnet. The community will have opportunities to engage with new features and provide feedback before promoting features to the production release candidate.
Recurring voting events will run every 2-weeks on the Catalyst testnet to provide more frequent opportunities to engage with each of the phases of proposing, reviewing, and voting.
Please provide a detailed breakdown of your project’s milestones and each of the main tasks or activities to reach the milestone plus the expected timeline for the delivery.
A roadmap for the project’s planned delivery can be found in Appendix A
APPENDIX A: CATALYST VOICES MILESTONE & TIMELINE
Milestone 1: Open Source Setup & Initial Voting Module Deployments to Testnet
Delivery Time: Approx. 1 Month
Cost: ₳75,000
Acceptance criteria: The first milestone will lay the foundations for Catalyst Voices to be delivered as a fully open source project. It will include a public repository for the project, appropriate licensing for all code & documentation, and setup of a continuous integration and deployment pipeline that will allow community oversight and feedback from Day 1.
Working frontend implementation for voting and delegation, will be delivered to testnet as soon as viable, and will continue to be refined over the course of the project. Production readiness for the voting module will come in future milestones, as backend enablers and integrations are completed.
This ensures a high degree of auditability and oversight for project delivery, while allowing the open source developer community to benefit from every incremental improvement we make.
We will measure the number of watchers, contributors, and forks of the repo to indicate whether external developers are engaging with the open source libraries.
We will also measure participation in dry runs of new features on the Catalyst continuous testnet over the lifecycle of the project.
Milestone 2: Architectural Updates to Registrations to support multiple roles & Initial Deployment of Proposal Submission to Testnet
Delivery Time: Approx. 2 Months
Cost: ₳150,000
Acceptance criteria: The second milestone will unlock a permissionless authorization framework that will allow users to interact with the platform without sharing personally identifiable information like email. Access control and user accounts will be tied to on-chain registrations, submitted from the platform and written to mainnet.
Decentralized access control will allow us to provide rich experiences to users, while upholding Web3 values like self-sovereignty and data privacy. On-chain registrations help promote accountability and auditability across roles, while laying foundations for reputation.
We will need to collaborate with the Cardano community to approve and implement CIP changes, and we aim to get the support of at least 3 external contributors before initiating the CIP process.
Working frontend implementation for proposal submission and commenting, will be delivered to testnet as soon as viable, and will continue to be refined over the course of the project. Production readiness for the proposal module will come in future milestones, as backend enablers and integrations are completed.
Milestone 3: Backend and Wallet Integration Updates
Delivery Time: Approx. 3 Months
Cost: ₳189,000
Acceptance criteria: The third milestone will deliver wallet connect functionality that will allow users to interface with the platform, as well as backend enablers to support subsequent milestones.
This will eliminate the need for users to take any action inside a wallet, allowing them to stay inside the unified platform across the entire registration process.
We aim to have at least 3 community wallets supporting the latest changes.
Milestone 4: Voting & Delegation
Delivery Time: Approx. 3 Months
Cost: ₳200,000
Acceptance criteria: The fourth milestone will offer an end-to-end experience for voters and representatives. Starting with a connected wallet, users will have the ability to register as an active voter / representative, delegate voting power to a representative, browse proposals, cast votes, and view voter / representative rewards.
This will eliminate the need for users to take any action outside the platform related to delegating voting power, browsing finalized proposals, and casting encrypted votes to the blockchain.
We plan to conduct at least 3 preprod voting events with 50+ participants in each to collect and incorporate community feedback.
Milestone 5: Proposal Submission & Commentary - in Production
Delivery Time: Approx. 3 Months
Cost: ₳226,000
Acceptance criteria: The fifth and final milestone will bring feature-completeness in the form of an Ideascale replacement for proposal submission - that adds new privacy, collaboration, and accountability features. Users will be able to register as a proposer, create new public OR encrypted drafts, collaborate with co-proposers, and submit finalized proposals for voting.
This will eliminate the need for users to interact with a separate interface for proposal submissions, further consolidating the experience.
We will pilot the new proposal submission experience with at least 25 proposers to collect and incorporate community feedback.
Please describe the deliverables, outputs and intended outcomes of each milestone.
To achieve our goals, we have outlined the following roadmap:
Milestone 1: Open Source Setup
To meet and exceed the Open Source requirements required of Catalyst Systems Improvements, the first milestone will deliver a fully open source public repository for the Catalyst Voices project. We will also allocate time to defining and implementing a continuous testing framework with the community that will be carried concurrently throughout the delivery process. This is particularly relevant to completion of Milestones 4 and 5.
Deliverables: Apache2 and MIT Licensed GIT Repository for the Catalyst Voices application; and minimally functional version of voting module deployed to testnet
This milestone is foundational development infrastructure work. It is necessary to ensure that licenses are appropriately applied, and that the development work can proceed smoothly from a solid foundation. It includes:
- Integrated and automated Unit Testing of code.
- Integrated and automated Publishing of documentation.
- The correct license files are present and referenced in the documentation.
- Documentation detailing how to build the application locally.
- Facilities for the public to comment or query on the work undertaken in the repository.
- Initial skeleton implementations of each application will form the foundation for future work.
- Deploy minimally functional voting module to testnet for refinement over course of project
- Define, socialize, and implement best practices for continuous community testing of latest features during recurring 2-week mock voting cycles, that will continue through the entire lifecycle of project delivery.
We will apply the appropriate licenses to all code and documentation from the project's inception. We will conduct all development in public. We will set up Full Continuous Integration and Deployment into our testing environments and deliver each milestone as community-operable and reproducible tagged releases.
The initial version of Catalyst Voices will be functional but minimal to capture the basis from which we will apply iterations for all future work. Voters, representatives, and proposers will have a single end-to-end home to complete required activities, but future refinements will be needed to optimize the experience and incorporate tools that maximize quality of activities completed.
Milestone 2: Architectural Updates to Registrations to support multiple roles & Testnet deployment of Proposal Submission
This milestone includes preliminary standardization which is necessary to deliver the later milestones. The process incorporates both public feedback with the Catalyst Community and with the CIP Editors. Parts of this milestone can not be completed until the earlier standardization efforts are sufficiently advanced to eliminate unnecessary and costly re-work.
Deliverables include updated versions of CIP36 and CIP62 required to support role-based registrations, as well as snapshot tool improvements to support the changes to CIPs; minimally functional version of proposal module deployed to testnet
2.1 Updated CIP-36 on-chain registration to support DApp specific roles.
- Enhance CIP-36 for Catalyst to support the following minimum roles:
- Voters
- Representatives
- Voters Delegating to Representatives
- Proposers
- Co-Proposers
- Reviewers
- Ensure flexibility to define other roles without future CIP-36 Update
- Ensure capability to be used by other dApps without conflicting with Catalyst Registrations.
- Prepare the CIP-36 Documentation Updates.
- Create a reference implementation and test vectors that produce correct data matching the CIP update.
- Publish and seek community feedback and input on changes proposed.
- Incorporate necessary changes based on feedback.
- Submit changes upstream to the CIP editors for review and inclusion as an official CIP.
- Includes the work entailed to steward the CIP update through the CIP Process.
- Deploy minimally functional proposal module to testnet for refinement over course of project
2.2 Updated CIP-62 to support the CIP-36 changes:
- The Draft CIP-62 is updated to:
- Enhance Voter registration to be able to properly process the changes defined in the CIP-36 draft. (This is necessary to support permissionless authorization and to ensure data submitted is authoritative.)
- Facilitate the ability to sign data securely with both Software and hardware.
- Enhance Vote Signing to use the correct keys for Representatives or Voters.
- Prepare the CIP-36 Documentation Updates
- Produce a Mock Development Wallet which provides a reference implementation of the Changes introduced in this update.
- Publish and seek community feedback and input on changes proposed.
- Incorporate necessary changes based on feedback.
- Submit changes upstream to the CIP editors for review and inclusion as an official CIP.
- Includes the work entailed to steward the CIP update through the CIP Process.
2.3 Snapshot Tooling enhancements:
- Capture the different roles defined by catalyst.
- Calculate Voting Power or other Role specific requirements at snapshot time.
- Properly handle multiple snapshot deadlines for different roles.
- Import the role registrations on a periodic basis into the Catalyst Backend Database.
Milestone 3: Backend and Wallet Integration Updates
Deliverables will include updates to Catalyst Core backend to support role-based registrations and wallet-connect capabilities for the browser-based application. More detailed deliverables are as follows:
3.1 Enhance the Catalyst Core backend Database:
- Add support for:
- Capturing all defined roles.
- Recording Earned Rewards and Payment information for each registration.
- Define Parameters for each registrations snapshot and deadline.
- Allows each role to have a different set of minimum requirements.
- Allows the deadline for different roles to occur at different times relative to the Fund Cycle.
- Update the cat-data-service to:
- Incorporate the new data into existing or new endpoints.
- Must ensure that each role registration type can be accurately checked by external tooling.
- Provide endpoints to enable permissionless authorization of front end applications for defined role registrations.
- Provide endpoints to return any detected errors with Role Registrations, and a users registration history.
- Documented Public Open API Definition for cat-data-service.
- Automated Test Cases running in CI.
3.2 Browser Code Updates to interface to the Wallet:
This is a necessary component of the full UI implementation and will be used extensively, but it will be produced as a stand alone module so that other DApps written in Flutter/Dart can simply re-use the library to access CIP Conformant bindings and interface to all compatible wallets.
- Features to Include:
- Full Support for CIP-30 functions.
- Full Support for CIP-36 Registrations as defined by the updated CIP-36.
- Full Support for all CIP-62 Interfaces. This will enable:
- Registering for a Role, and submitting on-chain.
- Signing Data by a user's registered role keys.
- Performing the dApp integration to CIP-30 and CIP-62 to enable permissionless auth to the backend.
- Documented Public API Definition
- Automated Test Cases running in CI.
Milestone 4: Voting & Delegation - Production Readiness
Deliverables will include front and backend changes to support registration, voting, and delegation, including rewriting of code from the existing Voting Center into the target Flutter framework. Also included in this milestone will be backend changes required to support the proposal submission module delivered in Milestone 5.
4.1 First Front End Module of the Catalyst Voices UI:
This module will start development in an earlier milestone but due to the dependencies on CIP finalization and Backend plus Wallet integration can not be delivered until those components are finalized and delivered.
Redevelopment of the Voting Center Front End to enable integration to the updates role registrations and to allow seamless upgrade to incorporate further modules as they are developed. Flutter is being used so that this code base can be used to build Native, Mobile and Browser based applications. However only Browser will be initially delivered as there is no current standard for Cardano Wallet integration for Native or Mobile based DApps.
4.2 The UI to include the following features:
- Connect to wallets available in the Browser Session.
- If no wallet is available, provide helpful guidance to instructions on how to find compatible wallets.
- Determine and Display a User's current Role registrations, and Voting Power.
- Allow a User to Register or update a Role Registration through the wallet.
- Display the details of the Current Fund, including timeline.
- Allow the user to register as a Voter.
- Allow a Voter to Register as a Representative.
- Display to a Voter the Registered Representatives.
- Allow a Voter to Delegate their Voting Power to one or more Representatives and apportion their voting power.
- Allow a Representative to Deregister.
- Show a Representative the status of their Voting Power and the Voters they represent.
- Allow a Voter to reclaim their voting power from Representatives.
- Allow a Voter to Deregister.
- Show the Voter the effect of their Delegation, is it valid and the voting power assigned to their Representatives.
- Allow a Representative to add “Extra” authoritative data to either their registration on-chain or to the Catalyst Backend, to provide additional context to delegators.
- Data MUST be signed by the Representatives Wallet with their representatives key.
- Show the Voter details about the Representative.
- Recording Earned Rewards and Payment information for each registration.
- Warn a Voter if their current registration can not earn rewards and guide them to correct it.
- Define Parameters for each registration snapshot and deadline.
- Allows each role to have a different set of deadlines or minimum staked ada.
- Show a Voter their registration history, including any detected errors or issues in their registration.
- Show each Category or Challenge in a Fund and display full details about the Challenge, including its budget and a summary of the Proposals made for it.
- Show all Proposals currently made for a Challenge.
- Show the voter when voting opens and when it ends for a fund.
- When voting opens, allow a voter to choose proposals to vote on.
- Votes for Proposals are signed by the wallet, and submitted to Catalyst when the voter confirms them.
- Display Proposals the Voter has already Voted on, and do not allow re-voting on the same proposals.
- Provide Search functions to allow Proposals to be easily found, sorted and filtered
4.3 Update Catalyst Database Schema to support Proposal Submission:
- Add Proposal Definition data per Fund Challenge or Category.
- An Event will be able to define the format of the Proposals which can be placed on the Events Objective.
- Each Challenge or Category will be able to support a different Proposal Format.
- Proposal Format will be defined by JSON Schema to enable easy Proposal validation, reuse and Front End integration.
- Enhance individual Proposal Data to allow us to store proposals submitted from catalyst voices.
- Proposals need to be in at least a Private and Published state, as well as Draft and Final.
- Draft Proposals will be stored as time sorted revisions, so that older proposal versions can be retrieved by the proposal author/s to enhance editing experience.
- Add to the DB schema to allow the storage of comments on proposals which must be signed by a voter or representative making the comment.
- Comments need to be time ordered.
- Comments can be deleted, but they are only marked as deleted in the backend until the end of the Fund which allows a Commenter to undelete their comment if desired.
4.4 Update Catalyst Database Service API to support Proposal Submission:
This is completed in this Milestone to enable the work of the next milestone to be completed efficiently.
- Retrieve list of registered proposers and co-proposers.
- Retrieve my proposer registration and all co-proposer registrations I am a part of. (Even if they are not fully executed yet).
- Retrieve the proposal schema for an event challenge.
- Submit proposals either as a co-proposer, or individual proposer. (Authoritative signed data with Proposer keys)
- Update proposal state to Private/Public or Draft/Final.
- Private proposals are encrypted in the backend by our private/public data protection key.
- Retrieve draft proposals/final proposals for this proposer. (Authorisation proved by Proposer Keys)
- Decrypt private proposals ONLY when returned to an authorized proposer.
- Co-Proposers need a full and valid co-proposer registration to retrieve proposals.
- Retrieve final proposals for anyone.
- Submit Proposal Comments as a Voter, Representative or Proposer (auth, proposer can only comment on their own proposals/co-proposals).
- Edit Proposal Comment (Re-submit and replace old comment).
- Deleted Comment is not displayed or returned by the API, but is retained until the end of the Fund.
- Retrieve Comments for a Proposal.
Milestone 5: Proposal Submission & Commentary - Production Readiness
Deliverables are a production-ready user interface for submitting proposals, effectively replacing Ideascale with the capabilities of collaborating on and editing proposals with co-proposers, and submitting comments and reviews on proposals.
5.1 Proposal Submission and Commentary - Front End
- An Interface to register as a proposer.
- Add capability to authorize as a proposer (API Authorization) to access protected backend resources.
- Functionality to create a new set of co-proposers (choose from currently registered proposers).
- Functionality to search for, join and leave a created set of co-proposers.
- Co-Proposers are only valid once all participants have registered their membership in the group.
- Every Proposer has an individual proposer registration.
- Every Proposer can belong to multiple groups of co-proposers.
- Read proposal format from the backend, for a challenge in the voting event, and format it for data entry.
- Uses json schema.
- The Front End interprets the json schema to produce an editable json document, which can be validated.
- This allows the Proposal Format to change between Catalyst Funds or even on different Challenges, and for validation to be properly built into the application.
- Eliminates the need to customize the application when rules change.
- Retrieve a proposal revise, edit it, and submit it:
- Submit a proposal as either a Public or Private Proposal, and either Draft or Final.
- Must sign each submission with the proposers key.
- Co-Proposers must submit individually signed copies of a Draft Proposal before it can be made Final.
- As a voter, retrieve all published proposals for a particular event/objective, and their state (Draft or Final).
- Proposals that are Final before the Proposal Submission Deadline are included in the current fund. All other proposals remain and are able to be submitted in a subsequent fund if they become Final.
- As a voter, post a comment (signed by the voter) on a challenge in the latest fund.
- Voters can also Edit or Delete a previously made comment.
- Retrieve all comments made by the voter in the Fund.
- As a proposer, comment on any of your proposals (allows Proposers to identifiably reply to a voters comment).
- In the voting interface, allow display of full proposal data, including the comments.