Decent x Allo Project Spec
Goals
- Macro: create new funding model for creators to reward their contributions to the initiatives of matching pool sponsors (e.g., Optimism, Music, Crossmint)
- Macro: create a more positive sum alternative than traditional advertising models (e.g., spend $10K sponsoring a grant pool that will drive direct contributions vs. that money going to Google or Facebook)
- Decent: increate the number of transactions on our platform
- Gitcoin: demonstrate an exciting implementation of the Allo Protocol
Requirements
Front End:
- Replace Decent spotlighted release with cards for active funding rounds
- can click into each card to view:
- Matching pool fund amount + sponsor logos
- current leaderboard (ranked by payout amount if grant round were to end)
- NEW PAGE TO HQ
- can click on each project from leaderboard to go to their Decent collection page (or wherever the project’s main page is)

Â
- Opt into grants on contract creation page (valid for Editions, Series + Rentable contracts):
- register in project registry & then apply — these are separate txns: expectation for contract is they’re first in the project registry
- each application to a round requires a separate txn — how we’re doing admin page where they’d have to confirm multiple txns potentially

Â
- withdraw grant proceeds:
- one tricky part is we have Splits enabled in our contracts; would ideally like to be able to split grant proceeds as well between accounts that are listed on the splits contract for the NFT

Back End:
- Deploying a new program
- Creating a perpetual round within the program: if we want to distribute matching funds monthly, do we need a new round each month?
- Would like as little manual setup / involvement as possible. Want grant recipients to be able to withdraw at the end of each month + sponsors refill the matching pools; cleanest to do as separate rounds though? What if recipient doesn’t withdraw right away?
- Should all submissions go live for a round at the same start date? What if someone opts into a round mid-month? Automatically included in the next month’s cycle?
- Submitting an application:
- Want this to just be a checkbox on a create contract page; requires no additional information or effort beyond deploying an NFT and opting into a certain round
- we can display what rounds are currently taking applications
Allo Roles:
- Program operators: just Decent
- Program: thinking just 1?
- Rounds: thinking divide by sponsor groups, each 1 month long
- Voter: minters / NFT collectors
Â
Voting Strategy:
- voting token = NFTs minted (lmk if this makes sense?)
- Gitcoin style quadratic voting; however, will interpret the NFT txn value as the “amount”
- voter address = collector address
- round address = round address
- project Id = NFT contract address (+ chainId)
Payout Strategy:
- is the round operator the only one that can initiate a payout? would ideally like this to be more like a
withdraw
function that calc’s amt’s each project ID owner can claim
- QF on distribution of funds to match voting strategy
Voter Qualification / Sybil Resistance:
- Do not particularly care whether it is real people or bots minting NFTs / voting but do recognize it could then be easy to game the sytem
- (doing more research / might not be possible but…) Acceptable sybil resistance for us = real users minting is always a higher EV strategy than spam wallets
Out of Scope
- Management dashboard
- Decent & sponsors don’t really need to know what’s going on or manage the funding rounds beyond what is described above
- ONLY thing that would be useful would be ability to delete projects from funding rounds if someone errantly uploads a contract or something
Â
4/7 - Notes:
- Start with 1 round at a time — just one anchor sponsor
- Round operator = just us to start
- eventually open up so anyone can create a round & those people can then be operators
- for the project registry:
- need to establish an address to which the grant should be paid out: can have this be the creator address or splits address (that’s good)
- opting in should happen on admin page to work better w. that flow
- acceptance:
- there’s a couple of periods in the round timeline that relies on the acceptance:
- there’s a voting period, acceptance period, then round contributions start // voting starts
- Zakk asking w. product team if we can just automatically add all NFTs that opt in to
- voting / payouts:
- right now QF is really just transferring DAI
- first DAI goes to voting strategy contract & then can withdraw from the voting strategy contract
- minting = calling “vote” (Zakk to spec this out a little more)
- mint to yourself
- sign txn: calls vote method on the round, which then calc’s the vote & the voting strategy
- instead of transferring that $ to the recipient we’ll send this money into the
- vote method on the voting strategy calls the mint method on the contract
- voting strat doesn’t receive funds from the matching pool — just calcs payouts
- payout strat can use what they do — just a matter of recording the events & calc-ing distribution
- you then pass distribution calcs as a merkle root to the voting strategy contract
- round holds matching pool; when round finishes, transfers fund from round to the voting strategy ⇒ protocol assumes matching pool funds start in the round contract & 2 you use a different voting strategy contract with each round
- voting strategy & round contracts are not recyclable — new one each time
- Eng Work:
- Will need to write voting strat contract (200 lines solidity)
- Frontend:
- opt into round & get into registry
- new tab on admin page
- approve for round
- update mint method if NFT is in round to call voting strat vs. mint method directly
- Management:
- rounds have application period & voting period (4 week application period + 4 week voting period so that there’s always a round applying to)
- can use some bot wallets to just deploy a new round every month (otherwise can just do manually)
- then have to integrate these new rounds into FE
Â
- for management, we’ll just use their Grant Stack manager dashboard
- will require custom voting strategy contract
- not too heavy of a lift
- will be fair amount of frontend
- launch this in mid-June
- can figure out firm launch date & strategy as it gets closer
- this timeline sounds good to them → block off middle-week of June as Decent x Allo launch week & can work backwards from there
- we’ll try to finish the brief & design work & OP grant ahead of time
- for next Friday:
- have first draft of feedback & finish the product spec
Â