GoodDollar / GoodCollective

Monorepo for GoodCollective (Segmented UBI and Direct Payments Pool)
MIT License
4 stars 4 forks source link

Create new GoodCollective #231

Open decentralauren opened 6 days ago

decentralauren commented 6 days ago

Business Description

An interface to allow anyone to create a GoodCollective pool smart contract without interacting with an explorer. The user will be able to complete the following steps:

1) select what kind of collective to create 2) define the parameters 3) create the contract 4) view the GoodCollective in the GoodCollective dApp

Detailed Description of Functionality

The following parameters can be configured by an admin of a new GoodCollective. These should be organized in an easy to use manner via a user-friendly UX design.

Choose pool type Each pool type should have a description of what the pool does, can be pulled from GoodCollective HIW

  1. Results-Based Financing (NFT-Triggered)
  2. Segmented Basic Income
    • Note that these types of pools cannot be created self-service right now, so a link to contact the GoodLabs team should appear
  3. Community Pool
  4. Open Pool (anyone can claim)
    • onlyMembers: only pre-approved wallets (by manager) can claim, otherwise anyone that claims becomes a member

Pool Info (All Pools)

General Pool Parameters (All Pools)

For Community Pool Only

cycleLengthDays minActiveUsers: minimum amount of users to divide the pool for (maxDailyUBI = DailyPool/minActiveUsers)

For Results-Based Financing (NFT-Triggered) Only

Parameters not displayed

Design Reference

See the GoodCollective Figma for components, styles and example page layouts.

----- To Be completed by development team -------

Technical Implementation

*Outline the technical approach for building the feature. This section is typically filled out by the development team or can contain suggestions. (dev team: @johnsmith-gooddollar @sirpy @L03TJ3)

Acceptance Criteria

Specify criteria that will be used to determine if the feature meets the requirements and functions correctly.

decentralauren commented 6 days ago

@sirpy - put a couple of questions for you above. Mind answering?

Also, am I missing any contract or UI parameters that a user could set when creating a new GC?

sirpy commented 6 days ago

@decentralauren

  1. we just have protocol fee, no admin fees
  2. the claim frequency can be set, but the "claim time" is always 12UTC
  3. We dont have min amount yet. we can add it. lets discuss this and other ubi settings
  4. We dont have generic support for segmented ubi based on identity.
  5. ubi pool settings
    • manager: can change pool settings and add members
    • cycleLengthDays: number of days of each UBI pool cycle (preserve enough tokens to be distributed over cycle. DailyPool = TotalInPool/cycleLengthDays)
    • claimPeriodDays: how often can someone claim their UBI
    • minActiveUsers: minimum amount of users to divide the pool for (maxDailyUBI = DailyPool/minActiveUsers)
    • claimForEnabled: can you trigger claim for someone else
    • maxClaimAmount: dailyUBI = min(maxDailyUBI, maxClaimAmount)
    • maxClaimers: maximum number of members in the pool, first come first served.
    • onlyMembers: only pre-approved wallets (by manager) can claim, otherwise anyone that claims becomes a member
  6. NFT pool settings
    • manager: can change pool settings and mint NFTs
    • rewardsPerEvent: how much reward is paid per event in the NFT (contributer reward = eventReward*Quantity/event contributers) Safety limits:
    • maxTotalPerMonth: maximum total rewards per month that can flow out of the pool
    • maxMemberPerMonth: maximum rewards a contributer can earn per month
    • maxMemberPerDay: maximum rewards a contributer can earn par day
sirpy commented 3 days ago

@decentralauren while pools can already support other tokens, I don't want to support it in the UI.

  1. We already have the mechanism that automatically swaps to G$
  2. Other tokens are not supertokens or they require "wrapping" which is almost no difference then swapping to G$, ie you need a special extra TX.
  3. using G$ is double impact. you support the pool but also global UBI