Update and Standardize cToken Implementation
01Summary
Compound Labs proposes updating the base cToken implementation contract and deploying it across all seven upgradable cToken markets. The update modifies the seize function to allocate 2.8% of liquidations to reserves (reducing cascading liquidation risk), merges the delegate function into the base implementation, and standardizes five different implementation contracts into one. The proposal includes a 30 COMP bounty for community member pyggie's identified improvements. The patch underwent public development, scenario analysis, and secondary bug bounty review.
- Type
- contract upgrade
Key changes
- Modified seize function to transfer 2.8% of liquidations to cToken reserves, reducing cascading liquidation risk and improving protocol insolvency protection(high)
- Merged delegate function into base cToken implementation to standardize governance token delegation(medium)
- Unified all seven upgradable cTokens to use a single implementation contract instead of five different implementations, reducing technical debt and gas costs(medium)
- Incorporated community feedback from pyggie regarding cToken event logs and public interface improvements(low)
Notable concerns
- Standardizing implementation across multiple markets requires careful coordination to ensure no unintended state interactions
- Contract upgrade requires thorough testing given the scale of affected markets
Generated by Kvorum
02Description
Update and Standardize cToken Implementation
This proposal is a patch, developed by Compound Labs, which updates the base cToken implementation contract, and adopts it across all upgradable markets.
Changelog
The seize function has been modified to transfer 2.8% of a liquidation to cToken reserves, reducing the risk of cascading liquidations that could render the protocol insolvent. With each liquidation, the protocol’s ability to recover (or utilize reserves) increases.
Given the proliferation of COMP-like governance tokens, the delegate function has been merged into the base cToken implementation.
Adoption
The seven upgradable cTokens, deployed starting 18 months ago, currently rely on five different cToken implementation contracts, many of which lack the most modern features.
This proposal unifies all upgradable cTokens with a single implementation, which reduces the surface area of technical debt, and slightly reduces gas costs.
Development
This patch was developed publicly, coupled with completed scenario analysis. In addition to the Compound Labs bug bounty program, a secondary bug bounty was offered through Immunefi.
During the review period for Proposal 048, community member pyggie identified potential improvements to the cToken event logs and public interface; these have been included in this proposal, alongside a bounty of 30 COMP for their efforts.
03Mismatch analysis
}</br>INVALIDJSONPLACEHOLDER```cldiscLet me not break format.替换 -- 를 fix.,
Generated by Kvorum
04Actions
- Target
- 0x70e3…e8e4
- Value
- 0 wei
- Function
- _setImplementation(address,bool,bytes)
- Arguments
{ "0": "0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F", "1": true, "2": "0x" }- Calldata
- Target
- 0x5d3a…3643
- Value
- 0 wei
- Function
- _setImplementation(address,bool,bytes)
- Arguments
{ "0": "0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F", "1": true, "2": "0x" }- Calldata
- Target
- 0xface…b0c7
- Value
- 0 wei
- Function
- _setImplementation(address,bool,bytes)
- Arguments
{ "0": "0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F", "1": true, "2": "0x" }- Calldata
- Target
- 0x1239…ad86
- Value
- 0 wei
- Function
- _setImplementation(address,bool,bytes)
- Arguments
{ "0": "0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F", "1": true, "2": "0x" }- Calldata
- Target
- 0x35a1…d550
- Value
- 0 wei
- Function
- _setImplementation(address,bool,bytes)
- Arguments
{ "0": "0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F", "1": true, "2": "0x" }- Calldata
- Target
- 0xf650…dcc9
- Value
- 0 wei
- Function
- _setImplementation(address,bool,bytes)
- Arguments
{ "0": "0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F", "1": true, "2": "0x" }- Calldata
- Target
- 0xccf4…dd6a
- Value
- 0 wei
- Function
- _setImplementation(address,bool,bytes)
- Arguments
{ "0": "0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F", "1": true, "2": "0x" }- Calldata
- Target
- 0x3d98…cd3b
- Value
- 0 wei
- Function
- _grantComp(address,uint256)
- Arguments
{ "0": "0x91400bE76b7171Cf932Ae252390d2b60e2C73013", "1": "30000000000000000000" }- Calldata
05Tally
Summed from votes
06Voters
| Voter | Choice | % of total | Rationale | ||
|---|---|---|---|---|---|
| 9A0x9aa8…ccf1 | For | 345K | 0.00% | — | 5y ago |
| 660x6626…c35c | For | 126.1K | 0.00% | — | 5y ago |
| AC0xac57…faf6 | For | 105K | 0.00% | — | 5y ago |
| 810x8169…9806 | For | 101K | 0.00% | — | 5y ago |
| 540x54a3…e189 | For | 100.1K | 0.00% | — | 5y ago |
| 5B0x5bc9…d76c | For | 57.8K | 0.00% | — | 5y ago |
| 1D0x1d29…5d1f | For | 50K | 0.00% | — | 5y ago |
| 450x458c…730e | For | 50K | 0.00% | — | 5y ago |
| EF0xeff5…27e5 | For | 50K | 0.00% | — | 5y ago |
| 070x0703…961b | For | 50K | 0.00% | — | 5y ago |
| DAdakeshi.eth0xe3c9…6b21 | For | 14.8K | 0.00% | — | 5y ago |
| D60xd681…7d6e | For | 14K | 0.00% | — | 5y ago |
| 8D0x8d07…a265 | For | 12.5K | 0.00% | — | 5y ago |
| 9B0x9b68…2984 | For | 10K | 0.00% | — | 5y ago |
| 7F0x7f89…58c4 | For | 8K | 0.00% | — | 5y ago |
| MYmykel.eth0xa0dc…c432 | For | 7.9K | 0.00% | — | 5y ago |
| 2B0x2b38…bf33 | For | 7.7K | 0.00% | — | 5y ago |
| 580x582c…d468 | For | 6.6K | 0.00% | — | 5y ago |
| 520x5274…59d2 | For | 4.8K | 0.00% | — | 5y ago |
| B00xb032…449b | For | 4.5K | 0.00% | — | 5y ago |
| A50xa5dc…d648 | For | 3.3K | 0.00% | — | 5y ago |
| 7D0x7d96…6d34 | For | 289.9 | 0.00% | — | 5y ago |
| 840x84e3…5a95 | For | 102.8 | 0.00% | — | 5y ago |
| 7F0x7f84…4d0b | For | 99.4 | 0.00% | — | 5y ago |
| 030x03f0…7618 | For | 24 | 0.00% | — | 5y ago |
| 790x7905…8de4 | For | 6.3 | 0.00% | — | 5y ago |
| B10xb100…73fc | For | 2.8 | 0.00% | — | 5y ago |
| 870x879e…85b2 | For | 1.6 | 0.00% | — | 5y ago |
| 300x303e…8583 | For | 1 | 0.00% | — | 5y ago |
| 190x19b5…5188 | For | 0.8 | 0.00% | — | 5y ago |
| 450x4504…3424 | For | 0.5 | 0.00% | — | 5y ago |
| D40xd4ad…ed1c | For | 0.3 | 0.00% | — | 5y ago |
| 2D0x2d42…8ce0 | For | 0 | 0.00% | — | 5y ago |
| E20xe25d…2362 | For | 0 | 0.00% | — | 5y ago |
| E80xe838…b11d | Against | 0 | 0.00% | — | 5y ago |
| 730x73ba…1d46 | For | 0 | 0.00% | — | 5y ago |
| 240x24ed…c472 | For | 0 | 0.00% | — | 5y ago |
| 9D0x9d83…0414 | For | 0 | 0.00% | — | 5y ago |
07Forum
No forum thread is confidently linked to this proposal.