PoolTogether Bankless DAO Pod

Title: PoolTogether Bankless DAO Pod

Read the original proposal in Discord

Working document here

Authors: VΞritas, Grendel

PoolTogetherDAO contacts: Mkkoll, Gio.eth

Date: 4th of August 2021

Summary

PoolTogetherDAO reached out to us with a proposal of a Bankless DAO Pod in a Pool of our choosing.

For those of you who are not familiar with PoolTogether, it’s an OG DeFi protocol that is basically a no-loss lottery. This is made possible by pooling lots of funds together that accrue interest over a certain time frame and then rewarding 1 or a few people with this accrued interest as the prize of the lottery. For more information about PoolTogether, check out their website or read through their documentation.

The proposed Pod is basically a group of individuals within the Pool that plays as 1, so the chance of winning the pool’s prize is increased, but you’ll have to share the rewards with the others in your Pod according to what percentage of the Pod is yours. It’s also more gas efficient to enter as an individual through a Pod: 3x more efficient as opposed to joining a Pool directly.

BACKGROUND

We were approached by PoolTogetherDAO that pitched this idea to us. It’s a great opportunity to collaborate with another DAO to build a product with minimal effort for the Bankless DAO that showcases our involvement in the DeFi space. It’s also a fun recurring thing every week where we have a chance to collectively win a prize!

MISSION & VALUES ALIGNMENT

PoolTogether has been around for a while and has been growing since its inception. Check out this excellent PoolTogether analytics dashboard from Dune Analytics for an in depth dive into PoolTogether V3 analytics. It’s a DeFi protocol that’s established itself as a great product and is easy enough to use for crypto beginners. Having our own Bankless DAO Pod would show to the outside world that we’re involved in the DeFi space and have some skin in the game. It’s a great entry for our own Bankless DAO members who are eager to learn and participate in a DeFi protocol. It would be cool to reference our own Pod inside a future course of OnBoard.

SPECIFICATION

There are a few steps necessary from our side to make this idea a reality.

  • We need to choose a pool to join: DAI or USDC, etc.
    • There are actually more options than just DAI and USDC, but PoolTogetherDAO advised us 1 of those 2 options, because the other Pools have tokens that are quite specific. Since everyone basically has some DAI or USDC lying around, compared to UNI for example, this is a great option. Besides, the Pool prizes are by far the largest inside the DAI or USDC Pool. Lastly, the $POOL token rewards are the biggest in these 2 Pools and since PoolTogether’s focus is mainly on those 2, the APR will be more stable long term than any of the other Pools.
    • USDC stats
      • USDC - prize range over last 5 weeks. $47k → $68k
      • Total deposits: ~102 Million USDC
      • Yield source: Compound
      • Number of weekly winners: 5
      • Drawn Mondays 19:00 UTC
      • Bigger prizes / less Pool APR 4.76% currently
    • DAI stats
      • DAI - Prize range over last 5 weeks. $20k → $25k
      • Total Deposits: ~33 million DAI
      • Yield source: Compound
      • Number of weekly winners: 5
      • Drawn on Fridays 19:00 UTC
      • Smaller prizes / more POOL APR 7.39% APR
  • A wallet address needs to be chosen for the role of basic admin for the pod
    • At pod creation, there is the concept of ‘PodManager’ address. This is an address that will be allowed to complete special transactions on the pod, such as distributing any NFT winnings. An NFT cannot be split to the whole Pod, so the PodManager must decide what to do with it.
    • This address can be a multisig wallet.
    • Since no direct finances are involved with this address (except for a few NFTs in case they’re part of a prize that we won), this document proposes a multisig of 2 or 3 champions of the project.
  • Someone or some entity needs to be responsible for the occurrence of the BATCH operation.
    • Whenever new users enter the Pod, they’re in a FLOAT state. That means that they’re not eligible for the prizes yet and they don’t increase the winning chances of the Pod either. A BATCH transaction is necessary for those entrants to actually join the Pod. Anyone can run the BATCH transaction, so that doesn’t need to be done by the admin wallet address, but someone or some entity should be responsible for making sure this action happens every once in a while.
    • We propose the same people that are managing the admin address should be responsible for this BATCH operation
  • We need a basic frontend to showcase our Pod stats, allow for an entry and the admin panel. It’s a fairly easy frontend to make. PoolTogetherDAO can help us with the web3 integrations. Check out an example of r/ethfinance here.
    • PoolTogetherDAO is actually working on a similar frontend with our logo and colors on it.
      • We’ll need a developer from us looking at the code as a review and host it where we want to host it.
      • We’ll need the design guild to look at the design and see if we can make any changes that are not too big so it fits with our branding.
  • We need a place to host this frontend. Probably our website will be the place where we want to host this.
  • And of course, people that want to join the Pool need to join the pool once it’s set up!
    • Each individual only has to do this once and no further action is required. A user can get the funds back at any time*.
        • There is an earlyExit fee of 1% that falls to 0% over the maxTimeLockDuration as set by the Pool contract. For DAI this is 14 days. For USDC this is 28 days. This is to prevent ‘gaming’ the PoolTogether prize by joining immediately before a drawing then exiting after. However, if there is enough funds in the Pods FLOAT to cover the withdrawal, then the withdrawal will be free with no penalty. This is because the withdrawal will come directly from the FLOAT first before attempting to withdraw back from the main Pool. Remember, the FLOAT is just the deposited funds in the Pod that has not yet been batched to the main Pool. The frontend UI could calculate and show you any exitFee before you initiate the withdrawal tx.

Resources that we’ll need to make this a reality:

  • Design review & possible changes to fit with our branding
  • Dev review on the code, web3 integrations, used contracts & put the code where we’re going to host it
  • Coordination between PoolTogetherDAO and us (Currently VΞritas & Grendel)

Pod Contract permissions

Permissions of the onlyOwner and onlyManager Pod commands
Below is a description of the Pod Contract calls that can only succeed as an Owner or Manager.

Owner is by default the address that creates the pod from the PodFactory contract.

Manager is by default specified the same address as the Owner unless specified at pod contract creation or at a later time. (I.e the manager address can be changed and handed over).

emergencyTokenApproveZero() - onlyOwner - zeroes the token allowance of a specified address.

setManager() - Owner - allows setting of a new Manager address

setTokenFaucet() - Owner - Set TokenFaucet reference (if prizepool faucet is updated) Would be called for example if the PoolTogether devs change the Prize APR from POOL to some other contract

setTokenDrop() - Owner - Setup TokenDrop reference

withdrawERC20() - Owner or Manager - Withdraw non-core (token/ticket/tokenDrop.asset) ERC20 to Pod manager. Withdraws an ERC20 token amount from the Pod to the PodManager for liquidation to the token and back to the Pod.

withdrawERC721() - Owner or Manager - Withdraw ER721 token to the Pod owner, which is responsible for deciding what/how to manage the collectible.

renounceOwnership() - Owner - Leaves the contract without owner. It will not be possible to call onlyOwner functions anymore. Can only be called by the current owner.

transferOwnership() - Owner - Transfers ownership of the contract to a new account (newOwner).

FINANCIAL IMPLICATIONS

Since this is probably quite a small effort from our side we might just want to cover the required resources from guild funding. I (VΞritas) am willing to do the coordination work I’m doing for this project for free. If design & dev resources turn out to be bigger than I expect right now, we’ll need to scope the required hours and request a little funding for those resources.

It should be noted that we’re all eligible for prizes as individuals when we’re joining the Pod and have higher chances of winning something because we’re grouping our funds together. Besides that, we’re receiving yield in the form of $POOL, which currently sits between 5% - 7% depending on the Pool. We receive the $POOL rewards regardless if we win or not. The $POOL rewards are in proportion to your investment compared to the total of the Pod. Each individual can claim their $POOL rewards, but only after the rewards have been claimed from the Pool to the Pod first. Anyone can claim from the Pool to the Pod, but it will cost extra gas fees for that person.

Example of how this looks to an individual when the $POOL rewards have been claimed from the Pool to the Pod.

BRAND USAGE

The proposal proposes to host this project on our own website as a showcasing project to signal to the outside world that we’re involved with DeFi protocols and make inter-DAO collaborations happen. It shows we’ve skin in the game and know our way around this space. It would be trivial to get the core PoolTogether team to uniquely name the Bankless DAO Pod to whatever name we want in the app.pooltogether Pools userlist, the same as ethfinance did. This would make discovery and ‘legitimization’ of our pod much greater. See the example of ethfinance below.

SUCCESS METRICS OR KPIS

  • Amount of people joining the Pod
  • Amount of capital in the Pod
  • Comparison to other Pods → Are we going to be the largest Pod?
    • Ethfinance is in the DAI Pod; there are currently no other Pods besides the official ones from PoolTogether. We’re still early!

NEXT STEPS

  • Vote for the proposal: Yes/No/Needs refinement
  • Choose a Pool to join: USDC or DAI
  • Reviews from design & dev on the made frontend for us by PoolTogetherDAO (after the previous 2 action items)

SQUAD BACKGROUND

VΞritas (Bankless DAO): Bankless member since early 2020. Part of the Bankless DAO since its inception. Mostly involved with the Education Guild and the OnBoard project. I’ve been a PoolTogether user since mid 2020, which was 1 of my first DeFi protocols that I’ve used. I’ve used the example of PoolTogether many times to explain to friends and family that don’t know anything about crypto what kind of possibilities there are in crypto besides Bitcoin & buying random coins.

Grendel (Bankless DAO): Very active contributor to the Bankless DAO. Involved in multiple Guilds (Translator’s, Ops, Marketing & BizDev) and part of the Grants Committee.

Mkkoll (PoolTogetherDAO): To give some background about myself, I’ve been involved with ETH since late 2018 as a casual observer and investor. This is my first foray into DAO participation and I’m loving it. This is the future of work! PoolTogether was the first Defi protocol I used where defi ‘clicked’ for me. Probably the best teachable moment I’ve had in all of crypto to understand the power of what we are building. I am a frequent poster of r/ethfinance and avid Daily Gwei and Bankless listener too.

Gio.eth (PoolTogetherDAO):

  • I am interested in a PoolTogether Bankless DAO Pod
  • I am NOT interested in a PoolTogether Bankless DAO Pod
  • I’m interested, but the proposal needs refinement (comment why)

0 voters

13 Likes

Love PT. This is a no-brainer. LFG

6 Likes

Love it. No funding requirements either so just DAO it.

Also wonder if it’s possible to incentivize the pod with BANK :thinking:

10 Likes

I love this. Only modification I would make is to keep it exclusive to DAO members and use MintGate to get access, similar to https://tldr.fwb.help/

8 Likes

This is an excellent idea. Im asking the PoolTogether core devs how you would set something like this up if you wanted and if its possible.
The Pod Contract already has the tokenFaucet() that points to the reward drop from the pools. Im wondering if its possible to set up multiple drips?

2 Likes

Nice feel free to loop me in if needed!

If that’s possible then that would certainly have my support! Great idea :+1:

If you guys are interested, user Sharingnotes at PoolTogetherDAO has mocked up UI for you already. This is currently connected to the official DAI pod and is an example only.

This is provided purely as an idea for what you could have as a front-end.

2 Likes

So after speaking to the PT guys, its clear that there isnt the possibility of building multiple drips into a single Pod. So you would have to set the tokenFaucet contract to either claim the regular POOL drop one (the one that provides the % APR as stated on on app.pooltogether site) or your own BANK one.

However, they did suggest the idea of using another protocol like Synthetix to create your own BANK yield farm based on the pToken that is generated by the pod contract. The process would go something like:

  1. Deposit into pod and receive pToken
  2. Deposit pToken into Bankless created Yield Farming contract
  3. Yield Farming contract earns all the POOL that is then swept by the BanklessDAO treasury
  4. Yield Farming contract drips BANK to the token holders as their deposit incentive.

Someone with some solidity experience could build on top of the synthetix contract. Include a sweep() function on the contract to allow it to claim its POOL rewards then send it to treasury.

This has the benefit of diversifying the BanklessDAO treasury with the POOL token directly and allows the BanklessDAO to become an active stakeholder in PT governance, if they wanted to. Or just sell the POOL token and rebuy the BANK that is streamed to Bank Pod holders.

Im admittedly biased here as im a POOL holder and active PoolTogetherDAO member, but i think this is a much more engaging use case of Pods for the Bankless community. The users get the benefit of receiving BANK, the native token for engaging in your community. The DAO gets the benefit of receiving a Governance stake in another high quality protocol.

8 Likes

I’ve been wanting to throw some coin into PT, this sounds like an easy painless way to do that with the homies.

Let’s make it happen!

2 Likes

I would be strongly in support of this.
earning BANK, pool for the DAO and participation in a pod for the weekly lotteries seems like a fantastic idea.
Supporting and becoming a stakeholder in the pooltogetherDAO as BanklessDAO seems like a no brainer and has good synergy.

is this proposal moving forward? I too was wanting to start participating in pt and am currently holding off as if this proposal goes ahead will prefer to do so as part of the bankless pod

4 Likes

+1 to this proposal. I am also in the group of people who’ve been interested in PT but haven’t jumped in yet. A Bankless DAO pool seems like a great way to get started.

3 Likes

Awesome idea, I’ll put a penny in the pot.

1 Like

Love this idea- earning BANK and participation in weekly lotteries through the DAO is a true westward journey . :blue_heart:

1 Like

Thanks for all your responses, ideas and votes!

A meeting is being planned to discuss next steps. An update on this proposal will be posted after that meeting.

5 Likes

That’s awesome, definitely love this.

1 Like

Strong support. Perfect first DeFi experience. I would love to have our PoolTogether pod be one of the first unlocks for a newly minted DAO member. Include a teaser and how-to in Bankless.Academy. Mmmm.

5 Likes

Update after our first next steps meeting!

  • A poll is live in #brainstorm to choose 1 of 2 Pools: DAI or USDC. Check the proposal to see the differences between the 2 and vote for your preference :slight_smile:.
  • Since PoolTogether V4 will launch at the end of September / beginning of October, we decided to wait with the actual launch of the Pod for when V4 comes out, because if we launch before on V3 it means that every individual has to withdraw from the V3 Pod and deposit again into the V4 Pod. In the meantime we will prepare the execution so we can move fast once V4 launches.
8 Likes

I was just thinking about this the other day. Glad to see someone put this forward. 1000% should do this. Is there any reason why we couldn’t have two pods, one in each? At least, at some point, not necessarily right away.

1 Like

Haven’t even thought of that too much to be honest, thanks for bringing up this possibility!

I’d say it could definitely be added in the future if there’s enough support for it. The disadvantage for splitting it up though, especially from the beginning, is that we’re splitting up our Pod and decrease the chances of winning in both of them. Also, if 1 Pod is significantly more popular than the other within the BanklessDAO community, the less popular 1 doesn’t really get the benefits of having a Pod, leading to a bad UX for participants in that Pod.

So, in my opinion this would only be a viable option if the first Pod (whichever 1 we choose) attracts enough funds and splitting up these funds would still make sense + a balanced interest in both Pools exists.

2 Likes