Skip to content

Latest commit

 

History

History
131 lines (131 loc) · 8.09 KB

collateral-onboarding-checklist.md

File metadata and controls

131 lines (131 loc) · 8.09 KB

Collateral Onboarding Checklist

  • Deployed Contracts
    • PIP (Oracle)
      • deployed via deployer (OSM)
        • contract is verified on etherscan
          • ensure solc version matches source
          • ensure optimization matches source
          • ensure license AGPLv3 is specified
          • ensure source matches github code (i.e. diffcheck via vscode code --diff etherscan.sol github.sol)
        • constructor args are correct
          • src (medianizer)
        • check wards
          • MCD_PAUSE_PROXY is relied
          • deployer is denied
          • no other address has been relied
      • deployed via Factory (LPs)
    • Join (Join Adapter)
      • deployed via JoinFab
        • Fab matches chainlog
        • newGemJoin (Standard ERC-20 Join Adapter)
        • newGemJoin5 (Custom Adapter for Tokens with lower precision than 18)
        • AuthGemJoin (Custom Adapter for Tokens that needs authed join access)
        • parameters are correct
          • owner matches MCD Pause Proxy
          • ilk is the bytes32 representation of "TOKEN-A"
            • seth --to-ascii <bytes32> matches ASCII Ilk
            • seth --to-bytes32 $(seth --from-ascii "TOKEN-A") matches bytes32
          • gem matches token contract
    • Clip
      • deployed via ClipFab
        • Fab matches chainlog
        • newClip parameters are correct
          • owner matches MCD Pause Proxy
          • vat matches chainlog
          • spotter matches chainlog
          • dog matches chainlog
          • ilk is the bytes32 representation of "TOKEN-A"
            • seth --to-ascii <bytes32> matches ASCII Ilk
            • seth --to-bytes32 $(seth --from-ascii "TOKEN-A") matches bytes32
    • Calc
      • deployed via CalcFab
        • Fab matches chainlog
        • newStairstepExponentialDecrease
        • newLinearDecrease
        • newExponentialDecrease
        • parameters are correct
          • owner matches MCD Pause Proxy
    • Risk Parameters
    • Autoline (setIlkAutoLineParameters)
      • ilk
      • line
      • gap
      • ttl
    • Onboarding Actions
      • ensure ABIEncoderV2 is enabled
        • pragma experimental ABIEncoderV2;
      • ensure DssExecLib.addNewCollateral is used (in onboardCollaterals, DssSpellCollateral.sol)
      • ensure CollateralOpts is used
        • ilk follows the ilk format TOKEN-A
        • gem matches token address
        • join matches token join address
        • clip matches token clip address
        • calc matches token calc address
        • pip matches token pip address
        • isLiquidatable set to true if liquidations are on
        • isOSM set to true IF pip is OSM
        • whitelistOSM set to true IF median is src in OSM
        • ilkDebtCeiling (vat.ilk.line) in DAI (e.g. 1 * MILLION)
          • IF autoline is enabled, vat.ilk.line should be set to DC-IAM gap value
        • minVaultAmount (vat.ilk.dust) in DAI (e.g. 15_000)
          • ensure clip.tip is adjusted proportionally to vat.ilk.dust (e.g. lower the dust lower the tip)
        • maxLiquidationAmount (dog.ilk.hole) in DAI (e.g. 5 * MILLION)
          • ensure dog.ilk.hole >= ilk.dust invariant holds
        • liquidationPenalty (dog.ilk.chop) in basis points (e.g. 13% = 13_00)
        • ilkStabilityFee (jug.ilk.duty) set via script or IPFS rates table (e.g. 1000000000031693947650284507)
        • startingPriceFactor (clip.buf) in basis points (e.g. 110% = 110_00)
        • breakerTolerance (clipperMom.clip.tolerance) in basis points (e.g. 50% = 50_00)
        • auctionDuration (clip.tail) in seconds (e.g. 220 minutes)
        • permittedDrop (clip.cusp) in basis points (e.g. 45% = 45_00)
        • liquidationRatio (spotter.ilk.mat) in basis points (e.g. 170% = 170_00)
        • kprFlatReward (clip.tip) in DAI (e.g. 250)
        • kprPctReward (clip.chip) in basis points (e.g. 0.1% = 10)
      • set Calc parameters
        • LinearDecrease
          • calc.tau in seconds (e.g. 250 days = 21_600_000)
        • StairstepExponentialDecrease
          • calc.cut in seconds (e.g. 120 seconds)
          • calc.step in basis points (e.g. 99% = 99_00)
      • set Ilk Autoline Parameters (IF Autoline is enabled)
        • ilk follows the ilk format TOKEN-A
        • linein DAI (e.g. 10 * MILLION)
        • gap in DAI (e.g. 1 * MILLION)
        • ttl in seconds (e.g. 8 hours)
    • New Chainlog Entries
      • TOKEN
      • PIP_TOKEN
      • MCD_JOIN_TOKEN_A
      • MCD_CLIP_TOKEN_A
      • MCD_CLIP_CALC_TOKEN_A
    • Chainlog Bump
      • Patch x.x.1
    • Test Coverage (Follow Previous Test Patterns)
      • testCollateralIntegrations
      • testNewChainlogValues
      • testNewIlkRegistryValues
      • ensure new chainlog entries are included in addresses_<mainnet, goerli>.sol
      • ensure deployer addresses are included into addresses_deployers.sol (to keep up to date)
      • config.sol