[Proposal] Votes4LPs - give all Ocean tokens a vote!

  • Name of project: Votes4LPs - give all Ocean tokens a vote!
  • Team Website (if applicable): -
  • Proposal Wallet Address: ty(*mandatory; must have minimum 500 OCEAN already in wallet to be eligible. This wallet is where you will receive the grant amount if selected).
  • The proposal in one sentence: Extending the Ocean Protocol Snapshot stragies to cover more liquidity pools.
  • Which category best describes your project? Pick one or more.
    • [x] Build / improve applications or integrations to Ocean
    • [ ] Outreach / community (grants don’t need to be technical in nature)
    • [ ] Unleash data
    • [ ] Build / improve core Ocean software

Project Overview

Description of the project:

So far $OCEAN token liquidity providers did not have the chance to vote on OceanDAO proposals as the current Snapshot strategy used by Ocean Protocol is only “erc20-balance-of” - check the OceanDAO Snapshot space here.
I created a new strategy that makes it possible for liquidity providers on the Ocean marketplace to vote for OceanDAO proposals - pull request for the space here, pull request for the strategy here.
I also started a discussion on OceanDAO’s Discord how to handle datatoken holders:

Hey @here - I am at the crossroads with adding the ability to vote for OceanDAO proposals with $OCEAN tokens that are staked on Ocean marketplace and I want to hear your opinions so I can make a more democratic decision as well as hear your arguments.

So at the moment I am attributing votes to liquidity providers in a pool after this formula:
user_votes = user_pool_shares * (pool_ocean_reserve / pool_total_shares)

That gives all the voting power of a dataset to the liquidity providers. This is very straight forward and works already perfectly.

BUT, and this is where I am asking for help, this does not take into account that people can buy datatokens out of the liquidity pool and hold them without providing liquidity. They are then adding more $OCEAN to the pool as they take out the datatokens.

So the first question is - should the datatoken holders also get votes for holding the datatokens? (If you think yes, they should then vote for :a: to this post, if not then vote for :b:)

If they should get votes then there are two routes that can be taken.

The first one is to treat the liquidity providers as more important and thus treating the pure datatoken holders votes as if they would be adding liquidity to the pool and then calculating their shares by the amount of pool shares they would get - vote for this alternative via :regional_indicator_c: .

The formula is then:
user_votes = (user_pool_shares + (pool_ratio_liquidity_factor * user_datatokens)) * (pool_ocean_reserve / pool_total_shares)

The pool_ratio_liquidity_factor depends on the pool. The pool ratio (10:90,70:30, etc.) is important here and the amount of datatokens the user holds, as adding liquidity is not a linear function.

Other alternative is to treat the pure datatoken holders as first class citizens and then distributing is depending only on the number of datatokens. Vote for this alternative via :regional_indicator_d: .
The formula is then:
user_votes = user_datatokens * (pool_ocean_reserve/datatoken_max_supply)

Next to implementing the result of this vote I want to add more liquidity pools to a strategy that will enable these Ocean token holders to also vote for OceanDAO proposals.
The first step is to see which pools contain the most Ocean tokens (Bancor, Uniswap, Balancer, etc.) and then check for subgraphs that contain that information. If necessary I will host additional subgraphs to make it possible that the Snapshot strategy can interact with this information.

In the future additional liquidity pools will be added e.g. Ocean on Matic, Ocean on Polkadot/Kusama, OceanO.

I also see a strong posibility to create an Ocean token tracking dashboard out of this information as these strategies create a strong information graph where tokens are stored. This is a request opened by Manan here.

What problem is your project solving?

Giving a vote to $OCEAN token owners who are providing liquidity with their tokens.

What is the final product (e.g. App, URL, Medium, etc)?

Open source project on GitHub as a repository - the current strategy is hosted here:

How does this project drive value to the Ocean ecosystem? This is best expressed as Expected ROI, details here.

Token holders currently: 27,000
Token holders that have staked their tokens: 10%
Avg. holding per holder: 22.5K Ocean (613 Mio / 27K holders)
Assumed amount of staked tokens: 22.5k * 2,700 = 60 Mio Ocean
This means that there are potentially 60 Mio new votes incoming to the OceanDAO votings.
This participation will increase interest in the Ocean token so 1% more token holders will be created.

Buy of Oceans = 27,000 * 1% * 22.5K = 6.07 Mio Ocean
Expected impact of extra 6.07 Mio buy for Ocean on USD price : +8% (for reference, a sell of 300K USD would induce +50% slippage on Uniswap)
Expected impact on Ocean network total value: 28.96 Mio USD (8% on 362 Mio USD)
Likelihood of sucess: 80%
Bang = 80% * 28.96 Mio = 23.168 Mio USD
Bucks = 10K Ocean = 0.0084 Mio USD
ROI = 23.168 / 0.0084 = 2’758
Note that the long term community impact will be much bigger, and it was not included in this ROI calcluation.

Project Deliverables - Category

IF: Build / improve applications or integration to Ocean, then:

  • Software will be open-source with a permissive license at: GitHub - w1kke/snapshot.js. This will then be merged to the Snapshot repository via a pull request. The Ocean Protocol Snapshot Space will be updated with the new strategy and Alex N. will push this upstream.

Project Deliverables - Roadmap

  • Any prior work completed thus far? The Snapshot strategy for the Ocean marketplace was already implemented and a pull request was made with Snapshot as well as for the Snapshot Space of Ocean Protocol
  • What is the project roadmap? That is: what are key milestones, and the target date for each milestone.
  • Determine the important pools by their size (Uniswap, Balancer, Bancor, Sushiswap, C.R.E.A.M, etc.) the pools will then be added until the end of March
  • Determination of subgraphs for these pools and if necessary creation and hosting of new subgraphs
  • Creation of a strategy that can dynamically evaluate the pools
  • Merge of the strategy with Snapshot before the next voting round
  • Update Ocean’s Snapshot space to incorporate the strategy
  • Please include the milestone: publish an article/tutorial explaining your project as part of the grant (eg medium, etc).
  • Please include the team’s future plans and intentions.
    • Any maintenance? Yes
    • Foreseen or possible additions? More liquidity pools will be added later e.g. OceanO

Project Details

If the project includes software:

  • Are there any mockups or designs to date?
  • An overview of the technology stack?
    TypeScript

Team members

For each team member, give their name, role and background such as the following.

Robin Lehmann

  • Role: developer

Additional Information

Any additional information, custom fields, or images you would like to add? For example: Any grants or fundraising to date?

1 Like

Please excuse the delays, here is an updated roadmap:
Bancor - voting possible in June
Balancer - voting possible in July
Uniswap - voting possible in August

That’s great news! A question: Why are they coming each one month apart?
Is it just because that’s the order you’ll implement it or are there other reasons too?

To give an updated roadmap to the OceanDAO team and because that is the order I prioritised them according to the number of tokens staked in them.

1 Like

@Robin (DataUnion.app)#5649 just following up on my tasks, and since you brought up Snapshot strategies in Town Hall, I thought I’d follow up ASAP so we can maybe organize that.
In particular I’m referring to unlocking more token OCEAN holders/stakers, across different dexs/etc.

I believe our insights were mostly in aggregate (no # wallets vs. balance vs. total aggregate) and Bancor was the next big one.
Would like for us to forward movement on Snapshot strategies before Round 6, so we can signal to those communities. :beers:

Not sure which other teams/engineers might want to take on this conversation with Robin as well, but thought I’d follow up in here.

Screenshot from 2021-05-05 14-30-21

1 Like

What’s the status here? Sorry if I might have missed any updates…

The status is that my report is pending but that I will not invest anymore work into this - the hours consumed by far exceed the grant given for any reasonable hourly rate. But I want to hand over the state where I stopped to the next interested party that wants to make a proposal for this.

Uniswap V2 strategy for snapshot pages:

  1. Go to https://snapshot.org/#/yourproject.eth/settings (replace with your name)
  2. Add a new strategy called “uniswap” with the following JSON
{
  "symbol": "OCEAN",
  "address": "0x967da4048cD07aB37855c090aAF366e4ce1b9F48",
  "decimals": 18
}

Proof that it works:

uniswap v3 snapshot strategy:

Once it gets merged into master, it should be configured as strategy “uniswap-v3”:

pool1: https://etherscan.io/address/0x283e2e83b7f3e297c4b7c02114ab0196b001a109

{
  "poolAddress": "0x283E2E83b7f3e297C4B7c02114Ab0196B001a109",
  "tokenReserve": 0
}

pool2: https://etherscan.io/address/0xa75ede894aa5e767674dd8043109b90ad4637b6f
(only has little liquidity)

{
  "poolAddress": "0xa75ede894aa5e767674dd8043109b90ad4637b6f",
  "tokenReserve": 0
}

to get an overview of the uniswap v3 OCEAN pools, go here https://thegraph.com/explorer/subgraph?id=0x9bde7bf4d5b13ef94373ced7c8ee0be59735a298-2&view=Playground and enter this query

{
  pools(where:{ token0: "0x967da4048cd07ab37855c090aaf366e4ce1b9f48"}) {
    id,
    liquidity
  }
}

Thank you very much for your help @TimDaub - very much appreciated!

[Deliverable Checklist]
[x] Voting for the Ocean marketplace
[ ] Other voting

I will refund 100% of this proposal as I was not able to finish it to the communities satisfaction. I am very sorry for this. Any work that was completed is a gift to the community

PR was merged and deployed last night. So this should now be usable.

Bancor V2 strategy:

To set up,

  1. pick the contract-call strategy of snapshot
  2. Take the params part of examples.json and fill it in as the options of the contract-call strategy.

If you wanna know how this works and some docs, see this GitHub issue.

@TimDaub I have a task to get all of this done.

I’m going to update the total vote strategy and deploy a test so we can validate it’s all working.

I still need to read all the replies here, but… it would be great if we have people ready to vote across all networks and strategies, so we can validate they are all working during the final test.

I’ll provide an update soon.

Great work! Cheers!

1 Like

I can vote Uniswap V2 with 3 OCEAN and I have a contact I can forward that has stake in Bancor V2. DM on Discord pls.