New implementations for Controller and AMM in crvUSD

Another batch of low-priority issues is fixed in AMM.vy and Controller.vy (pointed out by Chainsecurity and Mixbytes, as well as internally by @Macket). Biggest fixes are:

  • health_calculator() was not working properly (an external contract is currently used for it). Only affects convenience of integrators;
  • It is was still possible for governance to reset user’s LTV, although not by design, if combined with AMM manipulation. In this fix, even governance vote cannot change LTV unexpectedly for a user (only after user’s interaction with the AMM).

The fixes are contained from commit 9e3dfa9 till 6273e68.

Etherscan doesn’t support blueprints as of now, so verification can only be done by comparing raw bytecode with code of blueprints as produced by deployment script.

Deployed implementations:

  • Controller: 0x80333bd8791Fee04C4C3e1CA8a524CEfA7C94737
  • AMM: 0x7624C0DD4f5D06d650DDFF25fFEC45D032501260

How to verify

Since Etherscan doesn’t support blueprints, one has to use the deployment script to verify:

$ ape run scripts/ verify --network ethereum:mainnet:alchemy
Blueprints match the ones deployed on chain