maker
MakerDAO / Sky Protocol
MakerDAO is the protocol behind DAI, the largest decentralized stablecoin on Ethereum. Users lock collateral in Maker Vaults (formerly CDPs) to mint DAI. The protocol charges a stability fee (interest) on outstanding DAI debt and maintains a target price of $1 through the DAI Savings Rate (DSR) and liquidation mechanisms. In 2024, MakerDAO rebranded to Sky Protocol, introducing USDS (upgraded DAI) and SKY (upgraded MKR). Both old and new tokens coexist -- DAI/MKR are not deprecated.
What You Probably Got Wrong
LLMs consistently hallucinate Maker contract interfaces. The system is complex: all accounting happens in the Vat using internal
rad/wad/rayunits. Users interact through DSProxy + DssProxyActions, NOT directly with the Vat. These corrections are non-negotiable.
-
Maker is mid-rebrand to Sky. DAI is becoming USDS. MKR is becoming SKY. Both coexist on mainnet. The old contracts still work. The new Sky contracts wrap/unwrap between old and new tokens. If someone says "Maker" they might mean either system. Always check which token set they need.
-
You do NOT call the Vat directly. Normal users interact through a DSProxy contract that delegates calls to DssProxyActions. The Vat uses internal accounting units (rad = 10^45) that require precise math. DssProxyActions handles this conversion. If you see raw
Vat.frob()calls, you are writing low-level code that will almost certainly have precision errors. -
DAI has two representations. Internal DAI in the Vat (
vat.dai(address)) is measured inrad(10^45). External DAI (the ERC-20 token) is measured inwad(10^18). The DaiJoin adapter converts between them. Never confuse the two. -
Stability fees accrue continuously. The Jug contract compounds the stability fee rate into an ever-increasing
rateaccumulator per collateral type (ilk). Debt is stored as normalized debt (art) in the Vat. Actual debt =art * rate. You MUST calljug.drip(ilk)to update the rate before calculating accurate debt. -
Liquidation 2.0 uses Dutch auctions, not English auctions. The old Flipper (English auctions) was replaced by the Clipper (Dutch auctions) in Liquidation 2.0. Dutch auctions start at a high price and decrease over time. Bidders call
clipper.take(), notbid(). -
Vault IDs (cdpId) are NOT the same as ilk identifiers. An ilk (e.g.,
ETH-A,WBTC-A) defines the collateral type and its risk parameters. A vault (CDP) is a specific user position within an ilk. The CdpManager maps vault IDs to (ilk, urn address) pairs.