Coder Social home page Coder Social logo

clrfund / clrfund-deployer Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 4.0 25.9 MB

A GUI and other tools for deploying a new instance of clr.fund

License: GNU General Public License v3.0

Solidity 5.25% HTML 0.08% TypeScript 94.64% Shell 0.01% JavaScript 0.03%

clrfund-deployer's People

Contributors

daodesigner avatar spengrah avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

clrfund-deployer's Issues

Deploy MACI Factory

User Story

As an Admin I would like to deploy MACI Factory contract so that I may deploy MACI instances for each new funding round

Tasks

Start funding round

User Story

As an admin I would like to start a new voting round so that I may collect money for my public goods.

Tasks

Deploy Funding Round Factory

User Story

As an Admin I would like to deploy Funding Factory contracts so that I may deploy funding instances for each new funding round

Tasks

Deploy User Registry

User Story

As an Admin I would like to deploy a valid instance of IUserRegistry so that I may onboard my users to each new funding round

Tasks

Finalize a funding round

User Story

As an Admin I would like to Finalize a funding round so that I may distribute funds according to the vote tally provided by the coordinator

Tasks

Select from standard Recipient Registry options

User Story

As an admin I would like to use SimpleRecipientRegistry or Kleros TCR as a Recipient registration method that satisfy IRecipientRegistry, so that I may have easy deploy options

Tasks

Arbitrary EVM network connection

User Story

As an admin I would like to connect to an arbitrary EVM network so that I may deploy contracts there

Tasks

Notes

Assuming we use a subgraph to fetch data to the application, the subgraph and dependencies will need to be deployed to any network we support.

Coordinator help

User Story

As an admin I would like to Contact the clr.fund team for help being my coordinator or be the coordinator myself, so that I may have easy deploy options

Tasks

Set signup and voting durations in Funding Round Factory

User Story

As an admin I would like to Set Signup and voting durations in Funding Factory Contract so that I may update the Signup and voting duration, in future funding rounds

Tasks

  • Transaction hooks
  • Documentation
  • Hook up Wallet Provider
  • Hook up Wallet Modal
  • Form Component

Transfer ownership of MACI factory to Funding Round Factory

User Story

As an admin I would like to transfer ownership of my MACI factory to my Funding Factory Contract so that I may update MACI factories in future funding rounds

Tasks

  • Transaction hooks
  • Documentation
  • Hook up Wallet Provider
  • Hook up Wallet Modal
  • Form Component

Cancel funding round

User Story

As an Admin I would like to cancel a funding round so that I may distribute funds back to participants

Tasks

Enable app UI/theme updates

User Story

As an admin I would like to make changes to my UI so that I may keep it up to date or fix errors/issues

Tasks

User Registry UI

User Story

As an Admin I would like to use/deploy a UI for my IUserRegistry so that I may manage users sign up on the Registry Contracts (Simple, BrightID, etc.)

Note

Split into two stories

Set Recipient Registry in Funding Round Factory

User Story

As an admin I would like to update the Address of the IRecipientRegistry contract my Funding Factory Contract uses so that I may update/patch IRecipientRegistry in future funding rounds

Tasks

  • Transaction hooks
  • Documentation
  • Hook up Wallet Provider
  • Hook up Wallet Modal
  • Form Component

Set Coordinator in Funding Round Factory

User Story

As an admin I would like to set the coordinator in the Funding Round Factory Contract so that I may update coordinator keys used in future funding rounds

Tasks

  • Transaction hooks
  • Documentation
  • Hook up Wallet Provider
  • Hook up Wallet Modal
  • Form Component

xDAI network connection

User Story

As an admin I would like to connect to xDai so that I may deploy contracts there

Tasks

Customize app theme

User Story

As an Admin I would like to add theme customization to my clr.fund App instance so that I may incorporate my org's branding.

Tasks

Verify contract versions

User Story

As an admin I would like to verify that I am deploying the latest versions of the contracts

Tasks

Factory Factory

Overview

A factory contract that deploys MACI and funding round factories, which are the two factory contracts that constitute an instance of clr.fund. While such a factory factory is not strictly necessary, it would
- facilitate a subgraph to support performant data fetching in clr.fund app instances
- make it easy to provide a web-based instance-deployment UI
- give admins confidence that they are deploying the correct version of the requisite factory contracts.

Considerations

Block size limits. With all code deployed in one contract, a factory factory may be too big to fit into a single block. However, we could get around this constraint with a few approaches:

  1. By using a clone factory pattern such as EIP 1167 (or similar). That would have a secondary benefit of reducing the deployment costs for admins.
  2. Another mitigation would be to create two factory factories, one for MACI Factory and one for the Funding Round Factory. That would require two subgraphs, but that might be ok, and we might really only need a subgraph for the Funding Round Factory anyways.
  3. Deploy MACI and Funding Round factories for each instance, and then add a registration contract that ties them all together into a single subgraph.

Deploy Recipient Registry

User Story

As an admin I would like to deploy a valid instance of IRecipientRegistry so that I may onboard new recipients in each funding round

Tasks

Deploy app

User Story

As an admin I would like to use/deploy a UI for my funding round so that I may give users a way to easily donate to recipients

  • includes self-hosting configuation

Tasks

  • schema
  • subgraphs x5

Recipient Registry UI

User Story

As an Admin I would like to use/deploy a UI for my IRecipientRegistry so that I may manage recipient sign up on the Registry Contracts (Kleros, website, etc.)

Note

Split user story

Select from yield-bearing round tokens

Overview

For longer rounds, contributions can in theory be converted to a yield-bearing asset to grow the total funding per round. clrfund can use any ERC20 for the round token -- including deposit tokens like cTokens, aTokens, or yearn vault tokens -- so user contributions made in "raw" stablecoins could be converted into the yield-bearing round token, potentially via a zap.

On the deployer side, an option for admins to select the desired yield-bearing asset as the round token and configure the zap.

Considerations:

  • deposit/withdrawal gas costs eating up any yield earned
  • different defi protocols on different networks

Set User Registry in Funding Round Factory

User Story

As an admin I would like to update the Address of the IUserRegistry contract my Funding Factory Contract uses so that I may update/patch IUserRegistry in future funding rounds

Tasks

  • Transaction hooks
  • Documentation
  • Hook up Wallet Provider
  • Hook up Wallet Modal
  • Form Component

Select from standard User Registry options

User Story

As an admin I would like to use SimpleUserRegistry, with options to define the owner address or
BrightID as a User registration method that satisfy IUserRegistry, so that I may have easy deploy options

Tasks

Set token in Funding Round Factory

User Story

As an admin I would like to Set token to accept donations in Funding Factory Contract so that I may update the token donations are denominated in, in future funding rounds

Tasks

  • Transaction hooks
  • Documentation
  • Hook up Wallet Provider
  • Hook up Wallet Modal
  • Form Component

UI to manage optimistic recipient registry requests

Related to #12 & #16

Once a CLR.fund instance is deployed, it'd be great to add some "management" features for admins. One in particular would be a screen to manage requests if using the OptimisticRecipientRegistry contract.

I'm envisioning a screen of "pending requests" that the registry owner can challenge/execute (via challengeRequest & executeRequest).

Another nice feature (dependent on clrfund/monorepo#344) would be the ability for owners to approve requests immediately (without having to wait for the challengePeriodDuration).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.