PegKeeper V2 Upgrade: Add PKv2 USDC(25m), USDT(25m), pyUSD(15m), TUSD(10m)


PegKeeperV2 upgrade! Regulator is introduced for smarter control of PK ceilings. Adding following PegKeepers with corresponding crvUSD debt ceilings:

  • USDC(25M),
  • USDT(25M),
  • pyUSD(15M),
  • TUSD(10M).

Older PegKeepers ceilings are set to 0.


There is a DAO vote in progress to upgrade the crvUSD PegKeepers to refine the system architecture and be more resilient to spam attacks and depeg of any constituent pegkeeper asset. Curve has recently released PKv2 documentation where you can read further on the new design.


The old pegkeeper was vulnerable to several adverse scenarios, most critically to the risk that a pegkeeper asset depegs temporarily or permanently, causing unbacked crvUSD to enter circulation and potentially resulting in depeg. The new design mitigates this risk by preventing the pegkeeper from depositing crvUSD into circulation if the pool oracle price deviates from other pegkeeper pools. There is also a rate limit implemented that requires multiple pegkeepers to become active before any single pegkeeper can deposit up to its debt ceiling. There is also an emergency admin set to the Curve emergency DAO multisig that can pause pegkeepers if necessary. Together these additional precautions reduce crvUSD’s dependency on the stability of its pegkeeper assets.

Because of the reduced risk to crvUSD, the proposal here reintroduces TUSD as a pegkeeper asset. It also introduces pyUSD as a new pegkeeper asset, replacing USDP (also issued by Paxos). Both of these assets have been previously reviewed by Llama Risk:

pyUSD Pegkeeper Onboarding Review
TUSD Asset Risk Assessment


There is a DAO vote active for this upgrade. The vote first removes the 4 v1 pegkeepers from the monetary policy based on crvUSD aggregated prices (used to determine crvUSD interest rates) and sets their debt ceilings to 0.

Next, it adds the 4 v2 pegkeepers to the new PegKeeper Regulator:

Call via agent (0x40907540d8a6C65c637785e8f8B742ae6b0b9968):
├─ To: 0x36a04CAffc681fa179558B2Aaba30395CDdd855f
├─ Function: add_peg_keepers
└─ Inputs: [(‘address[]’, ‘_peg_keepers’, (‘0x5b49b9add1ecfe53e19cc2cfc8a33127cd6ba4c6’, ‘0xff78468340ee322ed63c432bf74d817742b392bf’, ‘0x68e31e1edd641b13caeab1ac1be661b19cc021ca’, ‘0x0b502e48e950095d93e8b739ad146c72b4f6c820’))]

It then adds the 4 new pegkeepers to each of the monetary policy contracts and sets their respective debt ceilings to:

  • USDC(25M),
  • USDT(25M),
  • pyUSD(15M),
  • TUSD(10M).

Finally, it sets the emergency admin to the Curve emergency DAO multisig, the same address used for certain emergency actions in Curve pools including kill gauge and some parameter controls. In this case, the multisig can globally pause or unpause pegkeepers deposit, withdrawal, or both (for all pegkeepers included in the PegKeeper Regulator).