Migrate GFX Labs and Gauntlet COMP streams over to Sablier

TL;DR

Replace the current COMP streams which GFX Labs and Gauntlet are recipients of with Sablier streams.

Here is an introduction to Sablier, and the reasons its adoption within Compound matters.

Proposal

Compound’s current token-vesting solution essentially relies on an endless COMP stream which can only be ended by a Compound governance proposal. The streaming solution itself is largely undocumented (Sablier docs). Additionally, the current COMP streams are based on block number rather than timestamp. This isn’t ideal as block numbers tend to deviate from timestamps in the long run. Sablier enables term based payment streams that pay linearly with time and are cancelable before the end of term by payee or payer.

We propose to end the current streams GFX Labs and Gauntlet are receiving, and create new streams in Sablier to replace them at the same stream rate. The end date for those streams would be 1 year from the start date.

8 Likes

Thanks for this. I’ll throw some newbie comments/questions in as someone following this with half an eye.

  • Overall I like this because I think Sablier is a well established DeFi lego, and I hope that Compound can draw from the strengths of other protocols to a larger degree, to better focus and excel at what Compound does.

  • How does Sablier actually achieve using timestamps? Some sort of oracle solution?

  • Slightly off-topic, but has Open Zeppelin started their work for Compound so that this (if done promptly) will be included?

2 Likes

Small point of clarification:

GFX Labs is not receiving compensation from the protocol. The existing streaming grant is to me. That said, I have a proposal that will go up in January for GFX Labs to step up it’s involvement in the protocol and receive compensation for those efforts. That will also include ending my streaming grant.

Back on topic, I think using Sablier is worth exploring. I’ve been thinking through a few different compensation methods, and I think Sablier could be helpful.

4 Likes

We’re simply using block.timestamp to track time. This is a more reliable method than block numbers, which are hard to predict accurately.

As explained in this StackExchange Q&A, block.timestamp is safe to use if the time-dependent event can vary by a short amount of time.

5 Likes

Strongly supportive of this proposal. Agree that we should also include OpenZeppelin on this migration.

3 Likes

Thanks for bringing this forward, @maxdesalle . At Gauntlet we welcome the community feedback and look forward to working together. We agree that Sablier can potentially reflect Compound’s engagement with Gauntlet more accurately than the existing COMP streams. Not sure how time sensitive this is given that Gauntlet began its engagement just ~3 months ago, but we look forward to finding solutions together here.

2 Likes

There are no fees associated with Sablier, so it is definitely worth it to stream. Pay only the gas fees and stream worldwide 24/7/365 ahead of time.

1 Like

I’m working on generating the numbers for creating the Sablier streams and will post them here later this week. Planning to propose next Monday.

2 Likes

Below are the figures that will be used to migrate existing contributor comp streams to Sablier streams. The calculations used to derive the numbers are shown briefly. Sablier requires 4 inputs to create a new stream: toAddress, start time, end time, and total amount. The total amount must be divisible by the duration—this requirement is satisfied in the rounding step where the total_comp number is rounded to the nearest valid input.

Please review the below information and comment if anything seems to be wrong or confusing.

Getty

start date 7/13/21. End date 7/13/22 + 1 at 12am gmt (1641920400 - 1657756800)
COMP_PER_DAY: 1.3589
Address: 0x9b68c14e936104e9a7a24c712beecdc220002984
Total Comp: 249075045833329227600

Duration: 15836400
183.291666666666667 days * COMP_PER_DAY = 249.075045833333334
Rounded: 249.075045833329227600 COMP
Comp Per Second: 15836400

Gauntlet

start date 9/27/21. End date 9/27/22 + 1 at 12am gmt (1641920400 - 1664323200)
COMP_PER_DAY: 41.2532534247
Address: 0xd20c9667bf0047f313228f9fe11f8b9f8dc29bba
Total comp: 10696624835912820075600

Duration: 22402800
259.291666666666667 days * COMP_PER_DAY = 10696.624835912837514 COMP
Rounded: 10696.624835912820075600 COMP
Comp Per Second: 477468210934027

OZ

start date 12/21/21. End date 12/21/22 + 1 at 12am gmt (1641920400 - 1671667200)
COMP_PER_DAY: 41.3543551305
Address: 0x57c970568668087c05352456a3f59b58b0330066
Total Comp: 14237959851805055889600

Duration: 29746800
344.291666666666667 days * COMP_PER_DAY = 14237.959851805062514 COMP
Rounded: 14237.959851805055889600 COMP
Comp Per Second: 478638369565972

3 Likes

This is now live in proposal 79. Go vote!

Note:
Something to reiterate on the topic. Streams on sablier can be canceled at any point by governance or the recipient. If a stream needs to be repriced, it can be canceled and restarted.

1 Like