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.
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?
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.
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.
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
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.