KVORUM
compoundSource: Compound governor bravo · #79

Migrate Contributor Streams to Sablier

canceledJan 9, 2022, 12:21 AM UTCby2B0x2b38…bf33

01Summary

AISummary by Kvorumclaude-haiku-4-5

This proposal migrates three contributors' indefinite Comp payment streams to Sablier with one-year linear vesting terms. The old payment mechanism is disabled, approximately 25,183 Comp is transferred to Sablier for streaming to three recipient addresses, and Arr00 receives 20 Comp as compensation for executing the migration.

Type
protocol addition

Key changes

  • Disable contributor Comp speed for three addresses (0x9B68c14e936104e9a7a24c712BEecdc220002984, 0xD20c9667bf0047F313228F9fE11F8b9F8Dc29bBa, 0x57C970568668087c05352456a3F59B58B0330066) via _setContributorCompSpeed to zero(high)
  • Approve Sablier contract to receive approximately 25,183 Comp tokens(high)
  • Create three Sablier streams with one-year linear vesting: recipient 0x9B68c14e receiving ~249,075 Comp, recipient 0xD20c9667bf0047F receiving ~10,696,624 Comp, and recipient 0x57C970568668087c05352456a3F59B58B0330066 receiving ~14,237,959 Comp(high)
  • Transfer 20 Comp to Arr00 (0x2B384212EDc04Ae8bB41738D05BA20E33277bf33) as compensation for proposal execution(low)

Notable concerns

  • Migration converts indefinite payment streams to fixed one-year terms, which may represent a material change to contributor compensation expectations
  • Stream start date of January 10, 2022 with varying end dates suggests different vesting periods across recipients
Contracts0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b0xc00e94cb662c3520282e6f5717214004a7f268880xCD18eAa163733Da39c232722cBC4E8940b1D8888
Generated by Kvorum
model: claude-haiku-4-5
provider: anthropic
profile: anthropic-fast-v1
prompt: v1.0
generated: 2mo ago
Read the description ↗

02Description

109 words

Migrate Contributor Streams to Sablier

This proposal transfers all existing contributor streaming payments, which are currently indefinite, over to Sablier for one year terms from the start date. The payments remain the same and are calculated assuming there are 6350 blocks per day.

On proposal execution, the full amount of Comp required to complete these payments will be transferred to the Sablier contract from Timelock and be linearly streamed to each recipient. If any of the payments are canceled, by the recipient or governance, the remaining Comp will be transferred back to Timelock.

The final interaction pays Arr00 20 Comp for carrying out this proposal.

Discussion Sablier Contract

03Mismatch analysis

AIMismatch analysis by Kvorumclaude-sonnet-5
Consistent

The description says existing indefinite contributor streams are being halted and replaced with one-year Sablier streams for the same three recipients, funded from Timelock, plus a 20 COMP payment to Arr00. The calldata matches this exactly: three _setContributorCompSpeed calls zero out the old streams for the same three addresses that receive the new createStream calls; the approve() amount (25,183.66 COMP) equals the exact sum of the three createStream amounts, confirming the funding math; and the final transfer() sends exactly 20 COMP to the Arr00 address. The three streams have differing absolute end dates despite a common start timestamp, which is consistent with the description's intent of 'one year from the start date' where each contributor's original stream start date differs, producing different funding windows counted from proposal execution. No numeric, target, or recipient mismatches were found, and no undisclosed significant actions (e.g., no unexpected transfers, role changes, or extra recipients) appear in the calldata. The 6350 blocks/day assumption and the cancellation-refund behavior are explanatory/methodological statements about Sablier's standard behavior and off-chain calculation, not separate on-chain actions, so their absence from calldata is expected and not a discrepancy. Overall the prose is an accurate, if summarized, description of the calldata.

Generated by Kvorum
model: claude-sonnet-5
provider: anthropic
profile: anthropic-strong-v1
prompt: v1.0
generated: 2mo ago
Review the decoded actions ↗

04Actions

8 total
#0_setContributorCompSpeed(address,uint256)chain 0x1
Target
0x3d98…cd3b
Value
0 wei
Function
_setContributorCompSpeed(address,uint256)
Arguments
{
  "0": "0x9B68c14e936104e9a7a24c712BEecdc220002984",
  "1": "0"
}
Calldata
#1_setContributorCompSpeed(address,uint256)chain 0x1
Target
0x3d98…cd3b
Value
0 wei
Function
_setContributorCompSpeed(address,uint256)
Arguments
{
  "0": "0xD20c9667bf0047F313228F9fE11F8b9F8Dc29bBa",
  "1": "0"
}
Calldata
#2_setContributorCompSpeed(address,uint256)chain 0x1
Target
0x3d98…cd3b
Value
0 wei
Function
_setContributorCompSpeed(address,uint256)
Arguments
{
  "0": "0x57C970568668087c05352456a3F59B58B0330066",
  "1": "0"
}
Calldata
#3approve(address,uint256)chain 0x1
Target
0xc00e…6888
Value
0 wei
Function
approve(address,uint256)
Arguments
{
  "0": "0xCD18eAa163733Da39c232722cBC4E8940b1D8888",
  "1": "25183659733551205192800"
}
Calldata
#4createStream(address,uint256,address,uint256,uint256)chain 0x1
Target
0xcd18…8888
Value
0 wei
Function
createStream(address,uint256,address,uint256,uint256)
Arguments
{
  "0": "0x9B68c14e936104e9a7a24c712BEecdc220002984",
  "1": "249075045833329227600",
  "2": "0xc00e94Cb662C3520282E6f5717214004A7f26888",
  "3": "1641920400",
  "4": "1657756800"
}
Calldata
#5createStream(address,uint256,address,uint256,uint256)chain 0x1
Target
0xcd18…8888
Value
0 wei
Function
createStream(address,uint256,address,uint256,uint256)
Arguments
{
  "0": "0xD20c9667bf0047F313228F9fE11F8b9F8Dc29bBa",
  "1": "10696624835912820075600",
  "2": "0xc00e94Cb662C3520282E6f5717214004A7f26888",
  "3": "1641920400",
  "4": "1664323200"
}
Calldata
#6createStream(address,uint256,address,uint256,uint256)chain 0x1
Target
0xcd18…8888
Value
0 wei
Function
createStream(address,uint256,address,uint256,uint256)
Arguments
{
  "0": "0x57C970568668087c05352456a3F59B58B0330066",
  "1": "14237959851805055889600",
  "2": "0xc00e94Cb662C3520282E6f5717214004A7f26888",
  "3": "1641920400",
  "4": "1671667200"
}
Calldata
#7transfer(address,uint256)chain 0x1
Target
0xc00e…6888
Value
0 wei
Function
transfer(address,uint256)
Arguments
{
  "0": "0x2B384212EDc04Ae8bB41738D05BA20E33277bf33",
  "1": "20000000000000000000"
}
Calldata

05Tally

Summed from votes

Voters7
VP participating433.6K
Outcome (current)For
Current support100%

06Voters

7 total
Filter:
VoterChoice% of totalRationale
EA0xea6c…3bf7For306K70.57%—5y ago
8D0x8d07…a265For70K16.15%—5y ago
450x458c…730eFor50K11.53%—5y ago
2B0x2b38…bf33For7.6K1.74%—5y ago
660x66cd…65f9For13.40.00%—5y ago
B70xb7d4…1cd5For0.80.00%—5y ago
FE0xfe97…8318For00.00%—5y ago
Showing 7

07Forum

AIForum synthesis by Kvorumclaude-haiku-4-5
sentiment · favorablethread · constructive

Arguments for

  • Sablier is an established DeFi protocol that enables time-based (timestamp) rather than block-number-based streams, which is more reliable for long-term compensation.— maxdesalle, TragedyStruck, paulrberg
  • Sablier streams are cancelable and repriceble by governance or recipients, providing more flexibility than current endless COMP streams that require governance proposals to end.— maxdesalle, arr00
  • Migrating to Sablier has no protocol fees, only gas costs, making it cost-effective compared to current streaming arrangements.— josuegomez
  • Using Sablier reflects Compound's engagement with contributors more accurately through defined term-based payments rather than perpetual streams.— pauljlei, getty

Arguments against

None surfaced.

Unresolved concerns

  • Uncertainty about how urgent the migration is given that Gauntlet's engagement only began approximately three months before the proposal.— pauljlei
  • Question of whether OpenZeppelin's pending work for Compound should be coordinated with this migration to avoid duplicative efforts.— TragedyStruck, arr00

Notable participants

  • maxdesalleProposal author who introduced the Sablier migration concept and TL;DR.
  • arr00Core implementer who generated the technical figures for stream creation, coordinated the proposal timeline, and moved it to voting.
  • paulrbergSablier representative who clarified the technical mechanism of timestamp-based streams.
  • gettyIndividual recipient of current streaming grant who clarified his personal compensation status and expressed support for exploring Sablier.
  • pauljleiGauntlet representative who acknowledged the proposal and signaled openness to migration.
  • TragedyStruckCommunity member who asked clarifying questions about Sablier's timestamp mechanism and OpenZeppelin coordination.
Generated by Kvorum
model: claude-haiku-4-5
provider: anthropic
profile: anthropic-fast-v1
prompt: v1.0
generated: 2mo ago
Open the thread ↗