From e15262e30725b000f2347c8e8de2e813a54ac995 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 25 Apr 2025 10:34:08 -0300 Subject: [PATCH 01/61] chore: update dependencies --- lib/dss-interfaces | 2 +- lib/forge-std | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/dss-interfaces b/lib/dss-interfaces index 9bfd7af..eb63423 160000 --- a/lib/dss-interfaces +++ b/lib/dss-interfaces @@ -1 +1 @@ -Subproject commit 9bfd7afadd1f8c217ef05850b2555691786286cb +Subproject commit eb63423fb1f777a8d2887919504b3dd0102f1aa4 diff --git a/lib/forge-std b/lib/forge-std index 0aa99eb..9530d9e 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 0aa99eb8456693c015350c5e6c4f442ebe912f77 +Subproject commit 9530d9ec702df1b27b7f8f50c0a63a11b1b5fba9 From 2673fadac32c830e26df84d59647804de2e79e96 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 25 Apr 2025 10:40:28 -0300 Subject: [PATCH 02/61] refactor: remove custom test script in favor of `forge test` --- .github/workflows/tests.yaml | 44 ++++++-- Makefile | 1 - foundry.toml | 16 +++ src/test/DssAction.t.sol | 183 ++++++++++++++++++++------------- src/test/DssExec.t.sol | 189 +++++++++++++++++++---------------- test.sh | 13 --- 6 files changed, 265 insertions(+), 181 deletions(-) create mode 100644 foundry.toml delete mode 100755 test.sh diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index bed4aa8..b9b2d31 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -1,20 +1,46 @@ -on: [push, pull_request] +name: CI + +on: + push: + pull_request: + workflow_dispatch: + +env: + FOUNDRY_PROFILE: ci + ETH_RPC_URL: ${{ secrets.ETH_RPC_URL }} jobs: - tests: + check: + strategy: + fail-fast: true + + name: Foundry project runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + with: + submodules: recursive - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - name: Install Dependencies - run: forge install + - name: Show Forge version + run: | + forge --version + + - name: Run Forge fmt check + run: | + forge fmt --check + id: fmt + + - name: Run Forge build + run: | + forge build --sizes + id: build - - name: Run tests - run: make test + - name: Run Forge tests + run: | + forge test -vvv + id: test env: ETH_RPC_URL: ${{ secrets.ETH_RPC_URL }} diff --git a/Makefile b/Makefile index 4ac7cc4..7142d95 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,4 @@ build :; DAPP_BUILD_OPTIMIZE=1 DAPP_BUILD_OPTIMIZE_RUNS=200 dapp --use solc:0.8.16 build clean :; forge clean -test :; ./test.sh $(match) deploy :; make build && dapp create DssExecLib flatten :; hevm flatten --source-file "src/DssExecLib.sol" > out/DssExecLib-flat.sol diff --git a/foundry.toml b/foundry.toml new file mode 100644 index 0000000..0e794bc --- /dev/null +++ b/foundry.toml @@ -0,0 +1,16 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] +solc = "0.8.16" +optimizer = true +optimizer_runs = 200 +no_match_coverage = "(script|test|mocks)" +fs_permissions = [ + { access = "read", path = "./out/" }, + { access = "read", path = "./script/input/" }, + { access = "read-write", path = "./script/output/" } +] + +[rpc_endpoints] +mainnet = "${ETH_RPC_URL}" diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 5c367e1..2fbbb0c 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -72,37 +72,36 @@ interface D3MLike { contract ActionTest is Test { ChainlogLike LOG = ChainlogLike(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); - VatAbstract immutable vat = VatAbstract(LOG.getAddress("MCD_VAT")); - EndAbstract immutable end = EndAbstract(LOG.getAddress("MCD_END")); - VowAbstract immutable vow = VowAbstract(LOG.getAddress("MCD_VOW")); - PotAbstract immutable pot = PotAbstract(LOG.getAddress("MCD_POT")); - JugAbstract immutable jug = JugAbstract(LOG.getAddress("MCD_JUG")); - DogAbstract immutable dog = DogAbstract(LOG.getAddress("MCD_DOG")); - CatAbstract immutable cat = CatAbstract(LOG.getAddress("MCD_CAT")); - DaiAbstract immutable daiToken = DaiAbstract(LOG.getAddress("MCD_DAI")); - DaiJoinAbstract immutable daiJoin = DaiJoinAbstract(LOG.getAddress("MCD_JOIN_DAI")); - SpotAbstract immutable spot = SpotAbstract(LOG.getAddress("MCD_SPOT")); - FlapAbstract immutable flap = FlapAbstract(LOG.getAddress("MCD_FLAP")); - FlopAbstract immutable flop = FlopAbstract(LOG.getAddress("MCD_FLOP")); - DSTokenAbstract immutable gov = DSTokenAbstract(LOG.getAddress("MCD_GOV")); - IlkRegistryAbstract immutable reg = IlkRegistryAbstract(LOG.getAddress("ILK_REGISTRY")); - OsmMomAbstract immutable osmMom = OsmMomAbstract(LOG.getAddress("OSM_MOM")); - ClipperMomAbstract immutable clipperMom = ClipperMomAbstract(LOG.getAddress("CLIPPER_MOM")); - MkrAuthorityAbstract immutable govGuard = MkrAuthorityAbstract(LOG.getAddress("GOV_GUARD")); - DssAutoLineAbstract immutable autoLine = DssAutoLineAbstract(LOG.getAddress("MCD_IAM_AUTO_LINE")); - LerpFactoryAbstract immutable lerpFab = LerpFactoryAbstract(LOG.getAddress("LERP_FAB")); - RwaLiquidationOracleLike immutable rwaOracle = RwaLiquidationOracleLike(LOG.getAddress("MIP21_LIQUIDATION_ORACLE")); - - MedianAbstract immutable median = MedianAbstract(address(new MockMedian())); + VatAbstract vat; + EndAbstract end; + VowAbstract vow; + PotAbstract pot; + JugAbstract jug; + DogAbstract dog; + DaiAbstract daiToken; + DaiJoinAbstract daiJoin; + SpotAbstract spot; + FlapAbstract flap; + FlopAbstract flop; + DSTokenAbstract gov; + IlkRegistryAbstract reg; + OsmMomAbstract osmMom; + ClipperMomAbstract clipperMom; + MkrAuthorityAbstract govGuard; + DssAutoLineAbstract autoLine; + LerpFactoryAbstract lerpFab; + RwaLiquidationOracleLike rwaOracle; + + MedianAbstract median; DssTestAction action; struct Ilk { DSValueAbstract pip; - OsmAbstract osm; + OsmAbstract osm; DSTokenAbstract gem; GemJoinAbstract join; - ClipAbstract clip; + ClipAbstract clip; } mapping (bytes32 => Ilk) ilks; @@ -118,6 +117,92 @@ contract ActionTest is Test { address constant UNIV2ORACLE_FAB = 0xc968B955BCA6c2a3c828d699cCaCbFDC02402D89; + function setUp() public { + vm.createSelectFork("mainnet"); + + vat = VatAbstract( LOG.getAddress("MCD_VAT")); + end = EndAbstract( LOG.getAddress("MCD_END")); + vow = VowAbstract( LOG.getAddress("MCD_VOW")); + pot = PotAbstract( LOG.getAddress("MCD_POT")); + jug = JugAbstract( LOG.getAddress("MCD_JUG")); + dog = DogAbstract( LOG.getAddress("MCD_DOG")); + daiToken = DaiAbstract( LOG.getAddress("MCD_DAI")); + daiJoin = DaiJoinAbstract( LOG.getAddress("MCD_JOIN_DAI")); + spot = SpotAbstract( LOG.getAddress("MCD_SPOT")); + flap = FlapAbstract( LOG.getAddress("MCD_FLAP")); + flop = FlopAbstract( LOG.getAddress("MCD_FLOP")); + gov = DSTokenAbstract( LOG.getAddress("MCD_GOV")); + reg = IlkRegistryAbstract( LOG.getAddress("ILK_REGISTRY")); + osmMom = OsmMomAbstract( LOG.getAddress("OSM_MOM")); + clipperMom = ClipperMomAbstract( LOG.getAddress("CLIPPER_MOM")); + govGuard = MkrAuthorityAbstract( LOG.getAddress("GOV_GUARD")); + autoLine = DssAutoLineAbstract( LOG.getAddress("MCD_IAM_AUTO_LINE")); + lerpFab = LerpFactoryAbstract( LOG.getAddress("LERP_FAB")); + rwaOracle = RwaLiquidationOracleLike(LOG.getAddress("MIP21_LIQUIDATION_ORACLE")); + median = MedianAbstract(address(new MockMedian())); + + vm.label(address(vat), "VAT"); + vm.label(address(end), "END"); + vm.label(address(vow), "VOW"); + vm.label(address(pot), "POT"); + vm.label(address(jug), "JUG"); + vm.label(address(dog), "DOG"); + vm.label(address(daiToken), "DAI"); + vm.label(address(daiJoin), "DAI_JOIN"); + vm.label(address(spot), "SPOT"); + vm.label(address(flap), "FLAP"); + vm.label(address(flop), "FLOP"); + vm.label(address(gov), "GOV"); + vm.label(address(reg), "REG"); + vm.label(address(osmMom), "OSM_MOM"); + vm.label(address(clipperMom), "CLIPPER_MOM"); + vm.label(address(govGuard), "GOV_GUARD"); + vm.label(address(autoLine), "AUTO_LINE"); + vm.label(address(lerpFab), "LERP_FAB"); + vm.label(address(rwaOracle), "RWA_LIQUITATION_ORACLE"); + + vm.warp(START_TIME); + + action = new DssTestAction(); + + giveAuth(address(vat), address(this)); + giveAuth(address(vat), address(action)); + giveAuth(address(spot), address(this)); + giveAuth(address(spot), address(action)); + giveAuth(address(dog), address(this)); + giveAuth(address(dog), address(action)); + giveAuth(address(vow), address(action)); + giveAuth(address(end), address(action)); + giveAuth(address(pot), address(action)); + giveAuth(address(jug), address(this)); + giveAuth(address(jug), address(action)); + giveAuth(address(flap), address(action)); + giveAuth(address(flop), address(action)); + giveAuth(address(daiJoin), address(action)); + giveAuth(address(LOG), address(action)); + giveAuth(address(reg), address(this)); + giveAuth(address(reg), address(action)); + giveAuth(address(autoLine), address(action)); + giveAuth(address(lerpFab), address(action)); + giveAuth(address(rwaOracle), address(this)); + giveAuth(address(rwaOracle), address(action)); + median.rely(address(action)); + + initCollateral("gold", address(action)); + initRwaCollateral({ + ilk: "6s", + line: 20_000_000 * RAD, + tau: 365 days, + duty: 1000000000937303470807876289, // 3% APY + mat: 105 * RAY / 100 + }); + + vm.store(address(clipperMom), 0, bytes32(uint256(uint160(address(action))))); + vm.store(address(osmMom), 0, bytes32(uint256(uint160(address(action))))); + + vm.store(address(govGuard), 0, bytes32(uint256(uint160(address(action))))); + } + function ray(uint256 wad) internal pure returns (uint256) { return wad * 10 ** 9; } @@ -237,7 +322,7 @@ contract ActionTest is Test { assertTrue(false); } - function init_collateral(bytes32 name, address _action) internal returns (Ilk memory) { + function initCollateral(bytes32 name, address _action) internal returns (Ilk memory) { DSTokenAbstract gem = DSTokenAbstract(address(new MockToken(""))); gem.mint(address(this), 20 ether); @@ -284,7 +369,7 @@ contract ActionTest is Test { return ilks[name]; } - function init_rwa( + function initRwaCollateral( bytes32 ilk, uint256 line, uint48 tau, @@ -309,54 +394,12 @@ contract ActionTest is Test { spot.poke(ilk); } - function setUp() public { - vm.warp(START_TIME); - - action = new DssTestAction(); - - giveAuth(address(vat), address(this)); - giveAuth(address(vat), address(action)); - giveAuth(address(spot), address(this)); - giveAuth(address(spot), address(action)); - giveAuth(address(dog), address(this)); - giveAuth(address(dog), address(action)); - giveAuth(address(vow), address(action)); - giveAuth(address(end), address(action)); - giveAuth(address(pot), address(action)); - giveAuth(address(jug), address(this)); - giveAuth(address(jug), address(action)); - giveAuth(address(flap), address(action)); - giveAuth(address(flop), address(action)); - giveAuth(address(daiJoin), address(action)); - giveAuth(address(LOG), address(action)); - giveAuth(address(reg), address(this)); - giveAuth(address(reg), address(action)); - giveAuth(address(autoLine), address(action)); - giveAuth(address(lerpFab), address(action)); - giveAuth(address(rwaOracle), address(this)); - giveAuth(address(rwaOracle), address(action)); - median.rely(address(action)); - - init_collateral("gold", address(action)); - init_rwa({ - ilk: "6s", - line: 20_000_000 * RAD, - tau: 365 days, - duty: 1000000000937303470807876289, // 3% APY - mat: 105 * RAY / 100 - }); - - vm.store(address(clipperMom), 0, bytes32(uint256(uint160(address(action))))); - vm.store(address(osmMom), 0, bytes32(uint256(uint160(address(action))))); - - vm.store(address(govGuard), 0, bytes32(uint256(uint160(address(action))))); - } // /******************************/ // /*** OfficeHours Management ***/ // /******************************/ - function test_canCast() public { + function test_canCast() public view { assertTrue(action.canCast_test(1616169600, true)); // Friday 2021/03/19, 4:00:00 PM GMT assertTrue(action.canCast_test(1616169600, false)); // Friday 2021/03/19, 4:00:00 PM GMT @@ -365,7 +408,7 @@ contract ActionTest is Test { assertTrue(!action.canCast_test(1616256000, true)); // Saturday 2021/03/20, 4:00:00 PM GMT } - function test_nextCastTime() public { + function test_nextCastTime() public view { assertEq(action.nextCastTime_test(1616169600, 1616169600, true), 1616169600); assertEq(action.nextCastTime_test(1616169600, 1616169600, false), 1616169600); diff --git a/src/test/DssExec.t.sol b/src/test/DssExec.t.sol index 686cca5..fd4ec2d 100644 --- a/src/test/DssExec.t.sol +++ b/src/test/DssExec.t.sol @@ -145,29 +145,24 @@ contract DssLibExecTest is Test { ChainlogAbstract constant public LOG = ChainlogAbstract(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); // MAINNET ADDRESSES - PauseAbstract pause = PauseAbstract( LOG.getAddress("MCD_PAUSE")); - address pauseProxy = LOG.getAddress("MCD_PAUSE_PROXY"); - DSChiefAbstract chief = DSChiefAbstract( LOG.getAddress("MCD_ADM")); - VatAbstract vat = VatAbstract( LOG.getAddress("MCD_VAT")); - VowAbstract vow = VowAbstract( LOG.getAddress("MCD_VOW")); - CatAbstract cat = CatAbstract( LOG.getAddress("MCD_CAT")); - DogAbstract dog = DogAbstract( LOG.getAddress("MCD_DOG")); - PotAbstract pot = PotAbstract( LOG.getAddress("MCD_POT")); - JugAbstract jug = JugAbstract( LOG.getAddress("MCD_JUG")); - SpotAbstract spot = SpotAbstract( LOG.getAddress("MCD_SPOT")); - - DSTokenAbstract gov = DSTokenAbstract( LOG.getAddress("MCD_GOV")); - EndAbstract end = EndAbstract( LOG.getAddress("MCD_END")); - IlkRegistryAbstract reg = IlkRegistryAbstract(LOG.getAddress("ILK_REGISTRY")); - - OsmMomAbstract osmMom = OsmMomAbstract( LOG.getAddress("OSM_MOM")); - ClipperMomAbstract clipMom = ClipperMomAbstract( LOG.getAddress("CLIPPER_MOM")); - - // XMPL-A specific - GemAbstract xmpl = GemAbstract( 0xCE4F3774620764Ea881a8F8840Cbe0F701372283); - GemJoinAbstract joinXMPLA; - OsmAbstract pipXMPL = OsmAbstract( LOG.getAddress("PIP_USDT")); - ClipAbstract clipXMPLA; + address pauseProxy; + PauseAbstract pause; + DSChiefAbstract chief; + VatAbstract vat; + VowAbstract vow; + DogAbstract dog; + PotAbstract pot; + JugAbstract jug; + SpotAbstract spot; + DSTokenAbstract gov; + EndAbstract end; + IlkRegistryAbstract reg; + OsmMomAbstract osmMom; + ClipperMomAbstract clipMom; + GemAbstract xmpl; + GemJoinAbstract joinXMPLA; + OsmAbstract pipXMPL; + ClipAbstract clipXMPLA; SystemValues afterSpell; @@ -183,6 +178,88 @@ contract DssLibExecTest is Test { uint256 constant RAY = 10 ** 27; uint256 constant RAD = 10 ** 45; + function setUp() public { + vm.createSelectFork("mainnet"); + + pauseProxy = LOG.getAddress("MCD_PAUSE_PROXY"); + pause = PauseAbstract( LOG.getAddress("MCD_PAUSE")); + chief = DSChiefAbstract( LOG.getAddress("MCD_ADM")); + vat = VatAbstract( LOG.getAddress("MCD_VAT")); + vow = VowAbstract( LOG.getAddress("MCD_VOW")); + dog = DogAbstract( LOG.getAddress("MCD_DOG")); + pot = PotAbstract( LOG.getAddress("MCD_POT")); + jug = JugAbstract( LOG.getAddress("MCD_JUG")); + spot = SpotAbstract( LOG.getAddress("MCD_SPOT")); + gov = DSTokenAbstract( LOG.getAddress("MCD_GOV")); + end = EndAbstract( LOG.getAddress("MCD_END")); + reg = IlkRegistryAbstract(LOG.getAddress("ILK_REGISTRY")); + osmMom = OsmMomAbstract( LOG.getAddress("OSM_MOM")); + clipMom = ClipperMomAbstract( LOG.getAddress("CLIPPER_MOM")); + xmpl = GemAbstract( 0xCE4F3774620764Ea881a8F8840Cbe0F701372283); + pipXMPL = OsmAbstract( LOG.getAddress("PIP_USDT")); + + rates = new Rates(); + + spell = new DssExec( + block.timestamp + 30 days, // Expiration + address(new DssLibSpellAction()) + ); + + // Test for all system configuration changes + + afterSpell.dsr_rate = 0; // In basis points + afterSpell.vat_Line = 10000 * MILLION; // In whole Dai units + afterSpell.pause_delay = pause.delay(); // In seconds + afterSpell.vow_wait = vow.wait(); // In seconds + afterSpell.vow_dump = vow.dump()/WAD; // In whole Dai units + afterSpell.vow_sump = vow.sump()/RAD; // In whole Dai units + afterSpell.vow_bump = vow.bump()/RAD; // In whole Dai units + afterSpell.vow_hump = vow.hump()/RAD; // In whole Dai units + afterSpell.dog_Hole = dog.Hole()/RAD; // In whole Dai units + afterSpell.ilk_count = reg.count() + 1; // Num expected in system + + // Test for all collateral based changes here + (uint256 _duty,) = jug.ilks("LINK-A"); + (address _clip,,,) = dog.ilks("LINK-A"); + ClipAbstract clip = ClipAbstract(_clip); + afterSpell.collaterals["LINK-A"] = CollateralValues({ + line: 10 * MILLION, // In whole Dai units + dust: 800, // In whole Dai units + pct: _duty, // In basis points + buf: clip.buf()*10000/RAY, // In basis points + cusp: clip.cusp()*10000/RAY, // In basis points + chop: 1400, // In basis points + tip: clip.tip()/RAD, // In whole Dai units + chip: 2, // In basis points + hole: 100000, // In whole Dai units + mat: 16000, // In basis points + beg: 400, // In basis points + tail: 2 hours, // In seconds + ttl: 3 hours, // In seconds + tau: 3 hours, // In seconds + liquidations: 1 // 1 if enabled + }); + + // New collateral + afterSpell.collaterals["XMPL-A"] = CollateralValues({ + line: 3 * MILLION, // In whole Dai units + dust: 2000, // In whole Dai units + pct: 225, // In basis points + buf: 13000, // In basis points + cusp: 4000, // In basis points + chop: 1300, // In basis points + tip: 5, // In whole Dai units + chip: 5, // In basis points + hole: 50 * THOUSAND, // In whole Dai units + mat: 15000, // In basis points + beg: 300, // In basis points + tail: 10 hours, // In seconds + ttl: 6 hours, // In seconds + tau: 6 hours, // In seconds + liquidations: 1 // 1 if enabled + }); + } + // not provided in DSMath function _rpow(uint256 x, uint256 n, uint256 b) internal pure returns (uint256 z) { assembly { @@ -207,6 +284,7 @@ contract DssLibExecTest is Test { } } } + // 10^-5 (tenth of a basis point) as a RAY uint256 TOLERANCE = 10 ** 22; @@ -229,71 +307,6 @@ contract DssLibExecTest is Test { return wad * RAY; } - function setUp() public { - rates = new Rates(); - - spell = new DssExec( - block.timestamp + 30 days, // Expiration - address(new DssLibSpellAction()) - ); - - // - // Test for all system configuration changes - // - afterSpell.dsr_rate = 0; // In basis points - afterSpell.vat_Line = 10000 * MILLION; // In whole Dai units - afterSpell.pause_delay = pause.delay(); // In seconds - afterSpell.vow_wait = vow.wait(); // In seconds - afterSpell.vow_dump = vow.dump()/WAD; // In whole Dai units - afterSpell.vow_sump = vow.sump()/RAD; // In whole Dai units - afterSpell.vow_bump = vow.bump()/RAD; // In whole Dai units - afterSpell.vow_hump = vow.hump()/RAD; // In whole Dai units - afterSpell.dog_Hole = dog.Hole()/RAD; // In whole Dai units - afterSpell.ilk_count = reg.count() + 1; // Num expected in system - - // - // Test for all collateral based changes here - // - (uint256 _duty,) = jug.ilks("LINK-A"); - (address _clip,,,) = dog.ilks("LINK-A"); - ClipAbstract clip = ClipAbstract(_clip); - afterSpell.collaterals["LINK-A"] = CollateralValues({ - line: 10 * MILLION, // In whole Dai units - dust: 800, // In whole Dai units - pct: _duty, // In basis points - buf: clip.buf()*10000/RAY, // In basis points - cusp: clip.cusp()*10000/RAY,// In basis points - chop: 1400, // In basis points - tip: clip.tip()/RAD, // In whole Dai units - chip: 2, // In basis points - hole: 100000, // In whole Dai units - mat: 16000, // In basis points - beg: 400, // In basis points - tail: 2 hours, // In seconds - ttl: 3 hours, // In seconds - tau: 3 hours, // In seconds - liquidations: 1 // 1 if enabled - }); - // New collateral - afterSpell.collaterals["XMPL-A"] = CollateralValues({ - line: 3 * MILLION, // In whole Dai units - dust: 2000, // In whole Dai units - pct: 225, // In basis points - buf: 13000, // In basis points - cusp: 4000, // In basis points - chop: 1300, // In basis points - tip: 5, // In whole Dai units - chip: 5, // In basis points - hole: 50 * THOUSAND, // In whole Dai units - mat: 15000, // In basis points - beg: 300, // In basis points - tail: 10 hours, // In seconds - ttl: 6 hours, // In seconds - tau: 6 hours, // In seconds - liquidations: 1 // 1 if enabled - }); - } - function vote() private { if (chief.hat() != address(spell)) { vm.store( diff --git a/test.sh b/test.sh deleted file mode 100755 index ef4de73..0000000 --- a/test.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash -set -e - -[[ "$ETH_RPC_URL" && "$(cast chain)" == "ethlive" ]] || { echo "Please set a mainnet ETH_RPC_URL"; exit 1; } - -export FOUNDRY_OPTIMIZER=true -export FOUNDRY_OPTIMIZER_RUNS=200 - -if [[ -z "$1" ]]; then - forge test --use "0.8.16" --fork-url "$ETH_RPC_URL" -vv --force -else - forge test --use "0.8.16" --fork-url "$ETH_RPC_URL" --match "$1" -vvv --force -fi From ecd7f5eb0ecfd3fba68b87816f9106d9ef34c8fa Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 25 Apr 2025 10:40:38 -0300 Subject: [PATCH 03/61] chore: add .editorconfig --- .editorconfig | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..eefe7d8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,37 @@ +# EditorConfig for Sky Protocol Projects + +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = space + +# Source Code +[*.{sol,sh,js,py}] +indent_size = 4 + +# Certora +[*.spec] +indent_size = 4 + +[*.conf] +indent_size = 2 + +# Config Files +[*.{json,json5,yml,yaml}] +indent_size = 2 + +[*.toml] +indent_size = 4 + +[Makefile] +intent_style = tab +indent_size = 4 + +# Special Cases +[*.{diff,md}] +trim_trailing_whitespace = false From 449744ac23fa961951ee4a52a061636598c55f0f Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 28 Apr 2025 15:37:52 -0300 Subject: [PATCH 04/61] refactor: rename D3M functions to DDM --- README.md | 2 +- src/DssExecLib.sol | 8 ++++---- src/test/DssAction.t.sol | 20 ++++++++++---------- src/test/DssTestAction.sol | 4 ++-- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index de4fe18..7c1292c 100644 --- a/README.md +++ b/README.md @@ -177,7 +177,7 @@ Below is an outline of all functions used in the library. - `allowOSMFreeze(address _osm, bytes32 _ilk)`: Add OSM address to OSM mom, allowing it to be frozen by governance. ### Direct Deposit Module -- `setD3MTargetInterestRate(address _d3m, uint256 _pct_bps)`: Set the target rate (`bar`) for a D3M module. +- `setDDMTargetInterestRate(address _ddm, uint256 _pct_bps)`: Set the target rate (`bar`) for a DDM module. ### Collateral Onboarding In order to onboard new collateral to the Maker protocol, the following must be done before the spell is prepared: diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index fd63dba..c164c83 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -916,14 +916,14 @@ library DssExecLib { /*****************************/ /** - @dev Sets the target rate threshold for a dai direct deposit module (d3m) + @dev Sets the target rate threshold for a dai direct deposit module (ddm) @dev Aave: Targets the variable borrow rate - @param _d3m The address of the D3M contract + @param _ddm The address of the DDM contract @param _pct_bps Target rate in basis points. (ex. 4% == 400) */ - function setD3MTargetInterestRate(address _d3m, uint256 _pct_bps) public { + function setDDMTargetInterestRate(address _ddm, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/bar-too-high - setValue(_d3m, "bar", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); + setValue(_ddm, "bar", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } /*****************************/ diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 2fbbb0c..c12f974 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -64,7 +64,7 @@ interface Univ2OracleFactoryLike { function build(address, address, bytes32, address, address) external returns (address oracle); } -interface D3MLike { +interface DDMLike { function bar() external view returns (uint256); function rely(address) external; } @@ -979,18 +979,18 @@ contract ActionTest is Test { /*** Direct Deposit Module ***/ /*****************************/ - function test_setD3MTargetInterestRate() public { - D3MLike d3m = D3MLike(LOG.getAddress("MCD_JOIN_DIRECT_AAVEV2_DAI")); - giveAuth(address(d3m), address(action)); + function test_setDDMTargetInterestRate() public { + DDMLike ddm = DDMLike(LOG.getAddress("DIRECT_AAVEV2_DAI_PLAN")); + giveAuth(address(ddm), address(action)); - action.setD3MTargetInterestRate_test(address(d3m), 500); // set to 5% - assertEq(d3m.bar(), 5 * RAY / 100); + action.setDDMTargetInterestRate_test(address(ddm), 500); // set to 5% + assertEq(ddm.bar(), 5 * RAY / 100); - action.setD3MTargetInterestRate_test(address(d3m), 0); // set to 0% - assertEq(d3m.bar(), 0); + action.setDDMTargetInterestRate_test(address(ddm), 0); // set to 0% + assertEq(ddm.bar(), 0); - action.setD3MTargetInterestRate_test(address(d3m), 1000); // set to 10% - assertEq(d3m.bar(), 10 * RAY / 100); + action.setDDMTargetInterestRate_test(address(ddm), 1000); // set to 10% + assertEq(ddm.bar(), 10 * RAY / 100); } /*****************************/ diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index 9a16d4d..9fd368d 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -329,8 +329,8 @@ contract DssTestAction is DssAction { /*** Direct Deposit Module ***/ /*****************************/ - function setD3MTargetInterestRate_test(address d3m, uint256 pct_bps) public { - DssExecLib.setD3MTargetInterestRate(d3m, pct_bps); + function setDDMTargetInterestRate_test(address ddm, uint256 pct_bps) public { + DssExecLib.setDDMTargetInterestRate(ddm, pct_bps); } /*****************************/ From b4c53d74fc3d0c68a3f91f5d69108abce9838d78 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 28 Apr 2025 17:18:04 -0300 Subject: [PATCH 05/61] refactor: improve formatting --- src/DssExecLib.sol | 1058 ++++++++++++++++++++++---------------- src/test/DssAction.t.sol | 2 +- 2 files changed, 604 insertions(+), 456 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index c164c83..a64eeac 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -19,7 +19,7 @@ pragma solidity ^0.8.16; -import { CollateralOpts } from "./CollateralOpts.sol"; +import {CollateralOpts} from "./CollateralOpts.sol"; interface Initializable { function init(bytes32) external; @@ -115,15 +115,32 @@ interface ChainlogLike { } interface IAMLike { - function ilks(bytes32) external view returns (uint256,uint256,uint48,uint48,uint48); - function setIlk(bytes32,uint256,uint256,uint256) external; + function ilks(bytes32) external view returns (uint256, uint256, uint48, uint48, uint48); + function setIlk(bytes32, uint256, uint256, uint256) external; function remIlk(bytes32) external; function exec(bytes32) external returns (uint256); } interface LerpFactoryLike { - function newLerp(bytes32 name_, address target_, bytes32 what_, uint256 startTime_, uint256 start_, uint256 end_, uint256 duration_) external returns (address); - function newIlkLerp(bytes32 name_, address target_, bytes32 ilk_, bytes32 what_, uint256 startTime_, uint256 start_, uint256 end_, uint256 duration_) external returns (address); + function newLerp( + bytes32 name_, + address target_, + bytes32 what_, + uint256 startTime_, + uint256 start_, + uint256 end_, + uint256 duration_ + ) external returns (address); + function newIlkLerp( + bytes32 name_, + address target_, + bytes32 ilk_, + bytes32 what_, + uint256 startTime_, + uint256 start_, + uint256 end_, + uint256 duration_ + ) external returns (address); } interface LerpLike { @@ -134,30 +151,33 @@ interface RwaOracleLike { function bump(bytes32 ilk, uint256 val) external; } - library DssExecLib { /*****************/ /*** Constants ***/ /*****************/ - address constant public LOG = 0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F; - uint256 constant internal WAD = 10 ** 18; - uint256 constant internal RAY = 10 ** 27; - uint256 constant internal RAD = 10 ** 45; - uint256 constant internal THOUSAND = 10 ** 3; - uint256 constant internal MILLION = 10 ** 6; + address public constant LOG = 0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F; + + uint256 internal constant THOUSAND = 10 ** 3; + uint256 internal constant MILLION = 10 ** 6; + uint256 internal constant WAD = 10 ** 18; + uint256 internal constant RAY = 10 ** 27; + uint256 internal constant RAD = 10 ** 45; - uint256 constant internal BPS_ONE_PCT = 100; - uint256 constant internal BPS_ONE_HUNDRED_PCT = 100 * BPS_ONE_PCT; - uint256 constant internal RATES_ONE_HUNDRED_PCT = 1000000021979553151239153027; + uint256 internal constant BPS_ONE_HUNDRED_PCT = 100_00; + uint256 internal constant RATES_ONE_HUNDRED_PCT = 1000000021979553151239153027; /**********************/ /*** Math Functions ***/ /**********************/ + + /// @dev WAD division function wdiv(uint256 x, uint256 y) internal pure returns (uint256 z) { z = (x * WAD + y / 2) / y; } + + /// @dev RAY division function rdiv(uint256 x, uint256 y) internal pure returns (uint256 z) { z = (x * RAY + y / 2) / y; } @@ -165,28 +185,94 @@ library DssExecLib { /****************************/ /*** Core Address Helpers ***/ /****************************/ - function dai() public view returns (address) { return getChangelogAddress("MCD_DAI"); } - function mkr() public view returns (address) { return getChangelogAddress("MCD_GOV"); } - function vat() public view returns (address) { return getChangelogAddress("MCD_VAT"); } - function cat() public view returns (address) { return getChangelogAddress("MCD_CAT"); } - function dog() public view returns (address) { return getChangelogAddress("MCD_DOG"); } - function jug() public view returns (address) { return getChangelogAddress("MCD_JUG"); } - function pot() public view returns (address) { return getChangelogAddress("MCD_POT"); } - function vow() public view returns (address) { return getChangelogAddress("MCD_VOW"); } - function end() public view returns (address) { return getChangelogAddress("MCD_END"); } - function esm() public view returns (address) { return getChangelogAddress("MCD_ESM"); } - function reg() public view returns (address) { return getChangelogAddress("ILK_REGISTRY"); } - function spotter() public view returns (address) { return getChangelogAddress("MCD_SPOT"); } - function flap() public view returns (address) { return getChangelogAddress("MCD_FLAP"); } - function flop() public view returns (address) { return getChangelogAddress("MCD_FLOP"); } - function osmMom() public view returns (address) { return getChangelogAddress("OSM_MOM"); } - function govGuard() public view returns (address) { return getChangelogAddress("GOV_GUARD"); } - function flipperMom() public view returns (address) { return getChangelogAddress("FLIPPER_MOM"); } - function clipperMom() public view returns (address) { return getChangelogAddress("CLIPPER_MOM"); } - function pauseProxy() public view returns (address) { return getChangelogAddress("MCD_PAUSE_PROXY"); } - function autoLine() public view returns (address) { return getChangelogAddress("MCD_IAM_AUTO_LINE"); } - function daiJoin() public view returns (address) { return getChangelogAddress("MCD_JOIN_DAI"); } - function lerpFab() public view returns (address) { return getChangelogAddress("LERP_FAB"); } + + function dai() public view returns (address) { + return getChangelogAddress("MCD_DAI"); + } + + function mkr() public view returns (address) { + return getChangelogAddress("MCD_GOV"); + } + + function vat() public view returns (address) { + return getChangelogAddress("MCD_VAT"); + } + + function cat() public view returns (address) { + return getChangelogAddress("MCD_CAT"); + } + + function dog() public view returns (address) { + return getChangelogAddress("MCD_DOG"); + } + + function jug() public view returns (address) { + return getChangelogAddress("MCD_JUG"); + } + + function pot() public view returns (address) { + return getChangelogAddress("MCD_POT"); + } + + function vow() public view returns (address) { + return getChangelogAddress("MCD_VOW"); + } + + function end() public view returns (address) { + return getChangelogAddress("MCD_END"); + } + + function esm() public view returns (address) { + return getChangelogAddress("MCD_ESM"); + } + + function reg() public view returns (address) { + return getChangelogAddress("ILK_REGISTRY"); + } + + function spotter() public view returns (address) { + return getChangelogAddress("MCD_SPOT"); + } + + function flap() public view returns (address) { + return getChangelogAddress("MCD_FLAP"); + } + + function flop() public view returns (address) { + return getChangelogAddress("MCD_FLOP"); + } + + function osmMom() public view returns (address) { + return getChangelogAddress("OSM_MOM"); + } + + function govGuard() public view returns (address) { + return getChangelogAddress("GOV_GUARD"); + } + + function flipperMom() public view returns (address) { + return getChangelogAddress("FLIPPER_MOM"); + } + + function clipperMom() public view returns (address) { + return getChangelogAddress("CLIPPER_MOM"); + } + + function pauseProxy() public view returns (address) { + return getChangelogAddress("MCD_PAUSE_PROXY"); + } + + function autoLine() public view returns (address) { + return getChangelogAddress("MCD_IAM_AUTO_LINE"); + } + + function daiJoin() public view returns (address) { + return getChangelogAddress("MCD_JOIN_DAI"); + } + + function lerpFab() public view returns (address) { + return getChangelogAddress("LERP_FAB"); + } function clip(bytes32 _ilk) public view returns (address _clip) { _clip = RegistryLike(reg()).xlip(_ilk); @@ -208,75 +294,83 @@ library DssExecLib { /*** Changelog Management ***/ /****************************/ /** - @dev Set an address in the MCD on-chain changelog. - @param _key Access key for the address (e.g. "MCD_VAT") - @param _val The address associated with the _key - */ + * @dev Set an address in the MCD on-chain changelog. + * @param _key Access key for the address (e.g. "MCD_VAT") + * @param _val The address associated with the _key + */ function setChangelogAddress(bytes32 _key, address _val) public { ChainlogLike(LOG).setAddress(_key, _val); } /** - @dev Set version in the MCD on-chain changelog. - @param _version Changelog version (e.g. "1.1.2") - */ + * @dev Set version in the MCD on-chain changelog. + * @param _version Changelog version (e.g. "1.1.2") + */ function setChangelogVersion(string memory _version) public { ChainlogLike(LOG).setVersion(_version); } + /** - @dev Set IPFS hash of IPFS changelog in MCD on-chain changelog. - @param _ipfsHash IPFS hash (e.g. "QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW") - */ + * @dev Set IPFS hash of IPFS changelog in MCD on-chain changelog. + * @param _ipfsHash IPFS hash (e.g. "QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW") + */ function setChangelogIPFS(string memory _ipfsHash) public { ChainlogLike(LOG).setIPFS(_ipfsHash); } + /** - @dev Set SHA256 hash in MCD on-chain changelog. - @param _SHA256Sum SHA256 hash (e.g. "e42dc9d043a57705f3f097099e6b2de4230bca9a020c797508da079f9079e35b") - */ + * @dev Set SHA256 hash in MCD on-chain changelog. + * @param _SHA256Sum SHA256 hash (e.g. "e42dc9d043a57705f3f097099e6b2de4230bca9a020c797508da079f9079e35b") + */ function setChangelogSHA256(string memory _SHA256Sum) public { ChainlogLike(LOG).setSha256sum(_SHA256Sum); } - /**********************/ /*** Authorizations ***/ /**********************/ /** - @dev Give an address authorization to perform auth actions on the contract. - @param _base The address of the contract where the authorization will be set - @param _ward Address to be authorized - */ + * + */ + /** + * @dev Give an address authorization to perform auth actions on the contract. + * @param _base The address of the contract where the authorization will be set + * @param _ward Address to be authorized + */ function authorize(address _base, address _ward) public { Authorizable(_base).rely(_ward); } + /** - @dev Revoke contract authorization from an address. - @param _base The address of the contract where the authorization will be revoked - @param _ward Address to be deauthorized - */ + * @dev Revoke contract authorization from an address. + * @param _base The address of the contract where the authorization will be revoked + * @param _ward Address to be deauthorized + */ function deauthorize(address _base, address _ward) public { Authorizable(_base).deny(_ward); } + /** - @dev Give an address authorization to perform auth actions on the contract. - @param _base The address of the contract with a `setAuthority` pattern - @param _authority Address to be authorized - */ + * @dev Give an address authorization to perform auth actions on the contract. + * @param _base The address of the contract with a `setAuthority` pattern + * @param _authority Address to be authorized + */ function setAuthority(address _base, address _authority) public { Authorizable(_base).setAuthority(_authority); } + /** - @dev Delegate vat authority to the specified address. - @param _usr Address to be authorized - */ + * @dev Delegate vat authority to the specified address. + * @param _usr Address to be authorized + */ function delegateVat(address _usr) public { DssVat(vat()).hope(_usr); } + /** - @dev Revoke vat authority to the specified address. - @param _usr Address to be deauthorized - */ + * @dev Revoke vat authority to the specified address. + * @param _usr Address to be deauthorized + */ function undelegateVat(address _usr) public { DssVat(vat()).nope(_usr); } @@ -286,31 +380,31 @@ library DssExecLib { /******************************/ /** - @dev Returns true if a time is within office hours range - @param _ts The timestamp to check, usually block.timestamp - @param _officeHours true if office hours is enabled. - @return true if time is in castable range - */ + * @dev Returns true if a time is within office hours range + * @param _ts The timestamp to check, usually block.timestamp + * @param _officeHours true if office hours is enabled. + * @return true if time is in castable range + */ function canCast(uint40 _ts, bool _officeHours) public pure returns (bool) { if (_officeHours) { uint256 day = (_ts / 1 days + 3) % 7; - if (day >= 5) { return false; } // Can only be cast on a weekday + if (day >= 5) return false; // Can only be cast on a weekday uint256 hour = _ts / 1 hours % 24; - if (hour < 14 || hour >= 21) { return false; } // Outside office hours + if (hour < 14 || hour >= 21) return false; // Outside office hours } return true; } /** - @dev Calculate the next available cast time in epoch seconds - @param _eta The scheduled time of the spell plus the pause delay - @param _ts The current timestamp, usually block.timestamp - @param _officeHours true if office hours is enabled. - @return castTime The next available cast timestamp - */ + * @dev Calculate the next available cast time in epoch seconds + * @param _eta The scheduled time of the spell plus the pause delay + * @param _ts The current timestamp, usually block.timestamp + * @param _officeHours true if office hours is enabled. + * @return castTime The next available cast timestamp + */ function nextCastTime(uint40 _eta, uint40 _ts, bool _officeHours) public pure returns (uint256 castTime) { - require(_eta != 0); // "DssExecLib/invalid eta" - require(_ts != 0); // "DssExecLib/invalid ts" + require(_eta != 0); // "DssExecLib/invalid eta" + require(_ts != 0); // "DssExecLib/invalid ts" castTime = _ts > _eta ? _ts : _eta; // Any day at XX:YY if (_officeHours) { @@ -320,17 +414,17 @@ library DssExecLib { uint256 second = castTime % 60; if (day >= 5) { - castTime += (6 - day) * 1 days; // Go to Sunday XX:YY - castTime += (24 - hour + 14) * 1 hours; // Go to 14:YY UTC Monday - castTime -= minute * 1 minutes + second; // Go to 14:00 UTC + castTime += (6 - day) * 1 days; // Go to Sunday XX:YY + castTime += (24 - hour + 14) * 1 hours; // Go to 14:YY UTC Monday + castTime -= minute * 1 minutes + second; // Go to 14:00 UTC } else { if (hour >= 21) { - if (day == 4) castTime += 2 days; // If Friday, fast forward to Sunday XX:YY - castTime += (24 - hour + 14) * 1 hours; // Go to 14:YY UTC next day - castTime -= minute * 1 minutes + second; // Go to 14:00 UTC + if (day == 4) castTime += 2 days; // If Friday, fast forward to Sunday XX:YY + castTime += (24 - hour + 14) * 1 hours; // Go to 14:YY UTC next day + castTime -= minute * 1 minutes + second; // Go to 14:00 UTC } else if (hour < 14) { - castTime += (14 - hour) * 1 hours; // Go to 14:YY UTC same day - castTime -= minute * 1 minutes + second; // Go to 14:00 UTC + castTime += (14 - hour) * 1 hours; // Go to 14:YY UTC same day + castTime -= minute * 1 minutes + second; // Go to 14:00 UTC } } } @@ -340,15 +434,16 @@ library DssExecLib { /*** Accumulating Rates ***/ /**************************/ /** - @dev Update rate accumulation for the Dai Savings Rate (DSR). - */ + * @dev Update rate accumulation for the Dai Savings Rate (DSR). + */ function accumulateDSR() public { Drippable(pot()).drip(); } + /** - @dev Update rate accumulation for the stability fees of a given collateral type. - @param _ilk Collateral type - */ + * @dev Update rate accumulation for the stability fees of a given collateral type. + * @param _ilk Collateral type + */ function accumulateCollateralStabilityFees(bytes32 _ilk) public { Drippable(jug()).drip(_ilk); } @@ -357,9 +452,9 @@ library DssExecLib { /*** Price Updates ***/ /*********************/ /** - @dev Update price of a given collateral type. - @param _ilk Collateral type - */ + * @dev Update price of a given collateral type. + * @param _ilk Collateral type + */ function updateCollateralPrice(bytes32 _ilk) public { Pricing(spotter()).poke(_ilk); } @@ -368,40 +463,43 @@ library DssExecLib { /*** System Configuration ***/ /****************************/ /** - @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in Clip) - @param _base The address of the contract where the new contract address will be filed - @param _what Name of contract to file - @param _addr Address of contract to file - */ + * @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in Clip) + * @param _base The address of the contract where the new contract address will be filed + * @param _what Name of contract to file + * @param _addr Address of contract to file + */ function setContract(address _base, bytes32 _what, address _addr) public { Fileable(_base).file(_what, _addr); } + /** - @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in a Clip) - @param _base The address of the contract where the new contract address will be filed - @param _ilk Collateral type - @param _what Name of contract to file - @param _addr Address of contract to file - */ + * @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in a Clip) + * @param _base The address of the contract where the new contract address will be filed + * @param _ilk Collateral type + * @param _what Name of contract to file + * @param _addr Address of contract to file + */ function setContract(address _base, bytes32 _ilk, bytes32 _what, address _addr) public { Fileable(_base).file(_ilk, _what, _addr); } + /** - @dev Set a value in a contract, via a governance authorized File pattern. - @param _base The address of the contract where the new contract address will be filed - @param _what Name of tag for the value (e.x. "Line") - @param _amt The value to set or update - */ + * @dev Set a value in a contract, via a governance authorized File pattern. + * @param _base The address of the contract where the new contract address will be filed + * @param _what Name of tag for the value (e.x. "Line") + * @param _amt The value to set or update + */ function setValue(address _base, bytes32 _what, uint256 _amt) public { Fileable(_base).file(_what, _amt); } + /** - @dev Set an ilk-specific value in a contract, via a governance authorized File pattern. - @param _base The address of the contract where the new value will be filed - @param _ilk Collateral type - @param _what Name of tag for the value (e.x. "Line") - @param _amt The value to set or update - */ + * @dev Set an ilk-specific value in a contract, via a governance authorized File pattern. + * @param _base The address of the contract where the new value will be filed + * @param _ilk Collateral type + * @param _what Name of tag for the value (e.x. "Line") + * @param _amt The value to set or update + */ function setValue(address _base, bytes32 _ilk, bytes32 _what, uint256 _amt) public { Fileable(_base).file(_ilk, _what, _amt); } @@ -409,186 +507,190 @@ library DssExecLib { /******************************/ /*** System Risk Parameters ***/ /******************************/ - // function setGlobalDebtCeiling(uint256 _amount) public { setGlobalDebtCeiling(vat(), _amount); } + /** - @dev Set the global debt ceiling. Amount will be converted to the correct internal precision. - @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Set the global debt ceiling. Amount will be converted to the correct internal precision. + * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + */ function setGlobalDebtCeiling(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-global-Line-precision" + require(_amount < WAD); // "LibDssExec/incorrect-global-Line-precision" setValue(vat(), "Line", _amount * RAD); } + /** - @dev Increase the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. - @param _amount The amount to add in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Increase the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. + * @param _amount The amount to add in DAI (ex. 10m DAI amount == 10000000) + */ function increaseGlobalDebtCeiling(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-Line-increase-precision" + require(_amount < WAD); // "LibDssExec/incorrect-Line-increase-precision" address _vat = vat(); setValue(_vat, "Line", DssVat(_vat).Line() + _amount * RAD); } + /** - @dev Decrease the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. - @param _amount The amount to reduce in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Decrease the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. + * @param _amount The amount to reduce in DAI (ex. 10m DAI amount == 10000000) + */ function decreaseGlobalDebtCeiling(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-Line-decrease-precision" + require(_amount < WAD); // "LibDssExec/incorrect-Line-decrease-precision" address _vat = vat(); setValue(_vat, "Line", DssVat(_vat).Line() - _amount * RAD); } + /** - @dev Set the Dai Savings Rate. See: docs/rates.txt - @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) - @param _doDrip `true` to accumulate interest owed - */ + * @dev Set the Dai Savings Rate. See: docs/rates.txt + * @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + * @param _doDrip `true` to accumulate interest owed + */ function setDSR(uint256 _rate, bool _doDrip) public { - require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/dsr-out-of-bounds" + require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/dsr-out-of-bounds" if (_doDrip) Drippable(pot()).drip(); setValue(pot(), "dsr", _rate); } + /** - @dev Set the DAI amount for system surplus auctions. Amount will be converted to the correct internal precision. - @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Set the DAI amount for system surplus auctions. Amount will be converted to the correct internal precision. + * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + */ function setSurplusAuctionAmount(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-vow-bump-precision" + require(_amount < WAD); // "LibDssExec/incorrect-vow-bump-precision" setValue(vow(), "bump", _amount * RAD); } + /** - @dev Set the DAI amount for system surplus buffer, must be exceeded before surplus auctions start. Amount will be converted to the correct internal precision. - @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Set the DAI amount for system surplus buffer, must be exceeded before surplus auctions start. Amount will be converted to the correct internal precision. + * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + */ function setSurplusBuffer(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-vow-hump-precision" + require(_amount < WAD); // "LibDssExec/incorrect-vow-hump-precision" setValue(vow(), "hump", _amount * RAD); } + /** - @dev Set minimum bid increase for surplus auctions. Amount will be converted to the correct internal precision. - @dev Equation used for conversion is (1 + pct / 10,000) * WAD - @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) - */ - function setMinSurplusAuctionBidIncrease(uint256 _pct_bps) public { - require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flap-beg-precision" - setValue(flap(), "beg", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); - } - /** - @dev Set bid duration for surplus auctions. - @param _duration Amount of time for bids. (in seconds) - */ - function setSurplusAuctionBidDuration(uint256 _duration) public { - setValue(flap(), "ttl", _duration); - } - /** - @dev Set total auction duration for surplus auctions. - @param _duration Amount of time for auctions. (in seconds) - */ - function setSurplusAuctionDuration(uint256 _duration) public { - setValue(flap(), "tau", _duration); + * @dev Set the minimum price threshold for surplus auctions. Amount will be converted to the correct internal precision. + * @dev Equation used for conversion is (pct / 10,000) * WAD + * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) + */ + function setSurplusAuctionMinPriceThreshold(uint256 _pct_bps) public { + require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flap-beg-precision" + setValue(flap(), "want", wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } + /** - @dev Set the number of seconds that pass before system debt is auctioned for MKR tokens. - @param _duration Duration in seconds - */ + * @dev Set the number of seconds that pass before system debt is auctioned for MKR tokens. + * @param _duration Duration in seconds + */ function setDebtAuctionDelay(uint256 _duration) public { setValue(vow(), "wait", _duration); } + /** - @dev Set the DAI amount for system debt to be covered by each debt auction. Amount will be converted to the correct internal precision. - @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Set the DAI amount for system debt to be covered by each debt auction. Amount will be converted to the correct internal precision. + * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + */ function setDebtAuctionDAIAmount(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-vow-sump-precision" + require(_amount < WAD); // "LibDssExec/incorrect-vow-sump-precision" setValue(vow(), "sump", _amount * RAD); } + /** - @dev Set the starting MKR amount to be auctioned off to cover system debt in debt auctions. Amount will be converted to the correct internal precision. - @param _amount The amount to set in MKR (ex. 250 MKR amount == 250) - */ + * @dev Set the starting MKR amount to be auctioned off to cover system debt in debt auctions. Amount will be converted to the correct internal precision. + * @param _amount The amount to set in MKR (ex. 250 MKR amount == 250) + */ function setDebtAuctionMKRAmount(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-vow-dump-precision" + require(_amount < WAD); // "LibDssExec/incorrect-vow-dump-precision" setValue(vow(), "dump", _amount * WAD); } + /** - @dev Set minimum bid increase for debt auctions. Amount will be converted to the correct internal precision. - @dev Equation used for conversion is (1 + pct / 10,000) * WAD - @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) - */ + * @dev Set minimum bid increase for debt auctions. Amount will be converted to the correct internal precision. + * @dev Equation used for conversion is (1 + pct / 10,000) * WAD + * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) + */ function setMinDebtAuctionBidIncrease(uint256 _pct_bps) public { - require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flop-beg-precision" + require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flop-beg-precision" setValue(flop(), "beg", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } + /** - @dev Set bid duration for debt auctions. - @param _duration Amount of time for bids. (seconds) - */ + * @dev Set bid duration for debt auctions. + * @param _duration Amount of time for bids. (seconds) + */ function setDebtAuctionBidDuration(uint256 _duration) public { - require(_duration < type(uint48).max); // "LibDssExec/incorrect-flop-ttl-precision" + require(_duration < type(uint48).max); // "LibDssExec/incorrect-flop-ttl-precision" setValue(flop(), "ttl", _duration); } + /** - @dev Set total auction duration for debt auctions. - @param _duration Amount of time for auctions. (seconds) - */ + * @dev Set total auction duration for debt auctions. + * @param _duration Amount of time for auctions. (seconds) + */ function setDebtAuctionDuration(uint256 _duration) public { - require(_duration < type(uint48).max); // "LibDssExec/incorrect-flop-tau-precision" + require(_duration < type(uint48).max); // "LibDssExec/incorrect-flop-tau-precision" setValue(flop(), "tau", _duration); } + /** - @dev Set the rate of increasing amount of MKR out for auction during debt auctions. Amount will be converted to the correct internal precision. - @dev MKR amount is increased by this rate every "tick" (if auction duration has passed and no one has bid on the MKR) - @dev Equation used for conversion is (1 + pct / 10,000) * WAD - @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) - */ + * @dev Set the rate of increasing amount of MKR out for auction during debt auctions. Amount will be converted to the correct internal precision. + * @dev MKR amount is increased by this rate every "tick" (if auction duration has passed and no one has bid on the MKR) + * @dev Equation used for conversion is (1 + pct / 10,000) * WAD + * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) + */ function setDebtAuctionMKRIncreaseRate(uint256 _pct_bps) public { - require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flop-pad-precision" + require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flop-pad-precision" setValue(flop(), "pad", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } + /** - @dev Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. - @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) - */ + * @dev Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. + * @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) + */ function setMaxTotalDAILiquidationAmount(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-dog-Hole-precision" + require(_amount < WAD); // "LibDssExec/incorrect-dog-Hole-precision" setValue(dog(), "Hole", _amount * RAD); } + /** - @dev (LIQ 1.2) Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. - @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) - */ + * @dev (LIQ 1.2) Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. + * @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) + */ function setMaxTotalDAILiquidationAmountLEGACY(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-cat-box-amount" + require(_amount < WAD); // "LibDssExec/incorrect-cat-box-amount" setValue(cat(), "box", _amount * RAD); } + /** - @dev Set the duration of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. - @param _duration Time in seconds to set for ES processing time - */ + * @dev Set the duration of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. + * @param _duration Time in seconds to set for ES processing time + */ function setEmergencyShutdownProcessingTime(uint256 _duration) public { setValue(end(), "wait", _duration); } - /** - @dev Set the global stability fee (is not typically used, currently is 0). - Many of the settings that change weekly rely on the rate accumulator - described at https://docs.makerdao.com/smart-contract-modules/rates-module - To check this yourself, use the following rate calculation (example 8%): - $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' - - A table of rates can also be found at: - https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW - @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) - */ + /** + * @dev Set the global stability fee (is not typically used, currently is 0). + * Many of the settings that change weekly rely on the rate accumulator + * described at https://docs.makerdao.com/smart-contract-modules/rates-module + * To check this yourself, use the following rate calculation (example 8%): + * + * $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' + * + * A table of rates can also be found at: + * https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW + * @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + */ function setGlobalStabilityFee(uint256 _rate) public { - require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/global-stability-fee-out-of-bounds" + require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/global-stability-fee-out-of-bounds" setValue(jug(), "base", _rate); } + /** - @dev Set the value of DAI in the reference asset (e.g. $1 per DAI). Value will be converted to the correct internal precision. - @dev Equation used for conversion is value * RAY / 1000 - @param _value The value to set as integer (x1000) (ex. $1.025 == 1025) - */ + * @dev Set the value of DAI in the reference asset (e.g. $1 per DAI). Value will be converted to the correct internal precision. + * @dev Equation used for conversion is value * RAY / 1000 + * @param _value The value to set as integer (x1000) (ex. $1.025 == 1025) + */ function setDAIReferenceValue(uint256 _value) public { - require(_value < WAD); // "LibDssExec/incorrect-par-precision" + require(_value < WAD); // "LibDssExec/incorrect-par-precision" setValue(spotter(), "par", rdiv(_value, 1000)); } @@ -596,134 +698,145 @@ library DssExecLib { /*** Collateral Management ***/ /*****************************/ /** - @dev Set a collateral debt ceiling. Amount will be converted to the correct internal precision. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Set a collateral debt ceiling. Amount will be converted to the correct internal precision. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + */ function setIlkDebtCeiling(bytes32 _ilk, uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" + require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" setValue(vat(), _ilk, "line", _amount * RAD); } + /** - @dev Increase a collateral debt ceiling. Amount will be converted to the correct internal precision. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _amount The amount to increase in DAI (ex. 10m DAI amount == 10000000) - @param _global If true, increases the global debt ceiling by _amount - */ + * @dev Increase a collateral debt ceiling. Amount will be converted to the correct internal precision. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _amount The amount to increase in DAI (ex. 10m DAI amount == 10000000) + * @param _global If true, increases the global debt ceiling by _amount + */ function increaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global) public { - require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" + require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" address _vat = vat(); - (,,,uint256 line_,) = DssVat(_vat).ilks(_ilk); + (,,, uint256 line_,) = DssVat(_vat).ilks(_ilk); setValue(_vat, _ilk, "line", line_ + _amount * RAD); - if (_global) { increaseGlobalDebtCeiling(_amount); } + if (_global) increaseGlobalDebtCeiling(_amount); } + /** - @dev Decrease a collateral debt ceiling. Amount will be converted to the correct internal precision. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _amount The amount to decrease in DAI (ex. 10m DAI amount == 10000000) - @param _global If true, decreases the global debt ceiling by _amount - */ + * @dev Decrease a collateral debt ceiling. Amount will be converted to the correct internal precision. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _amount The amount to decrease in DAI (ex. 10m DAI amount == 10000000) + * @param _global If true, decreases the global debt ceiling by _amount + */ function decreaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global) public { - require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" + require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" address _vat = vat(); - (,,,uint256 line_,) = DssVat(_vat).ilks(_ilk); + (,,, uint256 line_,) = DssVat(_vat).ilks(_ilk); setValue(_vat, _ilk, "line", line_ - _amount * RAD); - if (_global) { decreaseGlobalDebtCeiling(_amount); } + if (_global) decreaseGlobalDebtCeiling(_amount); } + /** - @dev Set a RWA collateral debt ceiling by specifying its new oracle price. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _ceiling The new debt ceiling in natural units (e.g. set 10m DAI as 10_000_000) - @param _price The new oracle price in natural units - @dev note: _price should enable DAI to be drawn over the loan period while taking into - account the configured ink amount, interest rate and liquidation ratio - @dev note: _price * WAD should be greater than or equal to the current oracle price - */ + * @dev Set a RWA collateral debt ceiling by specifying its new oracle price. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _ceiling The new debt ceiling in natural units (e.g. set 10m DAI as 10_000_000) + * @param _price The new oracle price in natural units + * @dev note: _price should enable DAI to be drawn over the loan period while taking into + * account the configured ink amount, interest rate and liquidation ratio + * @dev note: _price * WAD should be greater than or equal to the current oracle price + */ function setRWAIlkDebtCeiling(bytes32 _ilk, uint256 _ceiling, uint256 _price) public { require(_price < WAD); setIlkDebtCeiling(_ilk, _ceiling); RwaOracleLike(getChangelogAddress("MIP21_LIQUIDATION_ORACLE")).bump(_ilk, _price * WAD); updateCollateralPrice(_ilk); } + /** - @dev Set the parameters for an ilk in the "MCD_IAM_AUTO_LINE" auto-line - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _amount The Maximum value (ex. 100m DAI amount == 100000000) - @param _gap The amount of Dai per step (ex. 5m Dai == 5000000) - @param _ttl The amount of time (in seconds) - */ + * @dev Set the parameters for an ilk in the "MCD_IAM_AUTO_LINE" auto-line + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _amount The Maximum value (ex. 100m DAI amount == 100000000) + * @param _gap The amount of Dai per step (ex. 5m Dai == 5000000) + * @param _ttl The amount of time (in seconds) + */ function setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap, uint256 _ttl) public { - require(_amount < WAD); // "LibDssExec/incorrect-auto-line-amount-precision" - require(_gap < WAD); // "LibDssExec/incorrect-auto-line-gap-precision" + require(_amount < WAD); // "LibDssExec/incorrect-auto-line-amount-precision" + require(_gap < WAD); // "LibDssExec/incorrect-auto-line-gap-precision" IAMLike(autoLine()).setIlk(_ilk, _amount * RAD, _gap * RAD, _ttl); } + /** - @dev Set the debt ceiling for an ilk in the "MCD_IAM_AUTO_LINE" auto-line without updating the time values - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _amount The Maximum value (ex. 100m DAI amount == 100000000) - */ + * @dev Set the debt ceiling for an ilk in the "MCD_IAM_AUTO_LINE" auto-line without updating the time values + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _amount The Maximum value (ex. 100m DAI amount == 100000000) + */ function setIlkAutoLineDebtCeiling(bytes32 _ilk, uint256 _amount) public { address _autoLine = autoLine(); (, uint256 gap, uint48 ttl,,) = IAMLike(_autoLine).ilks(_ilk); - require(gap != 0 && ttl != 0); // "LibDssExec/auto-line-not-configured" + require(gap != 0 && ttl != 0); // "LibDssExec/auto-line-not-configured" IAMLike(_autoLine).setIlk(_ilk, _amount * RAD, uint256(gap), uint256(ttl)); } + /** - @dev Remove an ilk in the "MCD_IAM_AUTO_LINE" auto-line - @param _ilk The ilk to remove (ex. bytes32("ETH-A")) - */ + * @dev Remove an ilk in the "MCD_IAM_AUTO_LINE" auto-line + * @param _ilk The ilk to remove (ex. bytes32("ETH-A")) + */ function removeIlkFromAutoLine(bytes32 _ilk) public { IAMLike(autoLine()).remIlk(_ilk); } + /** - @dev Set a collateral minimum vault amount. Amount will be converted to the correct internal precision. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Set a collateral minimum vault amount. Amount will be converted to the correct internal precision. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + */ function setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-ilk-dust-precision" + require(_amount < WAD); // "LibDssExec/incorrect-ilk-dust-precision" (,, uint256 _hole,) = DogLike(dog()).ilks(_ilk); - require(_amount <= _hole / RAD); // Ensure ilk.hole >= dust + require(_amount <= _hole / RAD); // Ensure ilk.hole >= dust setValue(vat(), _ilk, "dust", _amount * RAD); - (bool ok,) = clip(_ilk).call(abi.encodeWithSignature("upchost()")); ok; + clip(_ilk).call(abi.encodeWithSignature("upchost()")); } + /** - @dev Set a collateral liquidation penalty. Amount will be converted to the correct internal precision. - @dev Equation used for conversion is (1 + pct / 10,000) * WAD - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 10.25% = 10.25 * 100 = 1025) - */ + * @dev Set a collateral liquidation penalty. Amount will be converted to the correct internal precision. + * @dev Equation used for conversion is (1 + pct / 10,000) * WAD + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 10.25% = 10.25 * 100 = 1025) + */ function setIlkLiquidationPenalty(bytes32 _ilk, uint256 _pct_bps) public { - require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-chop-precision" + require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-chop-precision" setValue(dog(), _ilk, "chop", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); - (bool ok,) = clip(_ilk).call(abi.encodeWithSignature("upchost()")); ok; + clip(_ilk).call(abi.encodeWithSignature("upchost()")); } + /** - @dev Set max DAI amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Set max DAI amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + */ function setIlkMaxLiquidationAmount(bytes32 _ilk, uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-ilk-hole-precision" + require(_amount < WAD); // "LibDssExec/incorrect-ilk-hole-precision" setValue(dog(), _ilk, "hole", _amount * RAD); } + /** - @dev Set a collateral liquidation ratio. Amount will be converted to the correct internal precision. - @dev Equation used for conversion is pct * RAY / 10,000 - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 150% = 150 * 100 = 15000) - */ + * @dev Set a collateral liquidation ratio. Amount will be converted to the correct internal precision. + * @dev Equation used for conversion is pct * RAY / 10,000 + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 150% = 150 * 100 = 15000) + */ function setIlkLiquidationRatio(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < 10 * BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-mat-precision" // Fails if pct >= 1000% require(_pct_bps >= BPS_ONE_HUNDRED_PCT); // the liquidation ratio has to be bigger or equal to 100% setValue(spotter(), _ilk, "mat", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } + /** - @dev Set an auction starting multiplier. Amount will be converted to the correct internal precision. - @dev Equation used for conversion is pct * RAY / 10,000 - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 1.3x starting multiplier = 130% = 13000) - */ + * @dev Set an auction starting multiplier. Amount will be converted to the correct internal precision. + * @dev Equation used for conversion is pct * RAY / 10,000 + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 1.3x starting multiplier = 130% = 13000) + */ function setStartingPriceMultiplicativeFactor(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < 10 * BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-mat-precision" // Fails if gt 10x require(_pct_bps >= BPS_ONE_HUNDRED_PCT); // fail if start price is less than OSM price @@ -731,113 +844,113 @@ library DssExecLib { } /** - @dev Set the amout of time before an auction resets. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _duration Amount of time before auction resets (in seconds). - */ + * @dev Set the amout of time before an auction resets. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _duration Amount of time before auction resets (in seconds). + */ function setAuctionTimeBeforeReset(bytes32 _ilk, uint256 _duration) public { setValue(clip(_ilk), "tail", _duration); } /** - @dev Percentage drop permitted before auction reset - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _pct_bps The pct, in basis points, of drop to permit (x100). - */ + * @dev Percentage drop permitted before auction reset + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _pct_bps The pct, in basis points, of drop to permit (x100). + */ function setAuctionPermittedDrop(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clip-cusp-value" setValue(clip(_ilk), "cusp", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } /** - @dev Percentage of tab to suck from vow to incentivize keepers. Amount will be converted to the correct internal precision. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _pct_bps The pct, in basis points, of the tab to suck. (0.01% == 1) - */ + * @dev Percentage of tab to suck from vow to incentivize keepers. Amount will be converted to the correct internal precision. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _pct_bps The pct, in basis points, of the tab to suck. (0.01% == 1) + */ function setKeeperIncentivePercent(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clip-chip-precision" setValue(clip(_ilk), "chip", wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } /** - @dev Set max DAI amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. - @param _ilk The ilk to update (ex. bytes32("ETH-A")) - @param _amount The amount to set in DAI (ex. 1000 DAI amount == 1000) - */ + * @dev Set max DAI amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. + * @param _ilk The ilk to update (ex. bytes32("ETH-A")) + * @param _amount The amount to set in DAI (ex. 1000 DAI amount == 1000) + */ function setKeeperIncentiveFlatRate(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-clip-tip-precision" setValue(clip(_ilk), "tip", _amount * RAD); } /** - @dev Sets the circuit breaker price tolerance in the clipper mom. - This is somewhat counter-intuitive, - to accept a 25% price drop, use a value of 75% - @param _clip The clipper to set the tolerance for - @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) - */ + * @dev Sets the circuit breaker price tolerance in the clipper mom. + * This is somewhat counter-intuitive, + * to accept a 25% price drop, use a value of 75% + * @param _clip The clipper to set the tolerance for + * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) + */ function setLiquidationBreakerPriceTolerance(address _clip, uint256 _pct_bps) public { - require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clippermom-price-tolerance" + require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clippermom-price-tolerance" MomLike(clipperMom()).setPriceTolerance(_clip, rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } /** - @dev Set the stability fee for a given ilk. - Many of the settings that change weekly rely on the rate accumulator - described at https://docs.makerdao.com/smart-contract-modules/rates-module - To check this yourself, use the following rate calculation (example 8%): - - $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' - - A table of rates can also be found at: - https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW - - @param _ilk The ilk to update (ex. bytes32("ETH-A") ) - @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) - @param _doDrip `true` to accumulate stability fees for the collateral - */ + * @dev Set the stability fee for a given ilk. + * Many of the settings that change weekly rely on the rate accumulator + * described at https://docs.makerdao.com/smart-contract-modules/rates-module + * To check this yourself, use the following rate calculation (example 8%): + * + * $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' + * + * A table of rates can also be found at: + * https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW + * + * @param _ilk The ilk to update (ex. bytes32("ETH-A") ) + * @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + * @param _doDrip `true` to accumulate stability fees for the collateral + */ function setIlkStabilityFee(bytes32 _ilk, uint256 _rate, bool _doDrip) public { - require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/ilk-stability-fee-out-of-bounds" + require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/ilk-stability-fee-out-of-bounds" address _jug = jug(); if (_doDrip) Drippable(_jug).drip(_ilk); setValue(_jug, _ilk, "duty", _rate); } - /*************************/ /*** Abacus Management ***/ /*************************/ /** - @dev Set the number of seconds from the start when the auction reaches zero price. - @dev Abacus:LinearDecrease only. - @param _calc The address of the LinearDecrease pricing contract - @param _duration Amount of time for auctions. - */ + * @dev Set the number of seconds from the start when the auction reaches zero price. + * @dev Abacus:LinearDecrease only. + * @param _calc The address of the LinearDecrease pricing contract + * @param _duration Amount of time for auctions. + */ function setLinearDecrease(address _calc, uint256 _duration) public { setValue(_calc, "tau", _duration); } /** - @dev Set the number of seconds for each price step. - @dev Abacus:StairstepExponentialDecrease only. - @param _calc The address of the StairstepExponentialDecrease pricing contract - @param _duration Length of time between price drops [seconds] - @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) - */ + * @dev Set the number of seconds for each price step. + * @dev Abacus:StairstepExponentialDecrease only. + * @param _calc The address of the StairstepExponentialDecrease pricing contract + * @param _duration Length of time between price drops [seconds] + * @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) + */ function setStairstepExponentialDecrease(address _calc, uint256 _duration, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/cut-too-high setValue(_calc, "cut", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); setValue(_calc, "step", _duration); } + /** - @dev Set the number of seconds for each price step. (99% cut = 1% price drop per step) - Amounts will be converted to the correct internal precision. - @dev Abacus:ExponentialDecrease only - @param _calc The address of the ExponentialDecrease pricing contract - @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) - */ + * @dev Set the number of seconds for each price step. (99% cut = 1% price drop per step) + * Amounts will be converted to the correct internal precision. + * @dev Abacus:ExponentialDecrease only + * @param _calc The address of the ExponentialDecrease pricing contract + * @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) + */ function setExponentialDecrease(address _calc, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/cut-too-high setValue(_calc, "cut", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); @@ -846,10 +959,11 @@ library DssExecLib { /*************************/ /*** Oracle Management ***/ /*************************/ + /** - @dev Allows an oracle to read prices from its source feeds - @param _oracle An OSM or LP oracle contract - */ + * @dev Allows an oracle to read prices from its source feeds + * @param _oracle An OSM or LP oracle contract + */ function whitelistOracleMedians(address _oracle) public { (bool ok, bytes memory data) = _oracle.call(abi.encodeWithSignature("orb0()")); if (ok) { @@ -862,51 +976,57 @@ library DssExecLib { addReaderToWhitelistCall(OracleLike(_oracle).src(), _oracle); } } + /** - @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. - @param _oracle Oracle Security Module (OSM) or Median core contract address - @param _reader Address to add to whitelist - */ + * @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. + * @param _oracle Oracle Security Module (OSM) or Median core contract address + * @param _reader Address to add to whitelist + */ function addReaderToWhitelist(address _oracle, address _reader) public { OracleLike(_oracle).kiss(_reader); } + /** - @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. - @param _oracle Oracle Security Module (OSM) or Median core contract address - @param _reader Address to remove from whitelist - */ + * @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. + * @param _oracle Oracle Security Module (OSM) or Median core contract address + * @param _reader Address to remove from whitelist + */ function removeReaderFromWhitelist(address _oracle, address _reader) public { OracleLike(_oracle).diss(_reader); } + /** - @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. - @param _oracle OSM or Median core contract address - @param _reader Address to add to whitelist - */ + * @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. + * @param _oracle OSM or Median core contract address + * @param _reader Address to add to whitelist + */ function addReaderToWhitelistCall(address _oracle, address _reader) public { - (bool ok,) = _oracle.call(abi.encodeWithSignature("kiss(address)", _reader)); ok; + _oracle.call(abi.encodeWithSignature("kiss(address)", _reader)); } + /** - @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. - @param _oracle Oracle Security Module (OSM) or Median core contract address - @param _reader Address to remove from whitelist - */ + * @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. + * @param _oracle Oracle Security Module (OSM) or Median core contract address + * @param _reader Address to remove from whitelist + */ function removeReaderFromWhitelistCall(address _oracle, address _reader) public { - (bool ok,) = _oracle.call(abi.encodeWithSignature("diss(address)", _reader)); ok; + _oracle.call(abi.encodeWithSignature("diss(address)", _reader)); } + /** - @dev Sets the minimum number of valid messages from whitelisted oracle feeds needed to update median price. - @param _median Median core contract address - @param _minQuorum Minimum number of valid messages from whitelisted oracle feeds needed to update median price (NOTE: MUST BE ODD NUMBER) - */ + * @dev Sets the minimum number of valid messages from whitelisted oracle feeds needed to update median price. + * @param _median Median core contract address + * @param _minQuorum Minimum number of valid messages from whitelisted oracle feeds needed to update median price (NOTE: MUST BE ODD NUMBER) + */ function setMedianWritersQuorum(address _median, uint256 _minQuorum) public { OracleLike(_median).setBar(_minQuorum); } + /** - @dev Add OSM address to OSM mom, allowing it to be frozen by governance. - @param _osm Oracle Security Module (OSM) core contract address - @param _ilk Collateral type using OSM - */ + * @dev Add OSM address to OSM mom, allowing it to be frozen by governance. + * @param _osm Oracle Security Module (OSM) core contract address + * @param _ilk Collateral type using OSM + */ function allowOSMFreeze(address _osm, bytes32 _ilk) public { MomLike(osmMom()).setOsm(_ilk, _osm); } @@ -916,11 +1036,11 @@ library DssExecLib { /*****************************/ /** - @dev Sets the target rate threshold for a dai direct deposit module (ddm) - @dev Aave: Targets the variable borrow rate - @param _ddm The address of the DDM contract - @param _pct_bps Target rate in basis points. (ex. 4% == 400) - */ + * @dev Sets the target rate threshold for a dai direct deposit module (ddm) + * @dev Aave: Targets the variable borrow rate + * @param _ddm The address of the DDM contract + * @param _pct_bps Target rate in basis points. (ex. 4% == 400) + */ function setDDMTargetInterestRate(address _ddm, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/bar-too-high setValue(_ddm, "bar", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); @@ -931,14 +1051,14 @@ library DssExecLib { /*****************************/ /** - @dev Performs basic functions and sanity checks to add a new collateral type to the MCD system - @param _ilk Collateral type key code [Ex. "ETH-A"] - @param _gem Address of token contract - @param _join Address of join adapter - @param _clip Address of liquidation agent - @param _calc Address of the pricing function - @param _pip Address of price feed - */ + * @dev Performs basic functions and sanity checks to add a new collateral type to the MCD system + * @param _ilk Collateral type key code [Ex. "ETH-A"] + * @param _gem Address of token contract + * @param _join Address of join adapter + * @param _clip Address of liquidation agent + * @param _calc Address of the pricing function + * @param _pip Address of price feed + */ function addCollateralBase( bytes32 _ilk, address _gem, @@ -946,20 +1066,23 @@ library DssExecLib { address _clip, address _calc, address _pip - ) public { + ) + public + { // Sanity checks - address _vat = vat(); - address _dog = dog(); + address _vat = vat(); + address _dog = dog(); address _spotter = spotter(); - require(JoinLike(_join).vat() == _vat); // "join-vat-not-match" - require(JoinLike(_join).ilk() == _ilk); // "join-ilk-not-match" - require(JoinLike(_join).gem() == _gem); // "join-gem-not-match" - require(JoinLike(_join).dec() == - ERC20(_gem).decimals()); // "join-dec-not-match" - require(ClipLike(_clip).vat() == _vat); // "clip-vat-not-match" - require(ClipLike(_clip).dog() == _dog); // "clip-dog-not-match" - require(ClipLike(_clip).ilk() == _ilk); // "clip-ilk-not-match" - require(ClipLike(_clip).spotter() == _spotter); // "clip-ilk-not-match" + uint256 _dec = ERC20(_gem).decimals(); + + require(JoinLike(_join).vat() == _vat); // "join-vat-not-match" + require(JoinLike(_join).ilk() == _ilk); // "join-ilk-not-match" + require(JoinLike(_join).gem() == _gem); // "join-gem-not-match" + require(JoinLike(_join).dec() == _dec); // "join-dec-not-match" + require(ClipLike(_clip).vat() == _vat); // "clip-vat-not-match" + require(ClipLike(_clip).dog() == _dog); // "clip-dog-not-match" + require(ClipLike(_clip).ilk() == _ilk); // "clip-ilk-not-match" + require(ClipLike(_clip).spotter() == _spotter); // "clip-ilk-not-match" // Set the token PIP in the Spotter setContract(spotter(), _ilk, "pip", _pip); @@ -972,8 +1095,8 @@ library DssExecLib { setContract(_clip, "calc", _calc); // Init ilk in Vat & Jug - Initializable(_vat).init(_ilk); // Vat - Initializable(jug()).init(_ilk); // Jug + Initializable(_vat).init(_ilk); + Initializable(jug()).init(_ilk); // Allow ilk Join to modify Vat registry authorize(_vat, _join); @@ -1006,7 +1129,7 @@ library DssExecLib { authorize(co.clip, clipperMom_); } - if(co.isOSM) { // If pip == OSM + if (co.isOSM) { // If pip == OSM // Allow OsmMom to access to the TOKEN OSM authorize(co.pip, osmMom()); if (co.whitelistOSM) { // If median is src in OSM @@ -1024,45 +1147,33 @@ library DssExecLib { // Set TOKEN OSM in the OsmMom for new ilk allowOSMFreeze(co.pip, co.ilk); } + // Increase the global debt ceiling by the ilk ceiling increaseGlobalDebtCeiling(co.ilkDebtCeiling); - // Set the ilk debt ceiling setIlkDebtCeiling(co.ilk, co.ilkDebtCeiling); - // Set the hole size setIlkMaxLiquidationAmount(co.ilk, co.maxLiquidationAmount); - // Set the ilk dust setIlkMinVaultAmount(co.ilk, co.minVaultAmount); - // Set the ilk liquidation penalty setIlkLiquidationPenalty(co.ilk, co.liquidationPenalty); - // Set the ilk stability fee setIlkStabilityFee(co.ilk, co.ilkStabilityFee, true); - // Set the auction starting price multiplier setStartingPriceMultiplicativeFactor(co.ilk, co.startingPriceFactor); - // Set the amount of time before an auction resets. setAuctionTimeBeforeReset(co.ilk, co.auctionDuration); - // Set the allowed auction drop percentage before reset setAuctionPermittedDrop(co.ilk, co.permittedDrop); - // Set the ilk min collateralization ratio setIlkLiquidationRatio(co.ilk, co.liquidationRatio); - // Set the price tolerance in the liquidation circuit breaker setLiquidationBreakerPriceTolerance(co.clip, co.breakerTolerance); - // Set a flat rate for the keeper reward setKeeperIncentiveFlatRate(co.ilk, co.kprFlatReward); - // Set the percentage of liquidation as keeper award setKeeperIncentivePercent(co.ilk, co.kprPctReward); - // Update ilk spot value in Vat updateCollateralPrice(co.ilk); } @@ -1070,13 +1181,14 @@ library DssExecLib { /***************/ /*** Payment ***/ /***************/ + /** - @dev Send a payment in ERC20 DAI from the surplus buffer. - @param _target The target address to send the DAI to. - @param _amount The amount to send in DAI (ex. 10m DAI amount == 10000000) - */ + * @dev Send a payment in ERC20 DAI from the surplus buffer. + * @param _target The target address to send the DAI to. + * @param _amount The amount to send in DAI (ex. 10m DAI amount == 10000000) + */ function sendPaymentFromSurplusBuffer(address _target, uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" + require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" DssVat(vat()).suck(vow(), address(this), _amount * RAD); JoinLike(daiJoin()).exit(_target, _amount * WAD); } @@ -1084,35 +1196,71 @@ library DssExecLib { /************/ /*** Misc ***/ /************/ + /** - @dev Initiate linear interpolation on an administrative value over time. - @param _name The label for this lerp instance - @param _target The target contract - @param _what The target parameter to adjust - @param _startTime The time for this lerp - @param _start The start value for the target parameter - @param _end The end value for the target parameter - @param _duration The duration of the interpolation - */ - function linearInterpolation(bytes32 _name, address _target, bytes32 _what, uint256 _startTime, uint256 _start, uint256 _end, uint256 _duration) public returns (address) { - address lerp = LerpFactoryLike(lerpFab()).newLerp(_name, _target, _what, _startTime, _start, _end, _duration); + * @dev Initiate linear interpolation on an administrative value over time. + * @param _name The label for this lerp instance + * @param _target The target contract + * @param _what The target parameter to adjust + * @param _startTime The time for this lerp + * @param _start The start value for the target parameter + * @param _end The end value for the target parameter + * @param _duration The duration of the interpolation + */ + function linearInterpolation( + bytes32 _name, + address _target, + bytes32 _what, + uint256 _startTime, + uint256 _start, + uint256 _end, + uint256 _duration + ) public returns (address) { + address lerp = LerpFactoryLike(lerpFab()).newLerp( + _name, + _target, + _what, + _startTime, + _start, + _end, + _duration + ); Authorizable(_target).rely(lerp); LerpLike(lerp).tick(); return lerp; } + /** - @dev Initiate linear interpolation on an administrative value over time. - @param _name The label for this lerp instance - @param _target The target contract - @param _ilk The ilk to target - @param _what The target parameter to adjust - @param _startTime The time for this lerp - @param _start The start value for the target parameter - @param _end The end value for the target parameter - @param _duration The duration of the interpolation - */ - function linearInterpolation(bytes32 _name, address _target, bytes32 _ilk, bytes32 _what, uint256 _startTime, uint256 _start, uint256 _end, uint256 _duration) public returns (address) { - address lerp = LerpFactoryLike(lerpFab()).newIlkLerp(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); + * @dev Initiate linear interpolation on an administrative value over time. + * @param _name The label for this lerp instance + * @param _target The target contract + * @param _ilk The ilk to target + * @param _what The target parameter to adjust + * @param _startTime The time for this lerp + * @param _start The start value for the target parameter + * @param _end The end value for the target parameter + * @param _duration The duration of the interpolation + */ + function linearInterpolation( + bytes32 _name, + address _target, + bytes32 _ilk, + bytes32 _what, + uint256 _startTime, + uint256 _start, + uint256 _end, + uint256 _duration + ) public returns (address) { + address lerp = LerpFactoryLike(lerpFab()).newIlkLerp( + _name, + _target, + _ilk, + _what, + _startTime, + _start, + _end, + _duration + ); Authorizable(_target).rely(lerp); LerpLike(lerp).tick(); return lerp; diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index c12f974..66dd5b9 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -584,7 +584,7 @@ contract ActionTest is Test { assertEq(pot.dsr(), rate); } - function test_setSuruplusAuctionAmount() public { + function test_setSurplusAuctionAmount() public { action.setSurplusAuctionAmount_test(100 * THOUSAND); assertEq(vow.bump(), 100 * THOUSAND * RAD); } From a3ed6f0890595400adef0192fdc09bcef56c22af Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 28 Apr 2025 17:18:56 -0300 Subject: [PATCH 06/61] refactor: replace old Flap actions with FlapUniV2 ones --- README.md | 5 +---- src/test/DssAction.t.sol | 28 ++++++++++++---------------- src/test/DssTestAction.sol | 12 ++---------- 3 files changed, 15 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 7c1292c..ac4fc85 100644 --- a/README.md +++ b/README.md @@ -125,11 +125,8 @@ Below is an outline of all functions used in the library. - `increaseGlobalDebtCeiling(uint256 _amount)`: Increase the global debt ceiling. - `decreaseGlobalDebtCeiling(uint256 _amount)`: Decrease the global debt ceiling. - `setDSR(uint256 _rate, bool _doDrip)`: Set the Dai Savings Rate. -- `setSurplusAuctionAmount(uint256 _amount)`: Set the DAI amount for system surplus auctions. +- `setSurplusAuctionMinPriceThreshold(uint256 _pct_bps)`: Set the relative multiplier of the reference price to insist in the swap. For example, ``9_80 bps` allows a 2% drop in the reference price. - `setSurplusBuffer(uint256 _amount)`: Set the DAI amount for system surplus buffer, must be exceeded before surplus auctions start. -- `setMinSurplusAuctionBidIncrease(uint256 _pct_bps)`: Set minimum bid increase for surplus auctions. -- `setSurplusAuctionBidDuration(uint256 _length)`: Set bid duration for surplus auctions. -- `setSurplusAuctionDuration(uint256 _length)`: Set total auction duration for surplus auctions. - `setDebtAuctionDelay(uint256 _length)`: Set the number of seconds that pass before system debt is auctioned for MKR tokens. - `setDebtAuctionDAIAmount(uint256 _amount)`: Set the DAI amount for system debt to be covered by each debt auction. - `setDebtAuctionMKRAmount(uint256 _amount)`: Set the starting MKR amount to be auctioned off to cover system debt in debt auctions. diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 66dd5b9..41cf125 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -69,6 +69,10 @@ interface DDMLike { function rely(address) external; } +interface FlapUniV2Like { + function want() external view returns (uint256); +} + contract ActionTest is Test { ChainlogLike LOG = ChainlogLike(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); @@ -81,7 +85,7 @@ contract ActionTest is Test { DaiAbstract daiToken; DaiJoinAbstract daiJoin; SpotAbstract spot; - FlapAbstract flap; + FlapUniV2Like flap; FlopAbstract flop; DSTokenAbstract gov; IlkRegistryAbstract reg; @@ -112,7 +116,7 @@ contract ActionTest is Test { uint256 constant public RAY = 10 ** 27; uint256 constant public RAD = 10 ** 45; - uint256 immutable START_TIME = block.timestamp; + uint256 START_TIME; string constant doc = "QmcniBv7UQ4gGPQQW2BwbD4ZZHzN3o3tPuNLZCbBchd1zh"; address constant UNIV2ORACLE_FAB = 0xc968B955BCA6c2a3c828d699cCaCbFDC02402D89; @@ -120,6 +124,8 @@ contract ActionTest is Test { function setUp() public { vm.createSelectFork("mainnet"); + START_TIME = block.timestamp; + vat = VatAbstract( LOG.getAddress("MCD_VAT")); end = EndAbstract( LOG.getAddress("MCD_END")); vow = VowAbstract( LOG.getAddress("MCD_VOW")); @@ -129,7 +135,7 @@ contract ActionTest is Test { daiToken = DaiAbstract( LOG.getAddress("MCD_DAI")); daiJoin = DaiJoinAbstract( LOG.getAddress("MCD_JOIN_DAI")); spot = SpotAbstract( LOG.getAddress("MCD_SPOT")); - flap = FlapAbstract( LOG.getAddress("MCD_FLAP")); + flap = FlapUniV2Like( LOG.getAddress("MCD_FLAP")); flop = FlopAbstract( LOG.getAddress("MCD_FLOP")); gov = DSTokenAbstract( LOG.getAddress("MCD_GOV")); reg = IlkRegistryAbstract( LOG.getAddress("ILK_REGISTRY")); @@ -594,19 +600,9 @@ contract ActionTest is Test { assertEq(vow.hump(), 1 * MILLION * RAD); } - function test_setMinSurplusAuctionBidIncrease() public { - action.setMinSurplusAuctionBidIncrease_test(525); // 5.25% - assertEq(flap.beg(), 1 ether + 5.25 ether / 100); // (1 + pct) * WAD - } - - function test_setSurplusAuctionBidDuration() public { - action.setSurplusAuctionBidDuration_test(12 hours); - assertEq(uint256(flap.ttl()), 12 hours); - } - - function test_setSurplusAuctionDuration() public { - action.setSurplusAuctionDuration_test(12 hours); - assertEq(uint256(flap.tau()), 12 hours); + function test_setSurplusAuctionMinPriceThreshold() public { + action.setSurplusAuctionMinPriceThreshold_test(75_00); + assertEq(flap.want(), 75 * WAD / 100); } function test_setDebtAuctionDelay() public { diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index 9fd368d..3ad03dc 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -150,16 +150,8 @@ contract DssTestAction is DssAction { DssExecLib.setSurplusBuffer(amount); } - function setMinSurplusAuctionBidIncrease_test(uint256 pct_bps) public { - DssExecLib.setMinSurplusAuctionBidIncrease(pct_bps); - } - - function setSurplusAuctionBidDuration_test(uint256 duration) public { - DssExecLib.setSurplusAuctionBidDuration(duration); - } - - function setSurplusAuctionDuration_test(uint256 duration) public { - DssExecLib.setSurplusAuctionDuration(duration); + function setSurplusAuctionMinPriceThreshold_test(uint256 _pct_bps) public { + DssExecLib.setSurplusAuctionMinPriceThreshold(_pct_bps); } function setDebtAuctionDelay_test(uint256 duration) public { From 07d695a27a6aae80436fd5fa4e4cdeabffe2b4c8 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 28 Apr 2025 17:34:09 -0300 Subject: [PATCH 07/61] refactor: change comment style to reduce the total number of lines --- src/DssExecLib.sol | 652 ++++++++++++++++++--------------------------- 1 file changed, 260 insertions(+), 392 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index a64eeac..4dbcbcb 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -172,12 +172,18 @@ library DssExecLib { /*** Math Functions ***/ /**********************/ - /// @dev WAD division + /// @dev WAD division. The final result is rounded to the nearest integer. + /// Examples: + /// wdiv(1, 2) = 0.5 * WAD = 500000000000000000 + /// wdiv(2, 3) = 0.666... * WAD = 666666666666666667 function wdiv(uint256 x, uint256 y) internal pure returns (uint256 z) { z = (x * WAD + y / 2) / y; } - /// @dev RAY division + /// @dev RAY division. The final result is rounded to the nearest integer. + /// Examples: + /// rdiv(1, 2) = 0.5 * WAD = 500000000000000000000000000 + /// rdiv(2, 3) = 0.666... * RAY = 666666666666666666666666667 function rdiv(uint256 x, uint256 y) internal pure returns (uint256 z) { z = (x * RAY + y / 2) / y; } @@ -293,35 +299,28 @@ library DssExecLib { /****************************/ /*** Changelog Management ***/ /****************************/ - /** - * @dev Set an address in the MCD on-chain changelog. - * @param _key Access key for the address (e.g. "MCD_VAT") - * @param _val The address associated with the _key - */ + + /// @dev Set an address in the MCD on-chain changelog. + /// @param _key Access key for the address (e.g. "MCD_VAT") + /// @param _val The address associated with the _key function setChangelogAddress(bytes32 _key, address _val) public { ChainlogLike(LOG).setAddress(_key, _val); } - /** - * @dev Set version in the MCD on-chain changelog. - * @param _version Changelog version (e.g. "1.1.2") - */ + /// @dev Set version in the MCD on-chain changelog. + /// @param _version Changelog version (e.g. "1.1.2") function setChangelogVersion(string memory _version) public { ChainlogLike(LOG).setVersion(_version); } - /** - * @dev Set IPFS hash of IPFS changelog in MCD on-chain changelog. - * @param _ipfsHash IPFS hash (e.g. "QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW") - */ + /// @dev Set IPFS hash of IPFS changelog in MCD on-chain changelog. + /// @param _ipfsHash IPFS hash (e.g. "QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW") function setChangelogIPFS(string memory _ipfsHash) public { ChainlogLike(LOG).setIPFS(_ipfsHash); } - /** - * @dev Set SHA256 hash in MCD on-chain changelog. - * @param _SHA256Sum SHA256 hash (e.g. "e42dc9d043a57705f3f097099e6b2de4230bca9a020c797508da079f9079e35b") - */ + /// @dev Set SHA256 hash in MCD on-chain changelog. + /// @param _SHA256Sum SHA256 hash (e.g. "e42dc9d043a57705f3f097099e6b2de4230bca9a020c797508da079f9079e35b") function setChangelogSHA256(string memory _SHA256Sum) public { ChainlogLike(LOG).setSha256sum(_SHA256Sum); } @@ -329,48 +328,36 @@ library DssExecLib { /**********************/ /*** Authorizations ***/ /**********************/ - /** - * - */ - /** - * @dev Give an address authorization to perform auth actions on the contract. - * @param _base The address of the contract where the authorization will be set - * @param _ward Address to be authorized - */ + + /// @dev Give an address authorization to perform auth actions on the contract. + /// @param _base The address of the contract where the authorization will be set + /// @param _ward Address to be authorized function authorize(address _base, address _ward) public { Authorizable(_base).rely(_ward); } - /** - * @dev Revoke contract authorization from an address. - * @param _base The address of the contract where the authorization will be revoked - * @param _ward Address to be deauthorized - */ + /// @dev Revoke contract authorization from an address. + /// @param _base The address of the contract where the authorization will be revoked + /// @param _ward Address to be deauthorized function deauthorize(address _base, address _ward) public { Authorizable(_base).deny(_ward); } - /** - * @dev Give an address authorization to perform auth actions on the contract. - * @param _base The address of the contract with a `setAuthority` pattern - * @param _authority Address to be authorized - */ + /// @dev Give an address authorization to perform auth actions on the contract. + /// @param _base The address of the contract with a `setAuthority` pattern + /// @param _authority Address to be authorized function setAuthority(address _base, address _authority) public { Authorizable(_base).setAuthority(_authority); } - /** - * @dev Delegate vat authority to the specified address. - * @param _usr Address to be authorized - */ + /// @dev Delegate vat authority to the specified address. + /// @param _usr Address to be authorized function delegateVat(address _usr) public { DssVat(vat()).hope(_usr); } - /** - * @dev Revoke vat authority to the specified address. - * @param _usr Address to be deauthorized - */ + /// @dev Revoke vat authority to the specified address. + /// @param _usr Address to be deauthorized function undelegateVat(address _usr) public { DssVat(vat()).nope(_usr); } @@ -379,12 +366,10 @@ library DssExecLib { /*** OfficeHours Management ***/ /******************************/ - /** - * @dev Returns true if a time is within office hours range - * @param _ts The timestamp to check, usually block.timestamp - * @param _officeHours true if office hours is enabled. - * @return true if time is in castable range - */ + /// @dev Returns true if a time is within office hours range + /// @param _ts The timestamp to check, usually block.timestamp + /// @param _officeHours true if office hours is enabled. + /// @return true if time is in castable range function canCast(uint40 _ts, bool _officeHours) public pure returns (bool) { if (_officeHours) { uint256 day = (_ts / 1 days + 3) % 7; @@ -395,13 +380,11 @@ library DssExecLib { return true; } - /** - * @dev Calculate the next available cast time in epoch seconds - * @param _eta The scheduled time of the spell plus the pause delay - * @param _ts The current timestamp, usually block.timestamp - * @param _officeHours true if office hours is enabled. - * @return castTime The next available cast timestamp - */ + /// @dev Calculate the next available cast time in epoch seconds + /// @param _eta The scheduled time of the spell plus the pause delay + /// @param _ts The current timestamp, usually block.timestamp + /// @param _officeHours true if office hours is enabled. + /// @return castTime The next available cast timestamp function nextCastTime(uint40 _eta, uint40 _ts, bool _officeHours) public pure returns (uint256 castTime) { require(_eta != 0); // "DssExecLib/invalid eta" require(_ts != 0); // "DssExecLib/invalid ts" @@ -433,17 +416,14 @@ library DssExecLib { /**************************/ /*** Accumulating Rates ***/ /**************************/ - /** - * @dev Update rate accumulation for the Dai Savings Rate (DSR). - */ + + /// @dev Update rate accumulation for the Dai Savings Rate (DSR). function accumulateDSR() public { Drippable(pot()).drip(); } - /** - * @dev Update rate accumulation for the stability fees of a given collateral type. - * @param _ilk Collateral type - */ + /// @dev Update rate accumulation for the stability fees of a given collateral type. + /// @param _ilk Collateral type function accumulateCollateralStabilityFees(bytes32 _ilk) public { Drippable(jug()).drip(_ilk); } @@ -451,10 +431,9 @@ library DssExecLib { /*********************/ /*** Price Updates ***/ /*********************/ - /** - * @dev Update price of a given collateral type. - * @param _ilk Collateral type - */ + + /// @dev Update price of a given collateral type. + /// @param _ilk Collateral type function updateCollateralPrice(bytes32 _ilk) public { Pricing(spotter()).poke(_ilk); } @@ -462,44 +441,37 @@ library DssExecLib { /****************************/ /*** System Configuration ***/ /****************************/ - /** - * @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in Clip) - * @param _base The address of the contract where the new contract address will be filed - * @param _what Name of contract to file - * @param _addr Address of contract to file - */ + + /// @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in Clip) + /// @param _base The address of the contract where the new contract address will be filed + /// @param _what Name of contract to file + /// @param _addr Address of contract to file function setContract(address _base, bytes32 _what, address _addr) public { Fileable(_base).file(_what, _addr); } - /** - * @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in a Clip) - * @param _base The address of the contract where the new contract address will be filed - * @param _ilk Collateral type - * @param _what Name of contract to file - * @param _addr Address of contract to file - */ + /// @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in a Clip) + /// @param _base The address of the contract where the new contract address will be filed + /// @param _ilk Collateral type + /// @param _what Name of contract to file + /// @param _addr Address of contract to file function setContract(address _base, bytes32 _ilk, bytes32 _what, address _addr) public { Fileable(_base).file(_ilk, _what, _addr); } - /** - * @dev Set a value in a contract, via a governance authorized File pattern. - * @param _base The address of the contract where the new contract address will be filed - * @param _what Name of tag for the value (e.x. "Line") - * @param _amt The value to set or update - */ + /// @dev Set a value in a contract, via a governance authorized File pattern. + /// @param _base The address of the contract where the new contract address will be filed + /// @param _what Name of tag for the value (e.x. "Line") + /// @param _amt The value to set or update function setValue(address _base, bytes32 _what, uint256 _amt) public { Fileable(_base).file(_what, _amt); } - /** - * @dev Set an ilk-specific value in a contract, via a governance authorized File pattern. - * @param _base The address of the contract where the new value will be filed - * @param _ilk Collateral type - * @param _what Name of tag for the value (e.x. "Line") - * @param _amt The value to set or update - */ + /// @dev Set an ilk-specific value in a contract, via a governance authorized File pattern. + /// @param _base The address of the contract where the new value will be filed + /// @param _ilk Collateral type + /// @param _what Name of tag for the value (e.x. "Line") + /// @param _amt The value to set or update function setValue(address _base, bytes32 _ilk, bytes32 _what, uint256 _amt) public { Fileable(_base).file(_ilk, _what, _amt); } @@ -508,187 +480,149 @@ library DssExecLib { /*** System Risk Parameters ***/ /******************************/ - /** - * @dev Set the global debt ceiling. Amount will be converted to the correct internal precision. - * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Set the global debt ceiling. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setGlobalDebtCeiling(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-global-Line-precision" setValue(vat(), "Line", _amount * RAD); } - /** - * @dev Increase the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. - * @param _amount The amount to add in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Increase the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. + /// @param _amount The amount to add in DAI (ex. 10m DAI amount == 10000000) function increaseGlobalDebtCeiling(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-Line-increase-precision" address _vat = vat(); setValue(_vat, "Line", DssVat(_vat).Line() + _amount * RAD); } - /** - * @dev Decrease the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. - * @param _amount The amount to reduce in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Decrease the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. + /// @param _amount The amount to reduce in DAI (ex. 10m DAI amount == 10000000) function decreaseGlobalDebtCeiling(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-Line-decrease-precision" address _vat = vat(); setValue(_vat, "Line", DssVat(_vat).Line() - _amount * RAD); } - /** - * @dev Set the Dai Savings Rate. See: docs/rates.txt - * @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) - * @param _doDrip `true` to accumulate interest owed - */ + /// @dev Set the Dai Savings Rate. See: docs/rates.txt + /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + /// @param _doDrip `true` to accumulate interest owed function setDSR(uint256 _rate, bool _doDrip) public { require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/dsr-out-of-bounds" if (_doDrip) Drippable(pot()).drip(); setValue(pot(), "dsr", _rate); } - /** - * @dev Set the DAI amount for system surplus auctions. Amount will be converted to the correct internal precision. - * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Set the DAI amount for system surplus auctions. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setSurplusAuctionAmount(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-vow-bump-precision" setValue(vow(), "bump", _amount * RAD); } - /** - * @dev Set the DAI amount for system surplus buffer, must be exceeded before surplus auctions start. Amount will be converted to the correct internal precision. - * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Set the DAI amount for system surplus buffer, must be exceeded before surplus auctions start. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setSurplusBuffer(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-vow-hump-precision" setValue(vow(), "hump", _amount * RAD); } - /** - * @dev Set the minimum price threshold for surplus auctions. Amount will be converted to the correct internal precision. - * @dev Equation used for conversion is (pct / 10,000) * WAD - * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) - */ + /// @dev Set the minimum price threshold for surplus auctions. Amount will be converted to the correct internal precision. + /// @dev Equation used for conversion is (pct / 10,000) * WAD + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) function setSurplusAuctionMinPriceThreshold(uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flap-beg-precision" setValue(flap(), "want", wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * @dev Set the number of seconds that pass before system debt is auctioned for MKR tokens. - * @param _duration Duration in seconds - */ + /// @dev Set the number of seconds that pass before system debt is auctioned for MKR tokens. + /// @param _duration Duration in seconds function setDebtAuctionDelay(uint256 _duration) public { setValue(vow(), "wait", _duration); } - /** - * @dev Set the DAI amount for system debt to be covered by each debt auction. Amount will be converted to the correct internal precision. - * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Set the DAI amount for system debt to be covered by each debt auction. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setDebtAuctionDAIAmount(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-vow-sump-precision" setValue(vow(), "sump", _amount * RAD); } - /** - * @dev Set the starting MKR amount to be auctioned off to cover system debt in debt auctions. Amount will be converted to the correct internal precision. - * @param _amount The amount to set in MKR (ex. 250 MKR amount == 250) - */ + /// @dev Set the starting MKR amount to be auctioned off to cover system debt in debt auctions. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set in MKR (ex. 250 MKR amount == 250) function setDebtAuctionMKRAmount(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-vow-dump-precision" setValue(vow(), "dump", _amount * WAD); } - /** - * @dev Set minimum bid increase for debt auctions. Amount will be converted to the correct internal precision. - * @dev Equation used for conversion is (1 + pct / 10,000) * WAD - * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) - */ + /// @dev Set minimum bid increase for debt auctions. Amount will be converted to the correct internal precision. + /// @dev Equation used for conversion is (1 + pct / 10,000) * WAD + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) function setMinDebtAuctionBidIncrease(uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flop-beg-precision" setValue(flop(), "beg", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * @dev Set bid duration for debt auctions. - * @param _duration Amount of time for bids. (seconds) - */ + /// @dev Set bid duration for debt auctions. + /// @param _duration Amount of time for bids. (seconds) function setDebtAuctionBidDuration(uint256 _duration) public { require(_duration < type(uint48).max); // "LibDssExec/incorrect-flop-ttl-precision" setValue(flop(), "ttl", _duration); } - /** - * @dev Set total auction duration for debt auctions. - * @param _duration Amount of time for auctions. (seconds) - */ + /// @dev Set total auction duration for debt auctions. + /// @param _duration Amount of time for auctions. (seconds) function setDebtAuctionDuration(uint256 _duration) public { require(_duration < type(uint48).max); // "LibDssExec/incorrect-flop-tau-precision" setValue(flop(), "tau", _duration); } - /** - * @dev Set the rate of increasing amount of MKR out for auction during debt auctions. Amount will be converted to the correct internal precision. - * @dev MKR amount is increased by this rate every "tick" (if auction duration has passed and no one has bid on the MKR) - * @dev Equation used for conversion is (1 + pct / 10,000) * WAD - * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) - */ + /// @dev Set the rate of increasing amount of MKR out for auction during debt auctions. Amount will be converted to the correct internal precision. + /// @dev MKR amount is increased by this rate every "tick" (if auction duration has passed and no one has bid on the MKR) + /// @dev Equation used for conversion is (1 + pct / 10,000) * WAD + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) function setDebtAuctionMKRIncreaseRate(uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flop-pad-precision" setValue(flop(), "pad", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * @dev Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. - * @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) - */ + /// @dev Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) function setMaxTotalDAILiquidationAmount(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-dog-Hole-precision" setValue(dog(), "Hole", _amount * RAD); } - /** - * @dev (LIQ 1.2) Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. - * @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) - */ + /// @dev (LIQ 1.2) Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) function setMaxTotalDAILiquidationAmountLEGACY(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-cat-box-amount" setValue(cat(), "box", _amount * RAD); } - /** - * @dev Set the duration of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. - * @param _duration Time in seconds to set for ES processing time - */ + /// @dev Set the duration of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. + /// @param _duration Time in seconds to set for ES processing time function setEmergencyShutdownProcessingTime(uint256 _duration) public { setValue(end(), "wait", _duration); } - /** - * @dev Set the global stability fee (is not typically used, currently is 0). - * Many of the settings that change weekly rely on the rate accumulator - * described at https://docs.makerdao.com/smart-contract-modules/rates-module - * To check this yourself, use the following rate calculation (example 8%): - * - * $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' - * - * A table of rates can also be found at: - * https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW - * @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) - */ + /// @dev Set the global stability fee (is not typically used, currently is 0). + /// Many of the settings that change weekly rely on the rate accumulator + /// described at https://docs.makerdao.com/smart-contract-modules/rates-module + /// To check this yourself, use the following rate calculation (example 8%): + /// + /// $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' + /// + /// A table of rates can also be found at: + /// https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW + /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) function setGlobalStabilityFee(uint256 _rate) public { require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/global-stability-fee-out-of-bounds" setValue(jug(), "base", _rate); } - /** - * @dev Set the value of DAI in the reference asset (e.g. $1 per DAI). Value will be converted to the correct internal precision. - * @dev Equation used for conversion is value * RAY / 1000 - * @param _value The value to set as integer (x1000) (ex. $1.025 == 1025) - */ + /// @dev Set the value of DAI in the reference asset (e.g. $1 per DAI). Value will be converted to the correct internal precision. + /// @dev Equation used for conversion is value * RAY / 1000 + /// @param _value The value to set as integer (x1000) (ex. $1.025 == 1025) function setDAIReferenceValue(uint256 _value) public { require(_value < WAD); // "LibDssExec/incorrect-par-precision" setValue(spotter(), "par", rdiv(_value, 1000)); @@ -697,22 +631,18 @@ library DssExecLib { /*****************************/ /*** Collateral Management ***/ /*****************************/ - /** - * @dev Set a collateral debt ceiling. Amount will be converted to the correct internal precision. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Set a collateral debt ceiling. Amount will be converted to the correct internal precision. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setIlkDebtCeiling(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" setValue(vat(), _ilk, "line", _amount * RAD); } - /** - * @dev Increase a collateral debt ceiling. Amount will be converted to the correct internal precision. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _amount The amount to increase in DAI (ex. 10m DAI amount == 10000000) - * @param _global If true, increases the global debt ceiling by _amount - */ + /// @dev Increase a collateral debt ceiling. Amount will be converted to the correct internal precision. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The amount to increase in DAI (ex. 10m DAI amount == 10000000) + /// @param _global If true, increases the global debt ceiling by _amount function increaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" address _vat = vat(); @@ -721,12 +651,10 @@ library DssExecLib { if (_global) increaseGlobalDebtCeiling(_amount); } - /** - * @dev Decrease a collateral debt ceiling. Amount will be converted to the correct internal precision. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _amount The amount to decrease in DAI (ex. 10m DAI amount == 10000000) - * @param _global If true, decreases the global debt ceiling by _amount - */ + /// @dev Decrease a collateral debt ceiling. Amount will be converted to the correct internal precision. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The amount to decrease in DAI (ex. 10m DAI amount == 10000000) + /// @param _global If true, decreases the global debt ceiling by _amount function decreaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" address _vat = vat(); @@ -735,15 +663,13 @@ library DssExecLib { if (_global) decreaseGlobalDebtCeiling(_amount); } - /** - * @dev Set a RWA collateral debt ceiling by specifying its new oracle price. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _ceiling The new debt ceiling in natural units (e.g. set 10m DAI as 10_000_000) - * @param _price The new oracle price in natural units - * @dev note: _price should enable DAI to be drawn over the loan period while taking into - * account the configured ink amount, interest rate and liquidation ratio - * @dev note: _price * WAD should be greater than or equal to the current oracle price - */ + /// @dev Set a RWA collateral debt ceiling by specifying its new oracle price. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ceiling The new debt ceiling in natural units (e.g. set 10m DAI as 10_000_000) + /// @param _price The new oracle price in natural units + /// @dev note: _price should enable DAI to be drawn over the loan period while taking into + /// account the configured ink amount, interest rate and liquidation ratio + /// @dev note: _price * WAD should be greater than or equal to the current oracle price function setRWAIlkDebtCeiling(bytes32 _ilk, uint256 _ceiling, uint256 _price) public { require(_price < WAD); setIlkDebtCeiling(_ilk, _ceiling); @@ -751,24 +677,20 @@ library DssExecLib { updateCollateralPrice(_ilk); } - /** - * @dev Set the parameters for an ilk in the "MCD_IAM_AUTO_LINE" auto-line - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _amount The Maximum value (ex. 100m DAI amount == 100000000) - * @param _gap The amount of Dai per step (ex. 5m Dai == 5000000) - * @param _ttl The amount of time (in seconds) - */ + /// @dev Set the parameters for an ilk in the "MCD_IAM_AUTO_LINE" auto-line + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The Maximum value (ex. 100m DAI amount == 100000000) + /// @param _gap The amount of Dai per step (ex. 5m Dai == 5000000) + /// @param _ttl The amount of time (in seconds) function setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap, uint256 _ttl) public { require(_amount < WAD); // "LibDssExec/incorrect-auto-line-amount-precision" require(_gap < WAD); // "LibDssExec/incorrect-auto-line-gap-precision" IAMLike(autoLine()).setIlk(_ilk, _amount * RAD, _gap * RAD, _ttl); } - /** - * @dev Set the debt ceiling for an ilk in the "MCD_IAM_AUTO_LINE" auto-line without updating the time values - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _amount The Maximum value (ex. 100m DAI amount == 100000000) - */ + /// @dev Set the debt ceiling for an ilk in the "MCD_IAM_AUTO_LINE" auto-line without updating the time values + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The Maximum value (ex. 100m DAI amount == 100000000) function setIlkAutoLineDebtCeiling(bytes32 _ilk, uint256 _amount) public { address _autoLine = autoLine(); (, uint256 gap, uint48 ttl,,) = IAMLike(_autoLine).ilks(_ilk); @@ -776,19 +698,15 @@ library DssExecLib { IAMLike(_autoLine).setIlk(_ilk, _amount * RAD, uint256(gap), uint256(ttl)); } - /** - * @dev Remove an ilk in the "MCD_IAM_AUTO_LINE" auto-line - * @param _ilk The ilk to remove (ex. bytes32("ETH-A")) - */ + /// @dev Remove an ilk in the "MCD_IAM_AUTO_LINE" auto-line + /// @param _ilk The ilk to remove (ex. bytes32("ETH-A")) function removeIlkFromAutoLine(bytes32 _ilk) public { IAMLike(autoLine()).remIlk(_ilk); } - /** - * @dev Set a collateral minimum vault amount. Amount will be converted to the correct internal precision. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Set a collateral minimum vault amount. Amount will be converted to the correct internal precision. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-dust-precision" (,, uint256 _hole,) = DogLike(dog()).ilks(_ilk); @@ -797,118 +715,98 @@ library DssExecLib { clip(_ilk).call(abi.encodeWithSignature("upchost()")); } - /** - * @dev Set a collateral liquidation penalty. Amount will be converted to the correct internal precision. - * @dev Equation used for conversion is (1 + pct / 10,000) * WAD - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 10.25% = 10.25 * 100 = 1025) - */ + /// @dev Set a collateral liquidation penalty. Amount will be converted to the correct internal precision. + /// @dev Equation used for conversion is (1 + pct / 10,000) * WAD + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 10.25% = 10.25 * 100 = 1025) function setIlkLiquidationPenalty(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-chop-precision" setValue(dog(), _ilk, "chop", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); clip(_ilk).call(abi.encodeWithSignature("upchost()")); } - /** - * @dev Set max DAI amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Set max DAI amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setIlkMaxLiquidationAmount(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-hole-precision" setValue(dog(), _ilk, "hole", _amount * RAD); } - /** - * @dev Set a collateral liquidation ratio. Amount will be converted to the correct internal precision. - * @dev Equation used for conversion is pct * RAY / 10,000 - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 150% = 150 * 100 = 15000) - */ + /// @dev Set a collateral liquidation ratio. Amount will be converted to the correct internal precision. + /// @dev Equation used for conversion is pct * RAY / 10,000 + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 150% = 150 * 100 = 15000) function setIlkLiquidationRatio(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < 10 * BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-mat-precision" // Fails if pct >= 1000% require(_pct_bps >= BPS_ONE_HUNDRED_PCT); // the liquidation ratio has to be bigger or equal to 100% setValue(spotter(), _ilk, "mat", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * @dev Set an auction starting multiplier. Amount will be converted to the correct internal precision. - * @dev Equation used for conversion is pct * RAY / 10,000 - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 1.3x starting multiplier = 130% = 13000) - */ + /// @dev Set an auction starting multiplier. Amount will be converted to the correct internal precision. + /// @dev Equation used for conversion is pct * RAY / 10,000 + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 1.3x starting multiplier = 130% = 13000) function setStartingPriceMultiplicativeFactor(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < 10 * BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-mat-precision" // Fails if gt 10x require(_pct_bps >= BPS_ONE_HUNDRED_PCT); // fail if start price is less than OSM price setValue(clip(_ilk), "buf", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * @dev Set the amout of time before an auction resets. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _duration Amount of time before auction resets (in seconds). - */ + /// @dev Set the amout of time before an auction resets. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _duration Amount of time before auction resets (in seconds). function setAuctionTimeBeforeReset(bytes32 _ilk, uint256 _duration) public { setValue(clip(_ilk), "tail", _duration); } - /** - * @dev Percentage drop permitted before auction reset - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _pct_bps The pct, in basis points, of drop to permit (x100). - */ + /// @dev Percentage drop permitted before auction reset + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _pct_bps The pct, in basis points, of drop to permit (x100). function setAuctionPermittedDrop(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clip-cusp-value" setValue(clip(_ilk), "cusp", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * @dev Percentage of tab to suck from vow to incentivize keepers. Amount will be converted to the correct internal precision. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _pct_bps The pct, in basis points, of the tab to suck. (0.01% == 1) - */ + /// @dev Percentage of tab to suck from vow to incentivize keepers. Amount will be converted to the correct internal precision. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _pct_bps The pct, in basis points, of the tab to suck. (0.01% == 1) function setKeeperIncentivePercent(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clip-chip-precision" setValue(clip(_ilk), "chip", wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * @dev Set max DAI amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. - * @param _ilk The ilk to update (ex. bytes32("ETH-A")) - * @param _amount The amount to set in DAI (ex. 1000 DAI amount == 1000) - */ + /// @dev Set max DAI amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The amount to set in DAI (ex. 1000 DAI amount == 1000) function setKeeperIncentiveFlatRate(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-clip-tip-precision" setValue(clip(_ilk), "tip", _amount * RAD); } - /** - * @dev Sets the circuit breaker price tolerance in the clipper mom. - * This is somewhat counter-intuitive, - * to accept a 25% price drop, use a value of 75% - * @param _clip The clipper to set the tolerance for - * @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) - */ + /// @dev Sets the circuit breaker price tolerance in the clipper mom. + /// This is somewhat counter-intuitive, + /// to accept a 25% price drop, use a value of 75% + /// @param _clip The clipper to set the tolerance for + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) function setLiquidationBreakerPriceTolerance(address _clip, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clippermom-price-tolerance" MomLike(clipperMom()).setPriceTolerance(_clip, rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * @dev Set the stability fee for a given ilk. - * Many of the settings that change weekly rely on the rate accumulator - * described at https://docs.makerdao.com/smart-contract-modules/rates-module - * To check this yourself, use the following rate calculation (example 8%): - * - * $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' - * - * A table of rates can also be found at: - * https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW - * - * @param _ilk The ilk to update (ex. bytes32("ETH-A") ) - * @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) - * @param _doDrip `true` to accumulate stability fees for the collateral - */ + /// @dev Set the stability fee for a given ilk. + /// Many of the settings that change weekly rely on the rate accumulator + /// described at https://docs.makerdao.com/smart-contract-modules/rates-module + /// To check this yourself, use the following rate calculation (example 8%): + /// + /// $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' + /// + /// A table of rates can also be found at: + /// https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW + /// + /// @param _ilk The ilk to update (ex. bytes32("ETH-A") ) + /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + /// @param _doDrip `true` to accumulate stability fees for the collateral function setIlkStabilityFee(bytes32 _ilk, uint256 _rate, bool _doDrip) public { require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/ilk-stability-fee-out-of-bounds" address _jug = jug(); @@ -921,36 +819,30 @@ library DssExecLib { /*** Abacus Management ***/ /*************************/ - /** - * @dev Set the number of seconds from the start when the auction reaches zero price. - * @dev Abacus:LinearDecrease only. - * @param _calc The address of the LinearDecrease pricing contract - * @param _duration Amount of time for auctions. - */ + /// @dev Set the number of seconds from the start when the auction reaches zero price. + /// @dev Abacus:LinearDecrease only. + /// @param _calc The address of the LinearDecrease pricing contract + /// @param _duration Amount of time for auctions. function setLinearDecrease(address _calc, uint256 _duration) public { setValue(_calc, "tau", _duration); } - /** - * @dev Set the number of seconds for each price step. - * @dev Abacus:StairstepExponentialDecrease only. - * @param _calc The address of the StairstepExponentialDecrease pricing contract - * @param _duration Length of time between price drops [seconds] - * @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) - */ + /// @dev Set the number of seconds for each price step. + /// @dev Abacus:StairstepExponentialDecrease only. + /// @param _calc The address of the StairstepExponentialDecrease pricing contract + /// @param _duration Length of time between price drops [seconds] + /// @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) function setStairstepExponentialDecrease(address _calc, uint256 _duration, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/cut-too-high setValue(_calc, "cut", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); setValue(_calc, "step", _duration); } - /** - * @dev Set the number of seconds for each price step. (99% cut = 1% price drop per step) - * Amounts will be converted to the correct internal precision. - * @dev Abacus:ExponentialDecrease only - * @param _calc The address of the ExponentialDecrease pricing contract - * @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) - */ + /// @dev Set the number of seconds for each price step. (99% cut = 1% price drop per step) + /// Amounts will be converted to the correct internal precision. + /// @dev Abacus:ExponentialDecrease only + /// @param _calc The address of the ExponentialDecrease pricing contract + /// @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) function setExponentialDecrease(address _calc, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/cut-too-high setValue(_calc, "cut", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); @@ -960,10 +852,8 @@ library DssExecLib { /*** Oracle Management ***/ /*************************/ - /** - * @dev Allows an oracle to read prices from its source feeds - * @param _oracle An OSM or LP oracle contract - */ + /// @dev Allows an oracle to read prices from its source feeds + /// @param _oracle An OSM or LP oracle contract function whitelistOracleMedians(address _oracle) public { (bool ok, bytes memory data) = _oracle.call(abi.encodeWithSignature("orb0()")); if (ok) { @@ -977,56 +867,44 @@ library DssExecLib { } } - /** - * @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. - * @param _oracle Oracle Security Module (OSM) or Median core contract address - * @param _reader Address to add to whitelist - */ + /// @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. + /// @param _oracle Oracle Security Module (OSM) or Median core contract address + /// @param _reader Address to add to whitelist function addReaderToWhitelist(address _oracle, address _reader) public { OracleLike(_oracle).kiss(_reader); } - /** - * @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. - * @param _oracle Oracle Security Module (OSM) or Median core contract address - * @param _reader Address to remove from whitelist - */ + /// @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. + /// @param _oracle Oracle Security Module (OSM) or Median core contract address + /// @param _reader Address to remove from whitelist function removeReaderFromWhitelist(address _oracle, address _reader) public { OracleLike(_oracle).diss(_reader); } - /** - * @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. - * @param _oracle OSM or Median core contract address - * @param _reader Address to add to whitelist - */ + /// @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. + /// @param _oracle OSM or Median core contract address + /// @param _reader Address to add to whitelist function addReaderToWhitelistCall(address _oracle, address _reader) public { _oracle.call(abi.encodeWithSignature("kiss(address)", _reader)); } - /** - * @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. - * @param _oracle Oracle Security Module (OSM) or Median core contract address - * @param _reader Address to remove from whitelist - */ + /// @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. + /// @param _oracle Oracle Security Module (OSM) or Median core contract address + /// @param _reader Address to remove from whitelist function removeReaderFromWhitelistCall(address _oracle, address _reader) public { _oracle.call(abi.encodeWithSignature("diss(address)", _reader)); } - /** - * @dev Sets the minimum number of valid messages from whitelisted oracle feeds needed to update median price. - * @param _median Median core contract address - * @param _minQuorum Minimum number of valid messages from whitelisted oracle feeds needed to update median price (NOTE: MUST BE ODD NUMBER) - */ + /// @dev Sets the minimum number of valid messages from whitelisted oracle feeds needed to update median price. + /// @param _median Median core contract address + /// @param _minQuorum Minimum number of valid messages from whitelisted oracle feeds needed to update median price (NOTE: MUST BE ODD NUMBER) function setMedianWritersQuorum(address _median, uint256 _minQuorum) public { OracleLike(_median).setBar(_minQuorum); } - /** - * @dev Add OSM address to OSM mom, allowing it to be frozen by governance. - * @param _osm Oracle Security Module (OSM) core contract address - * @param _ilk Collateral type using OSM - */ + /// @dev Add OSM address to OSM mom, allowing it to be frozen by governance. + /// @param _osm Oracle Security Module (OSM) core contract address + /// @param _ilk Collateral type using OSM function allowOSMFreeze(address _osm, bytes32 _ilk) public { MomLike(osmMom()).setOsm(_ilk, _osm); } @@ -1035,12 +913,10 @@ library DssExecLib { /*** Direct Deposit Module ***/ /*****************************/ - /** - * @dev Sets the target rate threshold for a dai direct deposit module (ddm) - * @dev Aave: Targets the variable borrow rate - * @param _ddm The address of the DDM contract - * @param _pct_bps Target rate in basis points. (ex. 4% == 400) - */ + /// @dev Sets the target rate threshold for a dai direct deposit module (ddm) + /// @dev Aave: Targets the variable borrow rate + /// @param _ddm The address of the DDM contract + /// @param _pct_bps Target rate in basis points. (ex. 4% == 400) function setDDMTargetInterestRate(address _ddm, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/bar-too-high setValue(_ddm, "bar", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); @@ -1050,15 +926,13 @@ library DssExecLib { /*** Collateral Onboarding ***/ /*****************************/ - /** - * @dev Performs basic functions and sanity checks to add a new collateral type to the MCD system - * @param _ilk Collateral type key code [Ex. "ETH-A"] - * @param _gem Address of token contract - * @param _join Address of join adapter - * @param _clip Address of liquidation agent - * @param _calc Address of the pricing function - * @param _pip Address of price feed - */ + /// @dev Performs basic functions and sanity checks to add a new collateral type to the MCD system + /// @param _ilk Collateral type key code [Ex. "ETH-A"] + /// @param _gem Address of token contract + /// @param _join Address of join adapter + /// @param _clip Address of liquidation agent + /// @param _calc Address of the pricing function + /// @param _pip Address of price feed function addCollateralBase( bytes32 _ilk, address _gem, @@ -1182,11 +1056,9 @@ library DssExecLib { /*** Payment ***/ /***************/ - /** - * @dev Send a payment in ERC20 DAI from the surplus buffer. - * @param _target The target address to send the DAI to. - * @param _amount The amount to send in DAI (ex. 10m DAI amount == 10000000) - */ + /// @dev Send a payment in ERC20 DAI from the surplus buffer. + /// @param _target The target address to send the DAI to. + /// @param _amount The amount to send in DAI (ex. 10m DAI amount == 10000000) function sendPaymentFromSurplusBuffer(address _target, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" DssVat(vat()).suck(vow(), address(this), _amount * RAD); @@ -1197,16 +1069,14 @@ library DssExecLib { /*** Misc ***/ /************/ - /** - * @dev Initiate linear interpolation on an administrative value over time. - * @param _name The label for this lerp instance - * @param _target The target contract - * @param _what The target parameter to adjust - * @param _startTime The time for this lerp - * @param _start The start value for the target parameter - * @param _end The end value for the target parameter - * @param _duration The duration of the interpolation - */ + /// @dev Initiate linear interpolation on an administrative value over time. + /// @param _name The label for this lerp instance + /// @param _target The target contract + /// @param _what The target parameter to adjust + /// @param _startTime The time for this lerp + /// @param _start The start value for the target parameter + /// @param _end The end value for the target parameter + /// @param _duration The duration of the interpolation function linearInterpolation( bytes32 _name, address _target, @@ -1230,17 +1100,15 @@ library DssExecLib { return lerp; } - /** - * @dev Initiate linear interpolation on an administrative value over time. - * @param _name The label for this lerp instance - * @param _target The target contract - * @param _ilk The ilk to target - * @param _what The target parameter to adjust - * @param _startTime The time for this lerp - * @param _start The start value for the target parameter - * @param _end The end value for the target parameter - * @param _duration The duration of the interpolation - */ + /// @dev Initiate linear interpolation on an administrative value over time. + /// @param _name The label for this lerp instance + /// @param _target The target contract + /// @param _ilk The ilk to target + /// @param _what The target parameter to adjust + /// @param _startTime The time for this lerp + /// @param _start The start value for the target parameter + /// @param _end The end value for the target parameter + /// @param _duration The duration of the interpolation function linearInterpolation( bytes32 _name, address _target, From 323146e734b23fc5541a95c212baa83a2f303dee Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 28 Apr 2025 17:51:58 -0300 Subject: [PATCH 08/61] feat: add USDS support --- README.md | 2 +- src/DssExecLib.sol | 7 +++-- src/test/DssAction.t.sol | 61 +++++++++++++++++++++++++++++++++----- src/test/DssTestAction.sol | 4 +-- 4 files changed, 60 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ac4fc85..0417571 100644 --- a/README.md +++ b/README.md @@ -256,7 +256,7 @@ DssExecLib.setChangelogAddress("MCD_CLIP_CALC_XMPL-A", xmpl_calc); - `liquidationRatio`: Percent liquidation ratio for new collateral [ex. 150% == 15000] ### Payments -- `sendPaymentFromSurplusBuffer(address _target, uint256 _amount)`: Send a payment in ERC20 DAI from the surplus buffer. +- `sendPaymentFromSurplusBuffer(address _join, address _target, uint256 _amount)`: Send a payment in either ERC20 USDS or DAI from the surplus buffer. ### Misc diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 4dbcbcb..12571d7 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -1056,13 +1056,14 @@ library DssExecLib { /*** Payment ***/ /***************/ - /// @dev Send a payment in ERC20 DAI from the surplus buffer. + /// @dev Send a payment in either ERC20 USDS or DAI from the surplus buffer. + /// @param _join The join adapter to exit the payment from. /// @param _target The target address to send the DAI to. /// @param _amount The amount to send in DAI (ex. 10m DAI amount == 10000000) - function sendPaymentFromSurplusBuffer(address _target, uint256 _amount) public { + function sendPaymentFromSurplusBuffer(address _join,address _target, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" DssVat(vat()).suck(vow(), address(this), _amount * RAD); - JoinLike(daiJoin()).exit(_target, _amount * WAD); + JoinLike(_join).exit(_target, _amount * WAD); } /************/ diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 41cf125..485e1f8 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -73,6 +73,29 @@ interface FlapUniV2Like { function want() external view returns (uint256); } +interface UsdsJoinLike is DaiJoinAbstract { + function usds() external view returns (address); +} + +interface UsdsLike { + function allowance(address, address) external view returns (uint256); + function approve(address spender, uint256 value) external returns (bool); + function balanceOf(address) external view returns (uint256); + function burn(address from, uint256 value) external; + function decimals() external view returns (uint8); + function mint(address to, uint256 value) external; + function name() external view returns (string memory); + function nonces(address) external view returns (uint256); + function permit(address owner, address spender, uint256 value, uint256 deadline, bytes memory signature) external; + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) + external; + function symbol() external view returns (string memory); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 value) external returns (bool); + function transferFrom(address from, address to, uint256 value) external returns (bool); + function version() external view returns (string memory); +} + contract ActionTest is Test { ChainlogLike LOG = ChainlogLike(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); @@ -84,6 +107,8 @@ contract ActionTest is Test { DogAbstract dog; DaiAbstract daiToken; DaiJoinAbstract daiJoin; + UsdsLike usdsToken; + UsdsJoinLike usdsJoin; SpotAbstract spot; FlapUniV2Like flap; FlopAbstract flop; @@ -134,6 +159,8 @@ contract ActionTest is Test { dog = DogAbstract( LOG.getAddress("MCD_DOG")); daiToken = DaiAbstract( LOG.getAddress("MCD_DAI")); daiJoin = DaiJoinAbstract( LOG.getAddress("MCD_JOIN_DAI")); + usdsJoin = UsdsJoinLike( LOG.getAddress("USDS_JOIN")); + usdsToken = UsdsLike( LOG.getAddress("USDS")); spot = SpotAbstract( LOG.getAddress("MCD_SPOT")); flap = FlapUniV2Like( LOG.getAddress("MCD_FLAP")); flop = FlopAbstract( LOG.getAddress("MCD_FLOP")); @@ -1143,22 +1170,22 @@ contract ActionTest is Test { } function test_addNewCollateralCase1() public { - collateralOnboardingTest(true, true, true); // Liquidations: ON, PIP == OSM, osmSrc == median + collateralOnboardingTest(true, true, true); // Liquidations: ON, PIP == OSM, osmSrc == median } function test_addNewCollateralCase2() public { - collateralOnboardingTest(true, true, false); // Liquidations: ON, PIP == OSM, osmSrc != median + collateralOnboardingTest(true, true, false); // Liquidations: ON, PIP == OSM, osmSrc != median } function test_addNewCollateralCase3() public { - collateralOnboardingTest(true, false, false); // Liquidations: ON, PIP != OSM, osmSrc != median + collateralOnboardingTest(true, false, false); // Liquidations: ON, PIP != OSM, osmSrc != median } function test_addNewCollateralCase4() public { - collateralOnboardingTest(false, true, true); // Liquidations: OFF, PIP == OSM, osmSrc == median + collateralOnboardingTest(false, true, true); // Liquidations: OFF, PIP == OSM, osmSrc == median } function test_addNewCollateralCase5() public { - collateralOnboardingTest(false, true, false); // Liquidations: OFF, PIP == OSM, osmSrc != median + collateralOnboardingTest(false, true, false); // Liquidations: OFF, PIP == OSM, osmSrc != median } function test_addNewCollateralCase6() public { - collateralOnboardingTest(false, false, false); // Liquidations: OFF, PIP != OSM, osmSrc != median + collateralOnboardingTest(false, false, false); // Liquidations: OFF, PIP != OSM, osmSrc != median } function test_officeHoursCanOverrideInAction() public { DssTestNoOfficeHoursAction actionNoOfficeHours = new DssTestNoOfficeHoursAction(); @@ -1170,7 +1197,7 @@ contract ActionTest is Test { /*** Payment ***/ /***************/ - function test_sendPaymentFromSurplusBuffer() public { + function test_sendPaymentFromSurplusBuffer_DAI() public { address target = address(this); action.delegateVat_test(address(daiJoin)); @@ -1180,7 +1207,7 @@ contract ActionTest is Test { assertEq(daiToken.balanceOf(target), 0); uint256 vowDaiPrev = vat.dai(address(vow)); uint256 vowSinPrev = vat.sin(address(vow)); - action.sendPaymentFromSurplusBuffer_test(target, 100); + action.sendPaymentFromSurplusBuffer_test(address(daiJoin), target, 100); assertEq(vat.dai(target), 0); assertEq(vat.sin(target), 0); assertEq(daiToken.balanceOf(target), 100 * WAD); @@ -1188,6 +1215,24 @@ contract ActionTest is Test { assertEq(vat.sin(address(vow)), vowSinPrev + 100 * RAD); } + function test_sendPaymentFromSurplusBuffer_USDS() public { + address target = address(this); + + action.delegateVat_test(address(usdsJoin)); + + assertEq(vat.dai(target), 0); + assertEq(vat.sin(target), 0); + assertEq(usdsToken.balanceOf(target), 0); + uint256 vowDaiPrev = vat.dai(address(vow)); + uint256 vowSinPrev = vat.sin(address(vow)); + action.sendPaymentFromSurplusBuffer_test(address(usdsJoin), target, 100); + assertEq(vat.dai(target), 0); + assertEq(vat.sin(target), 0); + assertEq(usdsToken.balanceOf(target), 100 * WAD); + assertEq(vat.dai(address(vow)), vowDaiPrev); + assertEq(vat.sin(address(vow)), vowSinPrev + 100 * RAD); + } + /************/ /*** Misc ***/ /************/ diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index 3ad03dc..a2df321 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -345,8 +345,8 @@ contract DssTestAction is DssAction { /*** Payment ***/ /***************/ - function sendPaymentFromSurplusBuffer_test(address target, uint256 amount) public { - DssExecLib.sendPaymentFromSurplusBuffer(target, amount); + function sendPaymentFromSurplusBuffer_test(address join, address target, uint256 amount) public { + DssExecLib.sendPaymentFromSurplusBuffer(join, target, amount); } /************/ From a1cce89762fd245bc48aa41e3b8b37648e30af6f Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 28 Apr 2025 18:20:43 -0300 Subject: [PATCH 09/61] feat: add SUSDS and USDS support --- README.md | 1 + src/DssExecLib.sol | 26 ++++++++++++++++++++++++++ src/test/DssAction.t.sol | 38 +++++++++++++++++++++++--------------- src/test/DssTestAction.sol | 9 +++++++++ 4 files changed, 59 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 0417571..6b82d31 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ Below is an outline of all functions used in the library. ### Accumulating Rates - `accumulateDSR()`: Update rate accumulation for the Dai Savings Rate (DSR). +- `accumulateSSR()`: Update rate accumulation for the Sky Savings Rate (SSR). - `accumulateCollateralStabilityFees(bytes32 _ilk)`: Update rate accumulation for the stability fees of a given collateral type. ### Price Updates diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 12571d7..9e2bba6 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -196,6 +196,10 @@ library DssExecLib { return getChangelogAddress("MCD_DAI"); } + function usds() public view returns (address) { + return getChangelogAddress("USDS"); + } + function mkr() public view returns (address) { return getChangelogAddress("MCD_GOV"); } @@ -220,6 +224,10 @@ library DssExecLib { return getChangelogAddress("MCD_POT"); } + function susds() public view returns (address) { + return getChangelogAddress("SUSDS"); + } + function vow() public view returns (address) { return getChangelogAddress("MCD_VOW"); } @@ -276,6 +284,10 @@ library DssExecLib { return getChangelogAddress("MCD_JOIN_DAI"); } + function usdsJoin() public view returns (address) { + return getChangelogAddress("USDS_JOIN"); + } + function lerpFab() public view returns (address) { return getChangelogAddress("LERP_FAB"); } @@ -422,6 +434,11 @@ library DssExecLib { Drippable(pot()).drip(); } + /// @dev Update rate accumulation for the Sky Savings Rate (SSR). + function accumulateSSR() public { + Drippable(susds()).drip(); + } + /// @dev Update rate accumulation for the stability fees of a given collateral type. /// @param _ilk Collateral type function accumulateCollateralStabilityFees(bytes32 _ilk) public { @@ -512,6 +529,15 @@ library DssExecLib { setValue(pot(), "dsr", _rate); } + /// @dev Set the SKY Savings Rate. See: docs/rates.txt + /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + /// @param _doDrip `true` to accumulate interest owed + function setSSR(uint256 _rate, bool _doDrip) public { + require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/dsr-out-of-bounds" + if (_doDrip) Drippable(susds()).drip(); + setValue(susds(), "ssr", _rate); + } + /// @dev Set the DAI amount for system surplus auctions. Amount will be converted to the correct internal precision. /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setSurplusAuctionAmount(uint256 _amount) public { diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 485e1f8..767b726 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -78,22 +78,13 @@ interface UsdsJoinLike is DaiJoinAbstract { } interface UsdsLike { - function allowance(address, address) external view returns (uint256); - function approve(address spender, uint256 value) external returns (bool); function balanceOf(address) external view returns (uint256); - function burn(address from, uint256 value) external; - function decimals() external view returns (uint8); - function mint(address to, uint256 value) external; - function name() external view returns (string memory); - function nonces(address) external view returns (uint256); - function permit(address owner, address spender, uint256 value, uint256 deadline, bytes memory signature) external; - function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) - external; - function symbol() external view returns (string memory); - function totalSupply() external view returns (uint256); - function transfer(address to, uint256 value) external returns (bool); - function transferFrom(address from, address to, uint256 value) external returns (bool); - function version() external view returns (string memory); +} + +interface SUsdsLike { + function chi() external view returns (uint192); + function drip() external returns (uint256 nChi); + function ssr() external view returns (uint256); } contract ActionTest is Test { @@ -103,6 +94,7 @@ contract ActionTest is Test { EndAbstract end; VowAbstract vow; PotAbstract pot; + SUsdsLike susds; JugAbstract jug; DogAbstract dog; DaiAbstract daiToken; @@ -155,6 +147,7 @@ contract ActionTest is Test { end = EndAbstract( LOG.getAddress("MCD_END")); vow = VowAbstract( LOG.getAddress("MCD_VOW")); pot = PotAbstract( LOG.getAddress("MCD_POT")); + susds = SUsdsLike( LOG.getAddress("SUSDS")); jug = JugAbstract( LOG.getAddress("MCD_JUG")); dog = DogAbstract( LOG.getAddress("MCD_DOG")); daiToken = DaiAbstract( LOG.getAddress("MCD_DAI")); @@ -178,10 +171,13 @@ contract ActionTest is Test { vm.label(address(end), "END"); vm.label(address(vow), "VOW"); vm.label(address(pot), "POT"); + vm.label(address(susds), "SUSDS"); vm.label(address(jug), "JUG"); vm.label(address(dog), "DOG"); vm.label(address(daiToken), "DAI"); + vm.label(address(usdsToken), "USDS"); vm.label(address(daiJoin), "DAI_JOIN"); + vm.label(address(usdsJoin), "USDS_JOIN"); vm.label(address(spot), "SPOT"); vm.label(address(flap), "FLAP"); vm.label(address(flop), "FLOP"); @@ -202,6 +198,7 @@ contract ActionTest is Test { giveAuth(address(vat), address(action)); giveAuth(address(spot), address(this)); giveAuth(address(spot), address(action)); + giveAuth(address(susds), address(action)); giveAuth(address(dog), address(this)); giveAuth(address(dog), address(action)); giveAuth(address(vow), address(action)); @@ -542,6 +539,17 @@ contract ActionTest is Test { assertGt(afterChi, beforeChi); } + function test_accumulateSSR() public { + uint256 beforeChi = susds.chi(); + action.setSSR_test(1000000001243680656318820312); // 4% + assertEq(susds.ssr(), 1000000001243680656318820312); + vm.warp(START_TIME + 1 days); + action.accumulateSSR_test(); + uint256 afterChi = pot.chi(); + + assertGt(afterChi, beforeChi); + } + function test_accumulateCollateralStabilityFees() public { jug.init("gold"); (, uint256 beforeRate,,,) = vat.ilks("gold"); diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index a2df321..a4411c9 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -77,10 +77,15 @@ contract DssTestAction is DssAction { /**************************/ /*** Accumulating Rates ***/ /**************************/ + function accumulateDSR_test() public { DssExecLib.accumulateDSR(); } + function accumulateSSR_test() public { + DssExecLib.accumulateSSR(); + } + function accumulateCollateralStabilityFees_test(bytes32 ilk) public { DssExecLib.accumulateCollateralStabilityFees(ilk); } @@ -142,6 +147,10 @@ contract DssTestAction is DssAction { DssExecLib.setDSR(rate, true); } + function setSSR_test(uint256 rate) public { + DssExecLib.setSSR(rate, true); + } + function setSurplusAuctionAmount_test(uint256 amount) public { DssExecLib.setSurplusAuctionAmount(amount); } From 105721ced288b94bd801603f77baccc500fedaae Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 16:26:35 -0300 Subject: [PATCH 10/61] refactor: improve docs and interface names --- src/DssExecLib.sol | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 9e2bba6..4d8f07d 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -43,7 +43,7 @@ interface Drippable { function drip(bytes32) external returns (uint256); } -interface Pricing { +interface Pokeable { function poke(bytes32) external; } @@ -94,8 +94,11 @@ interface OracleLike { function orb1() external view returns (address); } -interface MomLike { +interface OsmMomLike { function setOsm(bytes32, address) external; +} + +interface ClipperMomLike { function setPriceTolerance(address, uint256) external; } @@ -304,6 +307,10 @@ library DssExecLib { _calc = ClipLike(clip(_ilk)).calc(); } + /// @dev Get an address from the chainlog. + /// @dev Reverts if the key does not exist + /// @param _key Access key for the address (e.g. "MCD_VAT") + /// @return The address associated with the key function getChangelogAddress(bytes32 _key) public view returns (address) { return ChainlogLike(LOG).getAddress(_key); } @@ -452,7 +459,7 @@ library DssExecLib { /// @dev Update price of a given collateral type. /// @param _ilk Collateral type function updateCollateralPrice(bytes32 _ilk) public { - Pricing(spotter()).poke(_ilk); + Pokeable(spotter()).poke(_ilk); } /****************************/ @@ -817,7 +824,7 @@ library DssExecLib { /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) function setLiquidationBreakerPriceTolerance(address _clip, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clippermom-price-tolerance" - MomLike(clipperMom()).setPriceTolerance(_clip, rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); + ClipperMomLike(clipperMom()).setPriceTolerance(_clip, rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } /// @dev Set the stability fee for a given ilk. @@ -932,7 +939,7 @@ library DssExecLib { /// @param _osm Oracle Security Module (OSM) core contract address /// @param _ilk Collateral type using OSM function allowOSMFreeze(address _osm, bytes32 _ilk) public { - MomLike(osmMom()).setOsm(_ilk, _osm); + OsmMomLike(osmMom()).setOsm(_ilk, _osm); } /*****************************/ From 29d994644c6a4df0cc15f7addda1554bc5c33cf8 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 17:40:11 -0300 Subject: [PATCH 11/61] refactor: generalize `addReaderToWhitelist` --- README.md | 7 ++--- src/DssExecLib.sol | 60 +++++++++++++------------------------- src/test/DssAction.t.sol | 31 +++----------------- src/test/DssTestAction.sol | 20 +++---------- 4 files changed, 30 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index 6b82d31..9c79d72 100644 --- a/README.md +++ b/README.md @@ -167,11 +167,8 @@ Below is an outline of all functions used in the library. ### Oracle Management - `whitelistOracleMedians(address _oracle)`: Pass an OSM or UNIV2LP oracle to enable it to read the underlying medianizer. -- `addReaderToWhitelist(address _oracle, address _reader)`: Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. -- `removeReaderFromWhitelist(address _oracle, address _reader)`: Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. -- `addReaderToWhitelistCall(address _oracle, address _reader)`: Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. -- `removeReaderFromWhitelistCall(address _oracle, address _reader)`: Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. -- `setMedianWritersQuorum(address _median, uint256 _minQuorum)`: Sets the minimum number of valid messages from whitelisted oracle feeds needed to update median price. +- `addToWhitelist(address _oracle, address _reader)`: Adds an address to a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. +- `removeFromWhitelist(address _oracle, address _reader)`: Removes an address from a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. - `allowOSMFreeze(address _osm, bytes32 _ilk)`: Add OSM address to OSM mom, allowing it to be frozen by governance. ### Direct Deposit Module diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 4d8f07d..4f0870f 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -31,6 +31,11 @@ interface Authorizable { function setAuthority(address) external; } +interface Kissable { + function kiss(address) external; + function diss(address) external; +} + interface Fileable { function file(bytes32, address) external; function file(bytes32, uint256) external; @@ -81,15 +86,11 @@ interface JoinLike { } // Includes Median and OSM functions -interface OracleLike { +interface OracleLike is Kissable { function src() external view returns (address); - function lift(address[] calldata) external; - function drop(address[] calldata) external; - function setBar(uint256) external; - function kiss(address) external; - function diss(address) external; - function kiss(address[] calldata) external; - function diss(address[] calldata) external; +} + +interface LPOracleLike is Kissable { function orb0() external view returns (address); function orb1() external view returns (address); } @@ -892,47 +893,26 @@ library DssExecLib { if (ok) { // Token is an LP oracle address median0 = abi.decode(data, (address)); - addReaderToWhitelistCall(median0, _oracle); - addReaderToWhitelistCall(OracleLike(_oracle).orb1(), _oracle); + median0.call(abi.encodeWithSignature("kiss(address)", _oracle)); + LPOracleLike(_oracle).orb1().call(abi.encodeWithSignature("kiss(address)", _oracle)); } else { // Standard OSM - addReaderToWhitelistCall(OracleLike(_oracle).src(), _oracle); + OracleLike(_oracle).src().call(abi.encodeWithSignature("kiss(address)", _oracle)); } } /// @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. /// @param _oracle Oracle Security Module (OSM) or Median core contract address /// @param _reader Address to add to whitelist - function addReaderToWhitelist(address _oracle, address _reader) public { - OracleLike(_oracle).kiss(_reader); + function addToWhitelist(address _oracle, address _reader) public { + Kissable(_oracle).kiss(_reader); } /// @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. /// @param _oracle Oracle Security Module (OSM) or Median core contract address /// @param _reader Address to remove from whitelist - function removeReaderFromWhitelist(address _oracle, address _reader) public { - OracleLike(_oracle).diss(_reader); - } - - /// @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. - /// @param _oracle OSM or Median core contract address - /// @param _reader Address to add to whitelist - function addReaderToWhitelistCall(address _oracle, address _reader) public { - _oracle.call(abi.encodeWithSignature("kiss(address)", _reader)); - } - - /// @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. - /// @param _oracle Oracle Security Module (OSM) or Median core contract address - /// @param _reader Address to remove from whitelist - function removeReaderFromWhitelistCall(address _oracle, address _reader) public { - _oracle.call(abi.encodeWithSignature("diss(address)", _reader)); - } - - /// @dev Sets the minimum number of valid messages from whitelisted oracle feeds needed to update median price. - /// @param _median Median core contract address - /// @param _minQuorum Minimum number of valid messages from whitelisted oracle feeds needed to update median price (NOTE: MUST BE ODD NUMBER) - function setMedianWritersQuorum(address _median, uint256 _minQuorum) public { - OracleLike(_median).setBar(_minQuorum); + function removeFromWhitelist(address _oracle, address _reader) public { + Kissable(_oracle).diss(_reader); } /// @dev Add OSM address to OSM mom, allowing it to be frozen by governance. @@ -1044,13 +1024,13 @@ library DssExecLib { whitelistOracleMedians(co.pip); } // Whitelist Spotter to read the OSM data (only necessary if it is the first time the token is being added to an ilk) - addReaderToWhitelist(co.pip, spotter()); + addToWhitelist(co.pip, spotter()); // Whitelist Clipper on pip - addReaderToWhitelist(co.pip, co.clip); + addToWhitelist(co.pip, co.clip); // Allow the clippermom to access the feed - addReaderToWhitelist(co.pip, clipperMom_); + addToWhitelist(co.pip, clipperMom_); // Whitelist End to read the OSM data (only necessary if it is the first time the token is being added to an ilk) - addReaderToWhitelist(co.pip, end()); + addToWhitelist(co.pip, end()); // Set TOKEN OSM in the OsmMom for new ilk allowOSMFreeze(co.pip, co.ilk); } diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 767b726..1be574f 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -957,35 +957,12 @@ contract ActionTest is Test { action.whitelistOracleMedians_test(address(lorc)); } - function test_addReaderToWhitelistCall() public { - address reader = address(1); - - assertEq(median.bud(address(1)), 0); - action.addReaderToWhitelistCall_test(address(median), reader); - assertEq(median.bud(address(1)), 1); - } - - function test_removeReaderFromWhitelistCall() public { - address reader = address(1); - - assertEq(median.bud(address(1)), 0); - action.addReaderToWhitelistCall_test(address(median), reader); - assertEq(median.bud(address(1)), 1); - action.removeReaderFromWhitelistCall_test(address(median), reader); - assertEq(median.bud(address(1)), 0); - } - - function test_setMedianWritersQuorum() public { - action.setMedianWritersQuorum_test(address(median), 11); - assertEq(median.bar(), 11); - } - - function test_addReaderToWhitelist() public { + function test_addReaderToOSMWhitelist() public { OsmAbstract osm = ilks["gold"].osm; address reader = address(1); assertEq(osm.bud(address(1)), 0); - action.addReaderToWhitelist_test(address(osm), reader); + action.addToWhitelist_test(address(osm), reader); assertEq(osm.bud(address(1)), 1); } @@ -994,9 +971,9 @@ contract ActionTest is Test { address reader = address(1); assertEq(osm.bud(address(1)), 0); - action.addReaderToWhitelist_test(address(osm), reader); + action.addToWhitelist_test(address(osm), reader); assertEq(osm.bud(address(1)), 1); - action.removeReaderFromWhitelist_test(address(osm), reader); + action.removeFromWhitelist_test(address(osm), reader); assertEq(osm.bud(address(1)), 0); } diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index a4411c9..31509dd 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -302,24 +302,12 @@ contract DssTestAction is DssAction { DssExecLib.whitelistOracleMedians(oracle); } - function addReaderToWhitelistCall_test(address medianizer, address reader) public { - DssExecLib.addReaderToWhitelistCall(medianizer, reader); + function addToWhitelist_test(address osm, address reader) public { + DssExecLib.addToWhitelist(osm, reader); } - function removeReaderFromWhitelistCall_test(address medianizer, address reader) public { - DssExecLib.removeReaderFromWhitelistCall(medianizer, reader); - } - - function setMedianWritersQuorum_test(address medianizer, uint256 minQuorum) public { - DssExecLib.setMedianWritersQuorum(medianizer, minQuorum); - } - - function addReaderToWhitelist_test(address osm, address reader) public { - DssExecLib.addReaderToWhitelist(osm, reader); - } - - function removeReaderFromWhitelist_test(address osm, address reader) public { - DssExecLib.removeReaderFromWhitelist(osm, reader); + function removeFromWhitelist_test(address osm, address reader) public { + DssExecLib.removeFromWhitelist(osm, reader); } function allowOSMFreeze_test(address osm, bytes32 ilk) public { From 982c9eab80a7e143f4d0def4df434e0c7798c185 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 17:49:50 -0300 Subject: [PATCH 12/61] docs: improve README --- README.md | 7 +++---- src/DssExecLib.sol | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9c79d72..f73cd7a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ # DSS Exec Library -![Build Status](https://github.com/makerdao/dss-exec-lib/actions/workflows/.github/workflows/tests.yaml/badge.svg?branch=master) A library for crafting spells in DSS more efficiently, predictably, and easily. @@ -11,15 +10,15 @@ A library for crafting spells in DSS more efficiently, predictably, and easily. ## Requirements -* [Dapptools](https://github.com/dapphub/dapptools) +* [Foundry](https://getfoundry.sh/) ## About -Provides a list of functions to call to perform commonly used actions in spells in DSS. +Provides a list of functions to call to perform commonly used actions in spells in the Sky Protocol. Here is an example of a `SpellAction.sol` file that uses the deployed library (from `spells-mainnet` repo): -```js +```solidity import {DssAction} from "lib/dss-exec-lib/src/DssAction.sol"; contract SpellAction is DssAction { diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 4f0870f..8366fed 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -2,7 +2,7 @@ // // DssExecLib.sol -- MakerDAO Executive Spellcrafting Library // -// Copyright (C) 2020-2022 Dai Foundation +// Copyright (C) 2025 Dai Foundation // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by From 6d6f4686889f9b25d648b19b7ba972378b026073 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 18:20:00 -0300 Subject: [PATCH 13/61] feat: add `setGSMDelay` --- README.md | 3 +++ src/DssExecLib.sol | 20 ++++++++++++++++++++ src/test/DssAction.t.sol | 22 ++++++++++++++++++++++ src/test/DssTestAction.sol | 8 ++++++++ 4 files changed, 53 insertions(+) diff --git a/README.md b/README.md index f73cd7a..baef2ca 100644 --- a/README.md +++ b/README.md @@ -170,6 +170,9 @@ Below is an outline of all functions used in the library. - `removeFromWhitelist(address _oracle, address _reader)`: Removes an address from a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. - `allowOSMFreeze(address _osm, bytes32 _ilk)`: Add OSM address to OSM mom, allowing it to be frozen by governance. +### Governance Security Module +- `setGSMDelay`: Sets the GSM delay for governance actions. + ### Direct Deposit Module - `setDDMTargetInterestRate(address _ddm, uint256 _pct_bps)`: Set the target rate (`bar`) for a DDM module. diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 8366fed..8b3a1cb 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -64,6 +64,10 @@ interface DssVat { function suck(address, address, uint256) external; } +interface PauseLike { + function setDelay(uint256) external; +} + interface ClipLike { function vat() external returns (address); function dog() external returns (address); @@ -296,6 +300,10 @@ library DssExecLib { return getChangelogAddress("LERP_FAB"); } + function pause() public view returns (address) { + return getChangelogAddress("MCD_PAUSE"); + } + function clip(bytes32 _ilk) public view returns (address _clip) { _clip = RegistryLike(reg()).xlip(_ilk); } @@ -922,6 +930,18 @@ library DssExecLib { OsmMomLike(osmMom()).setOsm(_ilk, _osm); } + /**********************************/ + /*** Governance Security Module ***/ + /**********************************/ + + /// @dev Sets the time delay between governance votes and execution in MCD_PAUSE. + /// @dev Enforces an arbitrary minimum delay of 12 hours. + /// @param _delay The time delay in seconds. + function setGSMDelay(uint256 _delay) public { + require(_delay >= 12 hours); // DssExecLib/delay-too-low + PauseLike(pause()).setDelay(_delay); + } + /*****************************/ /*** Direct Deposit Module ***/ /*****************************/ diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 1be574f..20e4b66 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -90,6 +90,7 @@ interface SUsdsLike { contract ActionTest is Test { ChainlogLike LOG = ChainlogLike(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); + DSPauseAbstract pause; VatAbstract vat; EndAbstract end; VowAbstract vow; @@ -143,6 +144,7 @@ contract ActionTest is Test { START_TIME = block.timestamp; + pause = DSPauseAbstract( LOG.getAddress("MCD_PAUSE")); vat = VatAbstract( LOG.getAddress("MCD_VAT")); end = EndAbstract( LOG.getAddress("MCD_END")); vow = VowAbstract( LOG.getAddress("MCD_VOW")); @@ -167,6 +169,7 @@ contract ActionTest is Test { rwaOracle = RwaLiquidationOracleLike(LOG.getAddress("MIP21_LIQUIDATION_ORACLE")); median = MedianAbstract(address(new MockMedian())); + vm.label(address(pause), "PAUSE"); vm.label(address(vat), "VAT"); vm.label(address(end), "END"); vm.label(address(vow), "VOW"); @@ -983,6 +986,25 @@ contract ActionTest is Test { assertEq(osmMom.osms("gold"), address(osm)); } + /**********************************/ + /*** Governance Security Module ***/ + /**********************************/ + + function test_setGSMDelay() public { + // Because of the `wait` modifier in MCD_PAUSE, we need to prank delegatecalls as well, + // since this will be the opcode used by `setGSMDelay_test` when calling `DssExecLib` + vm.startPrank(LOG.getAddress("MCD_PAUSE_PROXY"), /* delegatecall = */ true); + // Sets an initial value + action.setGSMDelay_test(12 hours); + + // Checks if the new value is being properly set. + action.setGSMDelay_test(16 hours); + assertEq(pause.delay(), 16 hours); + + vm.expectRevert(); + action.setGSMDelay_test(8 hours); // delay-too-low. Min: 12 hours + } + /*****************************/ /*** Direct Deposit Module ***/ /*****************************/ diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index 31509dd..65a6fd9 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -314,6 +314,14 @@ contract DssTestAction is DssAction { DssExecLib.allowOSMFreeze(osm, ilk); } + /**********************************/ + /*** Governance Security Module ***/ + /**********************************/ + + function setGSMDelay_test(uint256 _delay) public { + DssExecLib.setGSMDelay(_delay); + } + /*****************************/ /*** Direct Deposit Module ***/ /*****************************/ From 74539b6f42cf8a6c3994572aa984d49f92a6ef0a Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 18:28:04 -0300 Subject: [PATCH 14/61] docs: update headers and natspec --- src/DssExecLib.sol | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 8b3a1cb..bee9edb 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -1,9 +1,6 @@ +// SPDX-FileCopyrightText: 2025 Dai Foundation // SPDX-License-Identifier: AGPL-3.0-or-later // -// DssExecLib.sol -- MakerDAO Executive Spellcrafting Library -// -// Copyright (C) 2025 Dai Foundation -// // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or @@ -159,8 +156,9 @@ interface RwaOracleLike { function bump(bytes32 ilk, uint256 val) external; } -library DssExecLib { +// @title DssExecLib.sol -- Sky Protocol's Executive Spellcrafting Library +library DssExecLib { /*****************/ /*** Constants ***/ /*****************/ From a04ae9ff4343f275685b0c0d3df5ab8004344b9e Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 19:08:13 -0300 Subject: [PATCH 15/61] refactor: implement changes related to the `Chief` migration --- foundry.toml | 1 + src/test/DssAction.t.sol | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/foundry.toml b/foundry.toml index 0e794bc..0cac3a0 100644 --- a/foundry.toml +++ b/foundry.toml @@ -14,3 +14,4 @@ fs_permissions = [ [rpc_endpoints] mainnet = "${ETH_RPC_URL}" +apr_15_0 = "https://virtual.mainnet.rpc.tenderly.co/b0298788-ff98-44df-ad8a-c10b7d8e3199" diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 20e4b66..64a6dd3 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -106,10 +106,10 @@ contract ActionTest is Test { FlapUniV2Like flap; FlopAbstract flop; DSTokenAbstract gov; + DSTokenAbstract mkr; IlkRegistryAbstract reg; OsmMomAbstract osmMom; ClipperMomAbstract clipperMom; - MkrAuthorityAbstract govGuard; DssAutoLineAbstract autoLine; LerpFactoryAbstract lerpFab; RwaLiquidationOracleLike rwaOracle; @@ -140,7 +140,7 @@ contract ActionTest is Test { address constant UNIV2ORACLE_FAB = 0xc968B955BCA6c2a3c828d699cCaCbFDC02402D89; function setUp() public { - vm.createSelectFork("mainnet"); + vm.createSelectFork("apr_15_0"); START_TIME = block.timestamp; @@ -160,10 +160,10 @@ contract ActionTest is Test { flap = FlapUniV2Like( LOG.getAddress("MCD_FLAP")); flop = FlopAbstract( LOG.getAddress("MCD_FLOP")); gov = DSTokenAbstract( LOG.getAddress("MCD_GOV")); + mkr = DSTokenAbstract( LOG.getAddress("MKR")); reg = IlkRegistryAbstract( LOG.getAddress("ILK_REGISTRY")); osmMom = OsmMomAbstract( LOG.getAddress("OSM_MOM")); clipperMom = ClipperMomAbstract( LOG.getAddress("CLIPPER_MOM")); - govGuard = MkrAuthorityAbstract( LOG.getAddress("GOV_GUARD")); autoLine = DssAutoLineAbstract( LOG.getAddress("MCD_IAM_AUTO_LINE")); lerpFab = LerpFactoryAbstract( LOG.getAddress("LERP_FAB")); rwaOracle = RwaLiquidationOracleLike(LOG.getAddress("MIP21_LIQUIDATION_ORACLE")); @@ -185,10 +185,10 @@ contract ActionTest is Test { vm.label(address(flap), "FLAP"); vm.label(address(flop), "FLOP"); vm.label(address(gov), "GOV"); + vm.label(address(mkr), "MKR"); vm.label(address(reg), "REG"); vm.label(address(osmMom), "OSM_MOM"); vm.label(address(clipperMom), "CLIPPER_MOM"); - vm.label(address(govGuard), "GOV_GUARD"); vm.label(address(autoLine), "AUTO_LINE"); vm.label(address(lerpFab), "LERP_FAB"); vm.label(address(rwaOracle), "RWA_LIQUITATION_ORACLE"); @@ -232,8 +232,6 @@ contract ActionTest is Test { vm.store(address(clipperMom), 0, bytes32(uint256(uint160(address(action))))); vm.store(address(osmMom), 0, bytes32(uint256(uint160(address(action))))); - - vm.store(address(govGuard), 0, bytes32(uint256(uint160(address(action))))); } function ray(uint256 wad) internal pure returns (uint256) { From c066aa7cec401567cadababb3f4759330787ad3c Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 19:10:20 -0300 Subject: [PATCH 16/61] chore: apply default `forge fmt` to all contracts --- src/CollateralOpts.sol | 6 +- src/DssAction.sol | 7 +- src/DssExec.sol | 31 +- src/DssExecLib.sol | 304 ++++++++++------- src/test/DssAction.t.sol | 649 ++++++++++++++++++++++--------------- src/test/DssExec.t.sol | 468 +++++++++++++------------- src/test/DssTestAction.sol | 205 ++++++++---- src/test/Mocks.sol | 140 +++++--- src/test/rates.sol | 4 +- 9 files changed, 1069 insertions(+), 745 deletions(-) diff --git a/src/CollateralOpts.sol b/src/CollateralOpts.sol index 138e648..33537aa 100644 --- a/src/CollateralOpts.sol +++ b/src/CollateralOpts.sol @@ -26,9 +26,9 @@ struct CollateralOpts { address clip; address calc; address pip; - bool isLiquidatable; - bool isOSM; - bool whitelistOSM; + bool isLiquidatable; + bool isOSM; + bool whitelistOSM; uint256 ilkDebtCeiling; uint256 minVaultAmount; uint256 maxLiquidationAmount; diff --git a/src/DssAction.sol b/src/DssAction.sol index d29fcdc..5d3dce6 100644 --- a/src/DssAction.sol +++ b/src/DssAction.sol @@ -19,19 +19,18 @@ pragma solidity ^0.8.16; -import { DssExecLib } from "./DssExecLib.sol"; -import { CollateralOpts } from "./CollateralOpts.sol"; +import {DssExecLib} from "./DssExecLib.sol"; +import {CollateralOpts} from "./CollateralOpts.sol"; interface OracleLike { function src() external view returns (address); } abstract contract DssAction { - using DssExecLib for *; // Modifier used to limit execution time when office hours is enabled - modifier limited { + modifier limited() { require(DssExecLib.canCast(uint40(block.timestamp), officeHours()), "Outside office hours"); _; } diff --git a/src/DssExec.sol b/src/DssExec.sol index ce9f87d..aca4398 100644 --- a/src/DssExec.sol +++ b/src/DssExec.sol @@ -36,15 +36,14 @@ interface SpellAction { } contract DssExec { - - Changelog constant public log = Changelog(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); - uint256 public eta; - bytes public sig; - bool public done; - bytes32 immutable public tag; - address immutable public action; - uint256 immutable public expiration; - PauseAbstract immutable public pause; + Changelog public constant log = Changelog(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); + uint256 public eta; + bytes public sig; + bool public done; + bytes32 public immutable tag; + address public immutable action; + uint256 public immutable expiration; + PauseAbstract public immutable pause; // Provides a descriptive tag for bot consumption // This should be modified weekly to provide a summary of the actions @@ -65,14 +64,16 @@ contract DssExec { // @param _expiration The timestamp this spell will expire. (Ex. block.timestamp + 30 days) // @param _spellAction The address of the spell action constructor(uint256 _expiration, address _spellAction) { - pause = PauseAbstract(log.getAddress("MCD_PAUSE")); - expiration = _expiration; - action = _spellAction; + pause = PauseAbstract(log.getAddress("MCD_PAUSE")); + expiration = _expiration; + action = _spellAction; sig = abi.encodeWithSignature("execute()"); - bytes32 _tag; // Required for assembly access - address _action = _spellAction; // Required for assembly access - assembly { _tag := extcodehash(_action) } + bytes32 _tag; // Required for assembly access + address _action = _spellAction; // Required for assembly access + assembly { + _tag := extcodehash(_action) + } tag = _tag; } diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index bee9edb..fd5488d 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -156,27 +156,37 @@ interface RwaOracleLike { function bump(bytes32 ilk, uint256 val) external; } - // @title DssExecLib.sol -- Sky Protocol's Executive Spellcrafting Library library DssExecLib { - /*****************/ - /*** Constants ***/ - /*****************/ - + /** + * + */ + /** + * Constants ** + */ + /** + * + */ address public constant LOG = 0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F; uint256 internal constant THOUSAND = 10 ** 3; - uint256 internal constant MILLION = 10 ** 6; - uint256 internal constant WAD = 10 ** 18; - uint256 internal constant RAY = 10 ** 27; - uint256 internal constant RAD = 10 ** 45; + uint256 internal constant MILLION = 10 ** 6; + uint256 internal constant WAD = 10 ** 18; + uint256 internal constant RAY = 10 ** 27; + uint256 internal constant RAD = 10 ** 45; - uint256 internal constant BPS_ONE_HUNDRED_PCT = 100_00; + uint256 internal constant BPS_ONE_HUNDRED_PCT = 100_00; uint256 internal constant RATES_ONE_HUNDRED_PCT = 1000000021979553151239153027; - /**********************/ - /*** Math Functions ***/ - /**********************/ + /** + * + */ + /** + * Math Functions ** + */ + /** + * + */ /// @dev WAD division. The final result is rounded to the nearest integer. /// Examples: @@ -194,10 +204,15 @@ library DssExecLib { z = (x * RAY + y / 2) / y; } - /****************************/ - /*** Core Address Helpers ***/ - /****************************/ - + /** + * + */ + /** + * Core Address Helpers ** + */ + /** + * + */ function dai() public view returns (address) { return getChangelogAddress("MCD_DAI"); } @@ -322,9 +337,15 @@ library DssExecLib { return ChainlogLike(LOG).getAddress(_key); } - /****************************/ - /*** Changelog Management ***/ - /****************************/ + /** + * + */ + /** + * Changelog Management ** + */ + /** + * + */ /// @dev Set an address in the MCD on-chain changelog. /// @param _key Access key for the address (e.g. "MCD_VAT") @@ -351,9 +372,15 @@ library DssExecLib { ChainlogLike(LOG).setSha256sum(_SHA256Sum); } - /**********************/ - /*** Authorizations ***/ - /**********************/ + /** + * + */ + /** + * Authorizations ** + */ + /** + * + */ /// @dev Give an address authorization to perform auth actions on the contract. /// @param _base The address of the contract where the authorization will be set @@ -388,9 +415,15 @@ library DssExecLib { DssVat(vat()).nope(_usr); } - /******************************/ - /*** OfficeHours Management ***/ - /******************************/ + /** + * + */ + /** + * OfficeHours Management ** + */ + /** + * + */ /// @dev Returns true if a time is within office hours range /// @param _ts The timestamp to check, usually block.timestamp @@ -417,31 +450,37 @@ library DssExecLib { castTime = _ts > _eta ? _ts : _eta; // Any day at XX:YY if (_officeHours) { - uint256 day = (castTime / 1 days + 3) % 7; - uint256 hour = castTime / 1 hours % 24; + uint256 day = (castTime / 1 days + 3) % 7; + uint256 hour = castTime / 1 hours % 24; uint256 minute = castTime / 1 minutes % 60; uint256 second = castTime % 60; if (day >= 5) { - castTime += (6 - day) * 1 days; // Go to Sunday XX:YY - castTime += (24 - hour + 14) * 1 hours; // Go to 14:YY UTC Monday + castTime += (6 - day) * 1 days; // Go to Sunday XX:YY + castTime += (24 - hour + 14) * 1 hours; // Go to 14:YY UTC Monday castTime -= minute * 1 minutes + second; // Go to 14:00 UTC } else { if (hour >= 21) { - if (day == 4) castTime += 2 days; // If Friday, fast forward to Sunday XX:YY - castTime += (24 - hour + 14) * 1 hours; // Go to 14:YY UTC next day + if (day == 4) castTime += 2 days; // If Friday, fast forward to Sunday XX:YY + castTime += (24 - hour + 14) * 1 hours; // Go to 14:YY UTC next day castTime -= minute * 1 minutes + second; // Go to 14:00 UTC } else if (hour < 14) { - castTime += (14 - hour) * 1 hours; // Go to 14:YY UTC same day + castTime += (14 - hour) * 1 hours; // Go to 14:YY UTC same day castTime -= minute * 1 minutes + second; // Go to 14:00 UTC } } } } - /**************************/ - /*** Accumulating Rates ***/ - /**************************/ + /** + * + */ + /** + * Accumulating Rates ** + */ + /** + * + */ /// @dev Update rate accumulation for the Dai Savings Rate (DSR). function accumulateDSR() public { @@ -459,9 +498,15 @@ library DssExecLib { Drippable(jug()).drip(_ilk); } - /*********************/ - /*** Price Updates ***/ - /*********************/ + /** + * + */ + /** + * Price Updates ** + */ + /** + * + */ /// @dev Update price of a given collateral type. /// @param _ilk Collateral type @@ -469,9 +514,15 @@ library DssExecLib { Pokeable(spotter()).poke(_ilk); } - /****************************/ - /*** System Configuration ***/ - /****************************/ + /** + * + */ + /** + * System Configuration ** + */ + /** + * + */ /// @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in Clip) /// @param _base The address of the contract where the new contract address will be filed @@ -507,9 +558,15 @@ library DssExecLib { Fileable(_base).file(_ilk, _what, _amt); } - /******************************/ - /*** System Risk Parameters ***/ - /******************************/ + /** + * + */ + /** + * System Risk Parameters ** + */ + /** + * + */ /// @dev Set the global debt ceiling. Amount will be converted to the correct internal precision. /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) @@ -668,9 +725,15 @@ library DssExecLib { setValue(spotter(), "par", rdiv(_value, 1000)); } - /*****************************/ - /*** Collateral Management ***/ - /*****************************/ + /** + * + */ + /** + * Collateral Management ** + */ + /** + * + */ /// @dev Set a collateral debt ceiling. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) @@ -855,9 +918,15 @@ library DssExecLib { setValue(_jug, _ilk, "duty", _rate); } - /*************************/ - /*** Abacus Management ***/ - /*************************/ + /** + * + */ + /** + * Abacus Management ** + */ + /** + * + */ /// @dev Set the number of seconds from the start when the auction reaches zero price. /// @dev Abacus:LinearDecrease only. @@ -888,9 +957,15 @@ library DssExecLib { setValue(_calc, "cut", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /*************************/ - /*** Oracle Management ***/ - /*************************/ + /** + * + */ + /** + * Oracle Management ** + */ + /** + * + */ /// @dev Allows an oracle to read prices from its source feeds /// @param _oracle An OSM or LP oracle contract @@ -928,9 +1003,15 @@ library DssExecLib { OsmMomLike(osmMom()).setOsm(_ilk, _osm); } - /**********************************/ - /*** Governance Security Module ***/ - /**********************************/ + /** + * + */ + /** + * Governance Security Module ** + */ + /** + * + */ /// @dev Sets the time delay between governance votes and execution in MCD_PAUSE. /// @dev Enforces an arbitrary minimum delay of 12 hours. @@ -940,9 +1021,15 @@ library DssExecLib { PauseLike(pause()).setDelay(_delay); } - /*****************************/ - /*** Direct Deposit Module ***/ - /*****************************/ + /** + * + */ + /** + * Direct Deposit Module ** + */ + /** + * + */ /// @dev Sets the target rate threshold for a dai direct deposit module (ddm) /// @dev Aave: Targets the variable borrow rate @@ -953,9 +1040,15 @@ library DssExecLib { setValue(_ddm, "bar", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /*****************************/ - /*** Collateral Onboarding ***/ - /*****************************/ + /** + * + */ + /** + * Collateral Onboarding ** + */ + /** + * + */ /// @dev Performs basic functions and sanity checks to add a new collateral type to the MCD system /// @param _ilk Collateral type key code [Ex. "ETH-A"] @@ -964,29 +1057,22 @@ library DssExecLib { /// @param _clip Address of liquidation agent /// @param _calc Address of the pricing function /// @param _pip Address of price feed - function addCollateralBase( - bytes32 _ilk, - address _gem, - address _join, - address _clip, - address _calc, - address _pip - ) + function addCollateralBase(bytes32 _ilk, address _gem, address _join, address _clip, address _calc, address _pip) public { // Sanity checks - address _vat = vat(); - address _dog = dog(); + address _vat = vat(); + address _dog = dog(); address _spotter = spotter(); - uint256 _dec = ERC20(_gem).decimals(); - - require(JoinLike(_join).vat() == _vat); // "join-vat-not-match" - require(JoinLike(_join).ilk() == _ilk); // "join-ilk-not-match" - require(JoinLike(_join).gem() == _gem); // "join-gem-not-match" - require(JoinLike(_join).dec() == _dec); // "join-dec-not-match" - require(ClipLike(_clip).vat() == _vat); // "clip-vat-not-match" - require(ClipLike(_clip).dog() == _dog); // "clip-dog-not-match" - require(ClipLike(_clip).ilk() == _ilk); // "clip-ilk-not-match" + uint256 _dec = ERC20(_gem).decimals(); + + require(JoinLike(_join).vat() == _vat); // "join-vat-not-match" + require(JoinLike(_join).ilk() == _ilk); // "join-ilk-not-match" + require(JoinLike(_join).gem() == _gem); // "join-gem-not-match" + require(JoinLike(_join).dec() == _dec); // "join-dec-not-match" + require(ClipLike(_clip).vat() == _vat); // "clip-vat-not-match" + require(ClipLike(_clip).dog() == _dog); // "clip-dog-not-match" + require(ClipLike(_clip).ilk() == _ilk); // "clip-ilk-not-match" require(ClipLike(_clip).spotter() == _spotter); // "clip-ilk-not-match" // Set the token PIP in the Spotter @@ -1034,10 +1120,12 @@ library DssExecLib { authorize(co.clip, clipperMom_); } - if (co.isOSM) { // If pip == OSM + if (co.isOSM) { + // If pip == OSM // Allow OsmMom to access to the TOKEN OSM authorize(co.pip, osmMom()); - if (co.whitelistOSM) { // If median is src in OSM + if (co.whitelistOSM) { + // If median is src in OSM // Whitelist OSM to read the Median data (only necessary if it is the first time the token is being added to an ilk) whitelistOracleMedians(co.pip); } @@ -1083,23 +1171,35 @@ library DssExecLib { updateCollateralPrice(co.ilk); } - /***************/ - /*** Payment ***/ - /***************/ + /** + * + */ + /** + * Payment ** + */ + /** + * + */ /// @dev Send a payment in either ERC20 USDS or DAI from the surplus buffer. /// @param _join The join adapter to exit the payment from. /// @param _target The target address to send the DAI to. /// @param _amount The amount to send in DAI (ex. 10m DAI amount == 10000000) - function sendPaymentFromSurplusBuffer(address _join,address _target, uint256 _amount) public { + function sendPaymentFromSurplusBuffer(address _join, address _target, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" DssVat(vat()).suck(vow(), address(this), _amount * RAD); JoinLike(_join).exit(_target, _amount * WAD); } - /************/ - /*** Misc ***/ - /************/ + /** + * + */ + /** + * Misc ** + */ + /** + * + */ /// @dev Initiate linear interpolation on an administrative value over time. /// @param _name The label for this lerp instance @@ -1118,15 +1218,7 @@ library DssExecLib { uint256 _end, uint256 _duration ) public returns (address) { - address lerp = LerpFactoryLike(lerpFab()).newLerp( - _name, - _target, - _what, - _startTime, - _start, - _end, - _duration - ); + address lerp = LerpFactoryLike(lerpFab()).newLerp(_name, _target, _what, _startTime, _start, _end, _duration); Authorizable(_target).rely(lerp); LerpLike(lerp).tick(); return lerp; @@ -1151,16 +1243,8 @@ library DssExecLib { uint256 _end, uint256 _duration ) public returns (address) { - address lerp = LerpFactoryLike(lerpFab()).newIlkLerp( - _name, - _target, - _ilk, - _what, - _startTime, - _start, - _end, - _duration - ); + address lerp = + LerpFactoryLike(lerpFab()).newIlkLerp(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); Authorizable(_target).rely(lerp); LerpLike(lerp).tick(); return lerp; diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 64a6dd3..6495436 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -23,7 +23,7 @@ import "forge-std/Test.sol"; import "dss-interfaces/Interfaces.sol"; import "../CollateralOpts.sol"; -import {DssTestAction, DssTestNoOfficeHoursAction} from './DssTestAction.sol'; +import {DssTestAction, DssTestNoOfficeHoursAction} from "./DssTestAction.sol"; import "./Mocks.sol"; interface ChainlogLike is ChainlogAbstract { @@ -36,7 +36,9 @@ interface PipLike { } interface ClipFabLike { - function newClip(address owner, address vat, address spotter, address dog, bytes32 ilk) external returns (address clip); + function newClip(address owner, address vat, address spotter, address dog, bytes32 ilk) + external + returns (address clip); } interface GemJoinFabLike { @@ -126,13 +128,13 @@ contract ActionTest is Test { ClipAbstract clip; } - mapping (bytes32 => Ilk) ilks; + mapping(bytes32 => Ilk) ilks; - uint256 constant public THOUSAND = 10 ** 3; - uint256 constant public MILLION = 10 ** 6; - uint256 constant public WAD = 10 ** 18; - uint256 constant public RAY = 10 ** 27; - uint256 constant public RAD = 10 ** 45; + uint256 public constant THOUSAND = 10 ** 3; + uint256 public constant MILLION = 10 ** 6; + uint256 public constant WAD = 10 ** 18; + uint256 public constant RAY = 10 ** 27; + uint256 public constant RAD = 10 ** 45; uint256 START_TIME; string constant doc = "QmcniBv7UQ4gGPQQW2BwbD4ZZHzN3o3tPuNLZCbBchd1zh"; @@ -144,90 +146,90 @@ contract ActionTest is Test { START_TIME = block.timestamp; - pause = DSPauseAbstract( LOG.getAddress("MCD_PAUSE")); - vat = VatAbstract( LOG.getAddress("MCD_VAT")); - end = EndAbstract( LOG.getAddress("MCD_END")); - vow = VowAbstract( LOG.getAddress("MCD_VOW")); - pot = PotAbstract( LOG.getAddress("MCD_POT")); - susds = SUsdsLike( LOG.getAddress("SUSDS")); - jug = JugAbstract( LOG.getAddress("MCD_JUG")); - dog = DogAbstract( LOG.getAddress("MCD_DOG")); - daiToken = DaiAbstract( LOG.getAddress("MCD_DAI")); - daiJoin = DaiJoinAbstract( LOG.getAddress("MCD_JOIN_DAI")); - usdsJoin = UsdsJoinLike( LOG.getAddress("USDS_JOIN")); - usdsToken = UsdsLike( LOG.getAddress("USDS")); - spot = SpotAbstract( LOG.getAddress("MCD_SPOT")); - flap = FlapUniV2Like( LOG.getAddress("MCD_FLAP")); - flop = FlopAbstract( LOG.getAddress("MCD_FLOP")); - gov = DSTokenAbstract( LOG.getAddress("MCD_GOV")); - mkr = DSTokenAbstract( LOG.getAddress("MKR")); - reg = IlkRegistryAbstract( LOG.getAddress("ILK_REGISTRY")); - osmMom = OsmMomAbstract( LOG.getAddress("OSM_MOM")); - clipperMom = ClipperMomAbstract( LOG.getAddress("CLIPPER_MOM")); - autoLine = DssAutoLineAbstract( LOG.getAddress("MCD_IAM_AUTO_LINE")); - lerpFab = LerpFactoryAbstract( LOG.getAddress("LERP_FAB")); - rwaOracle = RwaLiquidationOracleLike(LOG.getAddress("MIP21_LIQUIDATION_ORACLE")); - median = MedianAbstract(address(new MockMedian())); - - vm.label(address(pause), "PAUSE"); - vm.label(address(vat), "VAT"); - vm.label(address(end), "END"); - vm.label(address(vow), "VOW"); - vm.label(address(pot), "POT"); - vm.label(address(susds), "SUSDS"); - vm.label(address(jug), "JUG"); - vm.label(address(dog), "DOG"); - vm.label(address(daiToken), "DAI"); - vm.label(address(usdsToken), "USDS"); - vm.label(address(daiJoin), "DAI_JOIN"); - vm.label(address(usdsJoin), "USDS_JOIN"); - vm.label(address(spot), "SPOT"); - vm.label(address(flap), "FLAP"); - vm.label(address(flop), "FLOP"); - vm.label(address(gov), "GOV"); - vm.label(address(mkr), "MKR"); - vm.label(address(reg), "REG"); - vm.label(address(osmMom), "OSM_MOM"); + pause = DSPauseAbstract(LOG.getAddress("MCD_PAUSE")); + vat = VatAbstract(LOG.getAddress("MCD_VAT")); + end = EndAbstract(LOG.getAddress("MCD_END")); + vow = VowAbstract(LOG.getAddress("MCD_VOW")); + pot = PotAbstract(LOG.getAddress("MCD_POT")); + susds = SUsdsLike(LOG.getAddress("SUSDS")); + jug = JugAbstract(LOG.getAddress("MCD_JUG")); + dog = DogAbstract(LOG.getAddress("MCD_DOG")); + daiToken = DaiAbstract(LOG.getAddress("MCD_DAI")); + daiJoin = DaiJoinAbstract(LOG.getAddress("MCD_JOIN_DAI")); + usdsJoin = UsdsJoinLike(LOG.getAddress("USDS_JOIN")); + usdsToken = UsdsLike(LOG.getAddress("USDS")); + spot = SpotAbstract(LOG.getAddress("MCD_SPOT")); + flap = FlapUniV2Like(LOG.getAddress("MCD_FLAP")); + flop = FlopAbstract(LOG.getAddress("MCD_FLOP")); + gov = DSTokenAbstract(LOG.getAddress("MCD_GOV")); + mkr = DSTokenAbstract(LOG.getAddress("MKR")); + reg = IlkRegistryAbstract(LOG.getAddress("ILK_REGISTRY")); + osmMom = OsmMomAbstract(LOG.getAddress("OSM_MOM")); + clipperMom = ClipperMomAbstract(LOG.getAddress("CLIPPER_MOM")); + autoLine = DssAutoLineAbstract(LOG.getAddress("MCD_IAM_AUTO_LINE")); + lerpFab = LerpFactoryAbstract(LOG.getAddress("LERP_FAB")); + rwaOracle = RwaLiquidationOracleLike(LOG.getAddress("MIP21_LIQUIDATION_ORACLE")); + median = MedianAbstract(address(new MockMedian())); + + vm.label(address(pause), "PAUSE"); + vm.label(address(vat), "VAT"); + vm.label(address(end), "END"); + vm.label(address(vow), "VOW"); + vm.label(address(pot), "POT"); + vm.label(address(susds), "SUSDS"); + vm.label(address(jug), "JUG"); + vm.label(address(dog), "DOG"); + vm.label(address(daiToken), "DAI"); + vm.label(address(usdsToken), "USDS"); + vm.label(address(daiJoin), "DAI_JOIN"); + vm.label(address(usdsJoin), "USDS_JOIN"); + vm.label(address(spot), "SPOT"); + vm.label(address(flap), "FLAP"); + vm.label(address(flop), "FLOP"); + vm.label(address(gov), "GOV"); + vm.label(address(mkr), "MKR"); + vm.label(address(reg), "REG"); + vm.label(address(osmMom), "OSM_MOM"); vm.label(address(clipperMom), "CLIPPER_MOM"); - vm.label(address(autoLine), "AUTO_LINE"); - vm.label(address(lerpFab), "LERP_FAB"); - vm.label(address(rwaOracle), "RWA_LIQUITATION_ORACLE"); + vm.label(address(autoLine), "AUTO_LINE"); + vm.label(address(lerpFab), "LERP_FAB"); + vm.label(address(rwaOracle), "RWA_LIQUITATION_ORACLE"); vm.warp(START_TIME); action = new DssTestAction(); - giveAuth(address(vat), address(this)); - giveAuth(address(vat), address(action)); - giveAuth(address(spot), address(this)); - giveAuth(address(spot), address(action)); - giveAuth(address(susds), address(action)); - giveAuth(address(dog), address(this)); - giveAuth(address(dog), address(action)); - giveAuth(address(vow), address(action)); - giveAuth(address(end), address(action)); - giveAuth(address(pot), address(action)); - giveAuth(address(jug), address(this)); - giveAuth(address(jug), address(action)); - giveAuth(address(flap), address(action)); - giveAuth(address(flop), address(action)); - giveAuth(address(daiJoin), address(action)); - giveAuth(address(LOG), address(action)); - giveAuth(address(reg), address(this)); - giveAuth(address(reg), address(action)); - giveAuth(address(autoLine), address(action)); - giveAuth(address(lerpFab), address(action)); + giveAuth(address(vat), address(this)); + giveAuth(address(vat), address(action)); + giveAuth(address(spot), address(this)); + giveAuth(address(spot), address(action)); + giveAuth(address(susds), address(action)); + giveAuth(address(dog), address(this)); + giveAuth(address(dog), address(action)); + giveAuth(address(vow), address(action)); + giveAuth(address(end), address(action)); + giveAuth(address(pot), address(action)); + giveAuth(address(jug), address(this)); + giveAuth(address(jug), address(action)); + giveAuth(address(flap), address(action)); + giveAuth(address(flop), address(action)); + giveAuth(address(daiJoin), address(action)); + giveAuth(address(LOG), address(action)); + giveAuth(address(reg), address(this)); + giveAuth(address(reg), address(action)); + giveAuth(address(autoLine), address(action)); + giveAuth(address(lerpFab), address(action)); giveAuth(address(rwaOracle), address(this)); giveAuth(address(rwaOracle), address(action)); median.rely(address(action)); initCollateral("gold", address(action)); initRwaCollateral({ - ilk: "6s", + ilk: "6s", line: 20_000_000 * RAD, - tau: 365 days, + tau: 365 days, duty: 1000000000937303470807876289, // 3% APY - mat: 105 * RAY / 100 + mat: 105 * RAY / 100 }); vm.store(address(clipperMom), 0, bytes32(uint256(uint160(address(action))))); @@ -237,31 +239,38 @@ contract ActionTest is Test { function ray(uint256 wad) internal pure returns (uint256) { return wad * 10 ** 9; } + function rad(uint256 wad) internal pure returns (uint256) { return wad * RAY; } + function rmul(uint256 x, uint256 y) internal pure returns (uint256 z) { z = x * y / RAY; } + function rpow(uint256 x, uint256 n, uint256 b) internal pure returns (uint256 z) { assembly { - switch n case 0 { z := b } + switch n + case 0 { z := b } default { - switch x case 0 { z := 0 } + switch x + case 0 { z := 0 } default { - switch mod(n, 2) case 0 { z := b } default { z := x } - let half := div(b, 2) // for rounding. - for { n := div(n, 2) } n { n := div(n,2) } { + switch mod(n, 2) + case 0 { z := b } + default { z := x } + let half := div(b, 2) // for rounding. + for { n := div(n, 2) } n { n := div(n, 2) } { let xx := mul(x, x) - if shr(128, x) { revert(0,0) } + if shr(128, x) { revert(0, 0) } let xxRound := add(xx, half) - if lt(xxRound, xx) { revert(0,0) } + if lt(xxRound, xx) { revert(0, 0) } x := div(xxRound, b) - if mod(n,2) { + if mod(n, 2) { let zx := mul(z, x) - if and(iszero(iszero(x)), iszero(eq(div(zx, x), z))) { revert(0,0) } + if and(iszero(iszero(x)), iszero(eq(div(zx, x), z))) { revert(0, 0) } let zxRound := add(zx, half) - if lt(zxRound, zx) { revert(0,0) } + if lt(zxRound, zx) { revert(0, 0) } z := div(zxRound, b) } } @@ -269,28 +278,40 @@ contract ActionTest is Test { } } } + function min(uint256 x, uint256 y) internal pure returns (uint256 z) { (x >= y) ? z = y : z = x; } + function dai(address urn) internal view returns (uint256) { return vat.dai(urn) / RAY; } + function ink(bytes32 ilk, address urn) internal view returns (uint256) { - (uint256 ink_, uint256 art_) = vat.urns(ilk, urn); art_; + (uint256 ink_, uint256 art_) = vat.urns(ilk, urn); + art_; return ink_; } + function art(bytes32 ilk, address urn) internal view returns (uint256) { - (uint256 ink_, uint256 art_) = vat.urns(ilk, urn); ink_; + (uint256 ink_, uint256 art_) = vat.urns(ilk, urn); + ink_; return art_; } + function Art(bytes32 ilk) internal view returns (uint256) { (uint256 Art_, uint256 rate_, uint256 spot_, uint256 line_, uint256 dust_) = vat.ilks(ilk); - rate_; spot_; line_; dust_; + rate_; + spot_; + line_; + dust_; return Art_; } + function balanceOf(bytes32 ilk, address usr) internal view returns (uint256) { return ilks[ilk].gem.balanceOf(usr); } + function stringToBytes32(string memory source) public pure returns (bytes32 result) { assembly { result := mload(add(source, 32)) @@ -298,15 +319,16 @@ contract ActionTest is Test { } /** - * @notice Test that two values are approximately equal within a certain tolerance range - * @param _a First value - * @param _b Second value - * @param _tolerance Maximum tolerated difference, in absolute terms - */ + * @notice Test that two values are approximately equal within a certain tolerance range + * @param _a First value + * @param _b Second value + * @param _tolerance Maximum tolerated difference, in absolute terms + */ function assertEqApprox(uint256 _a, uint256 _b, uint256 _tolerance) internal { uint256 a = _a; uint256 b = _b; - if (a < b) { // if a < b, switch values so that a is always the biggest amount + if (a < b) { + // if a < b, switch values so that a is always the biggest amount uint256 tmp = a; a = b; b = tmp; @@ -327,25 +349,14 @@ contract ActionTest is Test { for (int256 i = 0; i < 100; i++) { // Scan the storage for the ward storage slot - bytes32 prevValue = vm.load( - address(base), - keccak256(abi.encode(target, uint256(i))) - ); - vm.store( - address(base), - keccak256(abi.encode(target, uint256(i))), - bytes32(uint256(1)) - ); + bytes32 prevValue = vm.load(address(base), keccak256(abi.encode(target, uint256(i)))); + vm.store(address(base), keccak256(abi.encode(target, uint256(i))), bytes32(uint256(1))); if (base.wards(target) == 1) { // Found it return; } else { // Keep going after restoring the original value - vm.store( - address(base), - keccak256(abi.encode(target, uint256(i))), - prevValue - ); + vm.store(address(base), keccak256(abi.encode(target, uint256(i))), prevValue); } } @@ -368,7 +379,8 @@ contract ActionTest is Test { osm.rely(address(clipperMom)); vat.init(name); - GemJoinAbstract join = GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), name, address(gem))); + GemJoinAbstract join = + GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), name, address(gem))); vat.file(name, "line", rad(1000 ether)); @@ -376,7 +388,11 @@ contract ActionTest is Test { vat.rely(address(join)); - ClipAbstract clip = ClipAbstract(ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip(address(this), address(vat), address(spot), address(dog), name)); + ClipAbstract clip = ClipAbstract( + ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip( + address(this), address(vat), address(spot), address(dog), name + ) + ); vat.hope(address(clip)); clip.rely(address(end)); clip.rely(address(dog)); @@ -400,22 +416,20 @@ contract ActionTest is Test { return ilks[name]; } - function initRwaCollateral( - bytes32 ilk, - uint256 line, - uint48 tau, - uint256 duty, - uint256 mat - ) internal { + function initRwaCollateral(bytes32 ilk, uint256 line, uint48 tau, uint256 duty, uint256 mat) internal { uint256 val = rmul(rmul(line / RAY, mat), rpow(duty, 2 * 365 days, RAY)); rwaOracle.init(ilk, val, doc, tau); - (,address pip,,) = rwaOracle.ilks(ilk); + (, address pip,,) = rwaOracle.ilks(ilk); spot.file(ilk, "pip", pip); vat.init(ilk); jug.init(ilk); string memory name = string(abi.encodePacked(ilk)); - DSTokenAbstract token = DSTokenAbstract(RwaTokenFactoryLike(LOG.getAddress("RWA_TOKEN_FAB")).createRwaToken(name, name, address(this))); - AuthGemJoinAbstract join = AuthGemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newAuthGemJoin(address(this), ilk, address(token))); + DSTokenAbstract token = DSTokenAbstract( + RwaTokenFactoryLike(LOG.getAddress("RWA_TOKEN_FAB")).createRwaToken(name, name, address(this)) + ); + AuthGemJoinAbstract join = AuthGemJoinAbstract( + GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newAuthGemJoin(address(this), ilk, address(token)) + ); vat.rely(address(join)); vat.rely(address(rwaOracle)); vat.file(ilk, "line", line); @@ -425,13 +439,12 @@ contract ActionTest is Test { spot.poke(ilk); } - // /******************************/ // /*** OfficeHours Management ***/ // /******************************/ function test_canCast() public view { - assertTrue(action.canCast_test(1616169600, true)); // Friday 2021/03/19, 4:00:00 PM GMT + assertTrue(action.canCast_test(1616169600, true)); // Friday 2021/03/19, 4:00:00 PM GMT assertTrue(action.canCast_test(1616169600, false)); // Friday 2021/03/19, 4:00:00 PM GMT assertTrue(action.canCast_test(1616256000, false)); // Saturday 2021/03/20, 4:00:00 PM GMT @@ -497,10 +510,15 @@ contract ActionTest is Test { assertEq(vat.can(address(action), address(1)), 0); } - /****************************/ - /*** Changelog Management ***/ - /****************************/ - + /** + * + */ + /** + * Changelog Management ** + */ + /** + * + */ function test_setAddress() public { bytes32 ilk = "silver"; action.setChangelogAddress_test(ilk, address(this)); @@ -525,10 +543,15 @@ contract ActionTest is Test { assertEq(LOG.sha256sum(), SHA256); } - /**************************/ - /*** Accumulating Rates ***/ - /**************************/ - + /** + * + */ + /** + * Accumulating Rates ** + */ + /** + * + */ function test_accumulateDSR() public { uint256 beforeChi = pot.chi(); action.setDSR_test(1000000001243680656318820312); // 4% @@ -564,10 +587,15 @@ contract ActionTest is Test { assertGt(afterRate, beforeRate); } - /*********************/ - /*** Price Updates ***/ - /*********************/ - + /** + * + */ + /** + * Price Updates ** + */ + /** + * + */ function test_updateCollateralPrice() public { uint256 _spot; @@ -581,36 +609,46 @@ contract ActionTest is Test { assertEq(_spot, ray(5 ether)); // $5 at 200% } - /****************************/ - /*** System Configuration ***/ - /****************************/ - + /** + * + */ + /** + * System Configuration ** + */ + /** + * + */ function test_setContract() public { action.setContract_test(address(jug), "vow", address(1)); assertEq(jug.vow(), address(1)); } - /******************************/ - /*** System Risk Parameters ***/ - /******************************/ - + /** + * + */ + /** + * System Risk Parameters ** + */ + /** + * + */ function test_setGlobalDebtCeiling() public { action.setGlobalDebtCeiling_test(100 * MILLION); // 100,000,000 Dai - assertEq(vat.Line(), 100 * MILLION * RAD); // Fixes precision + assertEq(vat.Line(), 100 * MILLION * RAD); // Fixes precision } function test_increaseGlobalDebtCeiling() public { action.setGlobalDebtCeiling_test(100 * MILLION); // setup action.increaseGlobalDebtCeiling_test(100 * MILLION); // 100,000,000 Dai - assertEq(vat.Line(), 200 * MILLION * RAD); // Fixes precision + assertEq(vat.Line(), 200 * MILLION * RAD); // Fixes precision } function test_decreaseGlobalDebtCeiling() public { action.setGlobalDebtCeiling_test(300 * MILLION); // setup action.decreaseGlobalDebtCeiling_test(100 * MILLION); // 100,000,000 Dai - assertEq(vat.Line(), 200 * MILLION * RAD); // Fixes precision + assertEq(vat.Line(), 200 * MILLION * RAD); // Fixes precision } function test_decreaseGlobalDebtCeilingReverts() public { @@ -673,7 +711,7 @@ contract ActionTest is Test { function test_setDebtAuctionBidDurationMaxReverts() public { vm.expectRevert(); - action.setDebtAuctionBidDuration_test(type(uint48).max); // Fail on max + action.setDebtAuctionBidDuration_test(type(uint48).max); // Fail on max } function test_setDebtAuctionDuration() public { @@ -683,7 +721,7 @@ contract ActionTest is Test { function test_setDebtAuctionDurationMaxReverts() public { vm.expectRevert(); - action.setDebtAuctionDuration_test(type(uint48).max); // Fail on max + action.setDebtAuctionDuration_test(type(uint48).max); // Fail on max } function test_setDebtAuctionMKRIncreaseRate() public { @@ -693,7 +731,7 @@ contract ActionTest is Test { function test_setDebtAuctionMKRIncreaseRateTooHighReverts() public { vm.expectRevert(); - action.setDebtAuctionMKRIncreaseRate_test(10000); // Fail on 100% + action.setDebtAuctionMKRIncreaseRate_test(10000); // Fail on 100% } function test_setMaxTotalDAILiquidationAmount() public { @@ -717,10 +755,15 @@ contract ActionTest is Test { assertEq(spot.par(), ray(1.005 ether)); } - /*****************************/ - /*** Collateral Management ***/ - /*****************************/ - + /** + * + */ + /** + * Collateral Management ** + */ + /** + * + */ function test_setIlkDebtCeiling() public { action.setIlkDebtCeiling_test("gold", 100 * MILLION); (,,, uint256 line,) = vat.ilks("gold"); @@ -755,7 +798,7 @@ contract ActionTest is Test { } function test_setRWAIlkDebtCeiling() public { - (,address pip,,) = rwaOracle.ilks("6s"); + (, address pip,,) = rwaOracle.ilks("6s"); uint256 price = uint256(PipLike(pip).read()); assertEqApprox(price, 22_278_900 * WAD, WAD); // 20MM * 1.03^2 * 1.05 action.setRWAIlkDebtCeiling_test("6s", 50 * MILLION, 55 * MILLION); // Increase @@ -833,7 +876,7 @@ contract ActionTest is Test { function test_setIlkLiquidationPenalty() public { action.setIlkLiquidationPenalty_test("gold", 1325); // 13.25% (, uint256 chop,,) = dog.ilks("gold"); - assertEq(chop, 113.25 ether / 100); // WAD pct 113.25% + assertEq(chop, 113.25 ether / 100); // WAD pct 113.25% } function test_setIlkMaxLiquidationAmount() public { @@ -876,7 +919,6 @@ contract ActionTest is Test { function test_setLiquidationBreakerPriceTolerance() public { action.setLiquidationBreakerPriceTolerance_test(address(ilks["gold"].clip), 6000); assertEq(clipperMom.tolerance(address(ilks["gold"].clip)), 600000000000000000000000000); - } function test_setIlkStabilityFee() public { @@ -887,19 +929,27 @@ contract ActionTest is Test { assertEq(rho, START_TIME + 1 days); } - /**************************/ - /*** Pricing Management ***/ - /**************************/ - + /** + * + */ + /** + * Pricing Management ** + */ + /** + * + */ function test_setLinearDecrease() public { - LinearDecreaseAbstract calc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); + LinearDecreaseAbstract calc = + LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); calc.rely(address(action)); action.setLinearDecrease_test(address(calc), 14 hours); assertEq(calc.tau(), 14 hours); } function test_setStairstepExponentialDecrease() public { - StairstepExponentialDecreaseAbstract calc = StairstepExponentialDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newStairstepExponentialDecrease(address(this))); + StairstepExponentialDecreaseAbstract calc = StairstepExponentialDecreaseAbstract( + CalcFabLike(LOG.getAddress("CALC_FAB")).newStairstepExponentialDecrease(address(this)) + ); calc.rely(address(action)); action.setStairstepExponentialDecrease_test(address(calc), 90, 9999); // 90 seconds per step, 99.99% multiplicative assertEq(calc.step(), 90); @@ -907,17 +957,22 @@ contract ActionTest is Test { } function test_setExponentialDecrease() public { - ExponentialDecreaseAbstract calc = ExponentialDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newExponentialDecrease(address(this))); + ExponentialDecreaseAbstract calc = + ExponentialDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newExponentialDecrease(address(this))); calc.rely(address(action)); action.setExponentialDecrease_test(address(calc), 9999); // 99.99% multiplicative assertEq(calc.cut(), 999900000000000000000000000); } - - /*************************/ - /*** Oracle Management ***/ - /*************************/ - + /** + * + */ + /** + * Oracle Management ** + */ + /** + * + */ function test_whitelistOracleOSM() public { address tokenPip = address(new MockOsm(address(median))); @@ -930,12 +985,16 @@ contract ActionTest is Test { // Mock an LP oracle and whitelist it address token0 = address(new MockToken("nil")); address token1 = address(new MockToken("one")); - MedianAbstract med0 = MedianAbstract(address(new MockMedian())); - MedianAbstract med1 = MedianAbstract(address(new MockMedian())); - address lperc = address(new MockUniPair(token0, token1)); + MedianAbstract med0 = MedianAbstract(address(new MockMedian())); + MedianAbstract med1 = MedianAbstract(address(new MockMedian())); + address lperc = address(new MockUniPair(token0, token1)); med0.rely(address(action)); med1.rely(address(action)); - LPOsmAbstract lorc = LPOsmAbstract(Univ2OracleFactoryLike(UNIV2ORACLE_FAB).build(address(this), address(lperc), "NILONE", address(med0), address(med1))); + LPOsmAbstract lorc = LPOsmAbstract( + Univ2OracleFactoryLike(UNIV2ORACLE_FAB).build( + address(this), address(lperc), "NILONE", address(med0), address(med1) + ) + ); assertEq(med0.bud(address(lorc)), 0); assertEq(med1.bud(address(lorc)), 0); @@ -948,12 +1007,16 @@ contract ActionTest is Test { // Should not fail for LP tokens if one or more oracles are DSValue address token0 = address(new MockToken("nil")); address token1 = address(new MockToken("one")); - DSValueAbstract med0 = DSValueAbstract(address(new MockValue())); - DSValueAbstract med1 = DSValueAbstract(address(new MockValue())); - address lperc = address(new MockUniPair(token0, token1)); + DSValueAbstract med0 = DSValueAbstract(address(new MockValue())); + DSValueAbstract med1 = DSValueAbstract(address(new MockValue())); + address lperc = address(new MockUniPair(token0, token1)); med0.poke(bytes32(uint256(100))); med1.poke(bytes32(uint256(100))); - LPOsmAbstract lorc = LPOsmAbstract(Univ2OracleFactoryLike(UNIV2ORACLE_FAB).build(address(this), address(lperc), "NILONE", address(med0), address(med1))); + LPOsmAbstract lorc = LPOsmAbstract( + Univ2OracleFactoryLike(UNIV2ORACLE_FAB).build( + address(this), address(lperc), "NILONE", address(med0), address(med1) + ) + ); action.whitelistOracleMedians_test(address(lorc)); } @@ -984,10 +1047,15 @@ contract ActionTest is Test { assertEq(osmMom.osms("gold"), address(osm)); } - /**********************************/ - /*** Governance Security Module ***/ - /**********************************/ - + /** + * + */ + /** + * Governance Security Module ** + */ + /** + * + */ function test_setGSMDelay() public { // Because of the `wait` modifier in MCD_PAUSE, we need to prank delegatecalls as well, // since this will be the opcode used by `setGSMDelay_test` when calling `DssExecLib` @@ -1003,10 +1071,15 @@ contract ActionTest is Test { action.setGSMDelay_test(8 hours); // delay-too-low. Min: 12 hours } - /*****************************/ - /*** Direct Deposit Module ***/ - /*****************************/ - + /** + * + */ + /** + * Direct Deposit Module ** + */ + /** + * + */ function test_setDDMTargetInterestRate() public { DDMLike ddm = DDMLike(LOG.getAddress("DIRECT_AAVEV2_DAI_PLAN")); giveAuth(address(ddm), address(action)); @@ -1014,27 +1087,38 @@ contract ActionTest is Test { action.setDDMTargetInterestRate_test(address(ddm), 500); // set to 5% assertEq(ddm.bar(), 5 * RAY / 100); - action.setDDMTargetInterestRate_test(address(ddm), 0); // set to 0% + action.setDDMTargetInterestRate_test(address(ddm), 0); // set to 0% assertEq(ddm.bar(), 0); action.setDDMTargetInterestRate_test(address(ddm), 1000); // set to 10% assertEq(ddm.bar(), 10 * RAY / 100); } - /*****************************/ - /*** Collateral Onboarding ***/ - /*****************************/ - + /** + * + */ + /** + * Collateral Onboarding ** + */ + /** + * + */ function test_collateralOnboardingBase() public { string memory silk = "silver"; bytes32 ilk = stringToBytes32(silk); - DSTokenAbstract token = DSTokenAbstract(address(new MockToken(silk))); - GemJoinAbstract tokenJoin = GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), ilk, address(token))); - ClipAbstract tokenClip = ClipAbstract(ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip(address(this), address(vat), address(spot), address(dog), ilk)); - LinearDecreaseAbstract tokenCalc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); + DSTokenAbstract token = DSTokenAbstract(address(new MockToken(silk))); + GemJoinAbstract tokenJoin = + GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), ilk, address(token))); + ClipAbstract tokenClip = ClipAbstract( + ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip( + address(this), address(vat), address(spot), address(dog), ilk + ) + ); + LinearDecreaseAbstract tokenCalc = + LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); tokenCalc.file("tau", 1); - address tokenPip = address(DSValueAbstract(address(new MockValue()))); + address tokenPip = address(DSValueAbstract(address(new MockValue()))); tokenPip = address(new MockOsm(address(tokenPip))); OsmAbstract(tokenPip).rely(address(action)); @@ -1043,14 +1127,16 @@ contract ActionTest is Test { tokenClip.deny(address(this)); tokenJoin.deny(address(this)); - action.addCollateralBase_test(ilk, address(token), address(tokenJoin), address(tokenClip), address(tokenCalc), tokenPip); + action.addCollateralBase_test( + ilk, address(token), address(tokenJoin), address(tokenClip), address(tokenCalc), tokenPip + ); assertEq(vat.wards(address(tokenJoin)), 1); assertEq(dog.wards(address(tokenClip)), 1); assertEq(tokenClip.wards(address(end)), 1); - (,,uint256 _class, uint256 _dec, address _gem, address _pip, address _join, address _xlip) = reg.info(ilk); + (,, uint256 _class, uint256 _dec, address _gem, address _pip, address _join, address _xlip) = reg.info(ilk); assertEq(_class, 1); assertEq(_dec, 18); @@ -1062,16 +1148,21 @@ contract ActionTest is Test { } function collateralOnboardingTest(bool liquidatable, bool isOsm, bool medianSrc) internal { - string memory silk = "silver"; bytes32 ilk = stringToBytes32(silk); - address token = address(new MockToken(silk)); - GemJoinAbstract tokenJoin = GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), ilk, address(token))); - ClipAbstract tokenClip = ClipAbstract(ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip(address(this), address(vat), address(spot), address(dog), ilk)); - LinearDecreaseAbstract tokenCalc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); + address token = address(new MockToken(silk)); + GemJoinAbstract tokenJoin = + GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), ilk, address(token))); + ClipAbstract tokenClip = ClipAbstract( + ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip( + address(this), address(vat), address(spot), address(dog), ilk + ) + ); + LinearDecreaseAbstract tokenCalc = + LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); tokenCalc.file("tau", 1); - address tokenPip = address(DSValueAbstract(address(new MockValue()))); + address tokenPip = address(DSValueAbstract(address(new MockValue()))); if (isOsm) { tokenPip = medianSrc ? address(new MockOsm(address(median))) : address(new MockOsm(address(tokenPip))); @@ -1088,27 +1179,27 @@ contract ActionTest is Test { action.addNewCollateral_test( CollateralOpts({ - ilk: ilk, - gem: token, - join: address(tokenJoin), - clip: address(tokenClip), - calc: address(tokenCalc), - pip: tokenPip, - isLiquidatable: liquidatable, - isOSM: isOsm, - whitelistOSM: medianSrc, - ilkDebtCeiling: 100 * MILLION, - minVaultAmount: 100, - maxLiquidationAmount: 50 * THOUSAND, - liquidationPenalty: 1300, - ilkStabilityFee: 1000000001243680656318820312, - startingPriceFactor: 13000, - breakerTolerance: 6000, - auctionDuration: 6 hours, - permittedDrop: 4000, - liquidationRatio: 15000, - kprFlatReward: 100, - kprPctReward: 10 + ilk: ilk, + gem: token, + join: address(tokenJoin), + clip: address(tokenClip), + calc: address(tokenCalc), + pip: tokenPip, + isLiquidatable: liquidatable, + isOSM: isOsm, + whitelistOSM: medianSrc, + ilkDebtCeiling: 100 * MILLION, + minVaultAmount: 100, + maxLiquidationAmount: 50 * THOUSAND, + liquidationPenalty: 1300, + ilkStabilityFee: 1000000001243680656318820312, + startingPriceFactor: 13000, + breakerTolerance: 6000, + auctionDuration: 6 hours, + permittedDrop: 4000, + liquidationRatio: 15000, + kprFlatReward: 100, + kprPctReward: 10 }) ); @@ -1116,29 +1207,29 @@ contract ActionTest is Test { } { - assertEq(vat.wards(address(tokenJoin)), 1); - assertEq(dog.wards(address(tokenClip)), 1); + assertEq(vat.wards(address(tokenJoin)), 1); + assertEq(dog.wards(address(tokenClip)), 1); - assertEq(tokenClip.wards(address(end)), 1); - assertEq(tokenClip.wards(address(dog)), 1); // Use "stopped" instead of ward to disable. - - if (liquidatable) { - assertEq(tokenClip.stopped(), 0); - assertEq(tokenClip.wards(address(clipperMom)), 1); - } else { - assertEq(tokenClip.stopped(), 3); - assertEq(tokenClip.wards(address(clipperMom)), 0); - } + assertEq(tokenClip.wards(address(end)), 1); + assertEq(tokenClip.wards(address(dog)), 1); // Use "stopped" instead of ward to disable. + + if (liquidatable) { + assertEq(tokenClip.stopped(), 0); + assertEq(tokenClip.wards(address(clipperMom)), 1); + } else { + assertEq(tokenClip.stopped(), 3); + assertEq(tokenClip.wards(address(clipperMom)), 0); + } } if (isOsm) { - assertEq(OsmAbstract(tokenPip).wards(address(osmMom)), 1); - assertEq(OsmAbstract(tokenPip).bud(address(spot)), 1); - assertEq(OsmAbstract(tokenPip).bud(address(tokenClip)), 1); - assertEq(OsmAbstract(tokenPip).bud(address(clipperMom)), 1); - assertEq(OsmAbstract(tokenPip).bud(address(end)), 1); + assertEq(OsmAbstract(tokenPip).wards(address(osmMom)), 1); + assertEq(OsmAbstract(tokenPip).bud(address(spot)), 1); + assertEq(OsmAbstract(tokenPip).bud(address(tokenClip)), 1); + assertEq(OsmAbstract(tokenPip).bud(address(clipperMom)), 1); + assertEq(OsmAbstract(tokenPip).bud(address(end)), 1); - if (medianSrc) assertEq(median.bud(tokenPip), 1); + if (medianSrc) assertEq(median.bud(tokenPip), 1); assertEq(osmMom.osms(ilk), tokenPip); } @@ -1149,7 +1240,7 @@ contract ActionTest is Test { assertEq(dust, 100 * RAD); assertEq(hole, 50 * THOUSAND * RAD); assertEq(dirt, 0); - assertEq(chop, 113 ether / 100); // WAD pct 113% + assertEq(chop, 113 ether / 100); // WAD pct 113% (uint256 duty, uint256 rho) = jug.ilks(ilk); assertEq(duty, 1000000001243680656318820312); @@ -1175,33 +1266,44 @@ contract ActionTest is Test { } function test_addNewCollateralCase1() public { - collateralOnboardingTest(true, true, true); // Liquidations: ON, PIP == OSM, osmSrc == median + collateralOnboardingTest(true, true, true); // Liquidations: ON, PIP == OSM, osmSrc == median } + function test_addNewCollateralCase2() public { - collateralOnboardingTest(true, true, false); // Liquidations: ON, PIP == OSM, osmSrc != median + collateralOnboardingTest(true, true, false); // Liquidations: ON, PIP == OSM, osmSrc != median } + function test_addNewCollateralCase3() public { - collateralOnboardingTest(true, false, false); // Liquidations: ON, PIP != OSM, osmSrc != median + collateralOnboardingTest(true, false, false); // Liquidations: ON, PIP != OSM, osmSrc != median } + function test_addNewCollateralCase4() public { - collateralOnboardingTest(false, true, true); // Liquidations: OFF, PIP == OSM, osmSrc == median + collateralOnboardingTest(false, true, true); // Liquidations: OFF, PIP == OSM, osmSrc == median } + function test_addNewCollateralCase5() public { - collateralOnboardingTest(false, true, false); // Liquidations: OFF, PIP == OSM, osmSrc != median + collateralOnboardingTest(false, true, false); // Liquidations: OFF, PIP == OSM, osmSrc != median } + function test_addNewCollateralCase6() public { collateralOnboardingTest(false, false, false); // Liquidations: OFF, PIP != OSM, osmSrc != median } + function test_officeHoursCanOverrideInAction() public { DssTestNoOfficeHoursAction actionNoOfficeHours = new DssTestNoOfficeHoursAction(); actionNoOfficeHours.execute(); assertTrue(!actionNoOfficeHours.officeHours()); } - /***************/ - /*** Payment ***/ - /***************/ - + /** + * + */ + /** + * Payment ** + */ + /** + * + */ function test_sendPaymentFromSurplusBuffer_DAI() public { address target = address(this); @@ -1238,12 +1340,21 @@ contract ActionTest is Test { assertEq(vat.sin(address(vow)), vowSinPrev + 100 * RAD); } - /************/ - /*** Misc ***/ - /************/ - + /** + * + */ + /** + * Misc ** + */ + /** + * + */ function test_lerpLine() public { - LerpAbstract lerp = LerpAbstract(action.linearInterpolation_test("myLerp001", address(vat), "Line", block.timestamp, rad(2400 ether), rad(0 ether), 1 days)); + LerpAbstract lerp = LerpAbstract( + action.linearInterpolation_test( + "myLerp001", address(vat), "Line", block.timestamp, rad(2400 ether), rad(0 ether), 1 days + ) + ); assertEq(lerp.what(), "Line"); assertEq(lerp.start(), rad(2400 ether)); assertEq(lerp.end(), rad(0 ether)); @@ -1254,7 +1365,7 @@ contract ActionTest is Test { vm.warp(block.timestamp + 1 hours); assertEq(vat.Line(), rad(2400 ether)); lerp.tick(); - assertEq(vat.Line(), rad(2300 ether + 1600)); // Small amount at the end is rounding errors + assertEq(vat.Line(), rad(2300 ether + 1600)); // Small amount at the end is rounding errors vm.warp(block.timestamp + 1 hours); lerp.tick(); assertEq(vat.Line(), rad(2200 ether + 800)); @@ -1271,7 +1382,11 @@ contract ActionTest is Test { function test_lerpIlkLine() public { bytes32 ilk = "gold"; - LerpAbstract lerp = LerpAbstract(action.linearInterpolation_test("myLerp001", address(vat), ilk, "line", block.timestamp, rad(2400 ether), rad(0 ether), 1 days)); + LerpAbstract lerp = LerpAbstract( + action.linearInterpolation_test( + "myLerp001", address(vat), ilk, "line", block.timestamp, rad(2400 ether), rad(0 ether), 1 days + ) + ); lerp.tick(); assertEq(lerp.what(), "line"); assertEq(lerp.start(), rad(2400 ether)); @@ -1282,24 +1397,24 @@ contract ActionTest is Test { assertEq(lerp.startTime(), block.timestamp); assertEq(line, rad(2400 ether)); vm.warp(block.timestamp + 1 hours); - (,,,line,) = vat.ilks(ilk); + (,,, line,) = vat.ilks(ilk); assertEq(line, rad(2400 ether)); lerp.tick(); - (,,,line,) = vat.ilks(ilk); - assertEq(line, rad(2300 ether + 1600)); // Small amount at the end is rounding errors + (,,, line,) = vat.ilks(ilk); + assertEq(line, rad(2300 ether + 1600)); // Small amount at the end is rounding errors vm.warp(block.timestamp + 1 hours); lerp.tick(); - (,,,line,) = vat.ilks(ilk); + (,,, line,) = vat.ilks(ilk); assertEq(line, rad(2200 ether + 800)); vm.warp(block.timestamp + 6 hours); lerp.tick(); - (,,,line,) = vat.ilks(ilk); + (,,, line,) = vat.ilks(ilk); assertEq(line, rad(1600 ether + 800)); vm.warp(block.timestamp + 1 days); - (,,,line,) = vat.ilks(ilk); + (,,, line,) = vat.ilks(ilk); assertEq(line, rad(1600 ether + 800)); lerp.tick(); - (,,,line,) = vat.ilks(ilk); + (,,, line,) = vat.ilks(ilk); assertEq(line, rad(0 ether)); assertTrue(lerp.done()); assertEq(vat.wards(address(lerp)), 0); diff --git a/src/test/DssExec.t.sol b/src/test/DssExec.t.sol index fd4ec2d..c0612bb 100644 --- a/src/test/DssExec.t.sol +++ b/src/test/DssExec.t.sol @@ -34,7 +34,9 @@ interface SpellLike { } interface ClipFabLike { - function newClip(address owner, address vat, address spotter, address dog, bytes32 ilk) external returns (address clip); + function newClip(address owner, address vat, address spotter, address dog, bytes32 ilk) + external + returns (address clip); } interface GemJoinFabLike { @@ -45,51 +47,58 @@ interface CalcFabLike { function newLinearDecrease(address owner) external returns (address calc); } -contract DssLibSpellAction is DssAction { // This could be changed to a library if the lib is hardcoded and the constructor removed +contract DssLibSpellAction is + DssAction // This could be changed to a library if the lib is hardcoded and the constructor removed +{ + ChainlogAbstract public constant LOG = ChainlogAbstract(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); - ChainlogAbstract constant public LOG = ChainlogAbstract(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); - - function description() external override pure returns (string memory) { + function description() external pure override returns (string memory) { return "DssLibSpellAction Description"; } - uint256 constant MILLION = 10 ** 6; + uint256 constant MILLION = 10 ** 6; function actions() public override { - // Basic cob setup - DSTokenAbstract xmpl_gem = DSTokenAbstract(0xCE4F3774620764Ea881a8F8840Cbe0F701372283); - ClipAbstract xmpl_clip = ClipAbstract(ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip(DssExecLib.pauseProxy(), DssExecLib.vat(), DssExecLib.spotter(), DssExecLib.dog(), "XMPL-A")); - GemJoinAbstract xmpl_join = GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), "XMPL-A", address(xmpl_gem))); + DSTokenAbstract xmpl_gem = DSTokenAbstract(0xCE4F3774620764Ea881a8F8840Cbe0F701372283); + ClipAbstract xmpl_clip = ClipAbstract( + ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip( + DssExecLib.pauseProxy(), DssExecLib.vat(), DssExecLib.spotter(), DssExecLib.dog(), "XMPL-A" + ) + ); + GemJoinAbstract xmpl_join = GemJoinAbstract( + GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), "XMPL-A", address(xmpl_gem)) + ); xmpl_clip.rely(DssExecLib.pauseProxy()); xmpl_join.rely(DssExecLib.pauseProxy()); address xmpl_pip = 0x7a5918670B0C390aD25f7beE908c1ACc2d314A3C; // Using USDT pip as a dummy - LinearDecreaseAbstract xmpl_calc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); + LinearDecreaseAbstract xmpl_calc = + LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); DssExecLib.setLinearDecrease(address(xmpl_calc), 1); CollateralOpts memory XMPL_A = CollateralOpts({ - ilk: "XMPL-A", - gem: address(xmpl_gem), - join: address(xmpl_join), - clip: address(xmpl_clip), - calc: address(xmpl_calc), - pip: xmpl_pip, - isLiquidatable: true, - isOSM: true, - whitelistOSM: true, - ilkDebtCeiling: 3 * MILLION, - minVaultAmount: 2000, - maxLiquidationAmount: 50000, - liquidationPenalty: 1300, - ilkStabilityFee: 1000000000705562181084137268, - startingPriceFactor: 13000, - breakerTolerance: 7000, // Allows for a 30% hourly price drop before disabling liquidations - auctionDuration: 10 hours, - permittedDrop: 4000, - liquidationRatio: 15000, - kprFlatReward: 5, // 5 Dai - kprPctReward: 5 // 0.05% + ilk: "XMPL-A", + gem: address(xmpl_gem), + join: address(xmpl_join), + clip: address(xmpl_clip), + calc: address(xmpl_calc), + pip: xmpl_pip, + isLiquidatable: true, + isOSM: true, + whitelistOSM: true, + ilkDebtCeiling: 3 * MILLION, + minVaultAmount: 2000, + maxLiquidationAmount: 50000, + liquidationPenalty: 1300, + ilkStabilityFee: 1000000000705562181084137268, + startingPriceFactor: 13000, + breakerTolerance: 7000, // Allows for a 30% hourly price drop before disabling liquidations + auctionDuration: 10 hours, + permittedDrop: 4000, + liquidationRatio: 15000, + kprFlatReward: 5, // 5 Dai + kprPctReward: 5 // 0.05% }); DssExecLib.addNewCollateral(XMPL_A); @@ -102,12 +111,10 @@ contract DssLibSpellAction is DssAction { // This could be changed to a library DssExecLib.setAuctionTimeBeforeReset("LINK-A", 2 hours); DssExecLib.setKeeperIncentivePercent("LINK-A", 2); // 0.02% keeper incentive DssExecLib.setGlobalDebtCeiling(10000 * MILLION); - } } contract DssLibExecTest is Test { - struct CollateralValues { uint256 line; uint256 dust; @@ -137,12 +144,12 @@ contract DssLibExecTest is Test { uint256 vow_hump; uint256 dog_Hole; uint256 ilk_count; - mapping (bytes32 => CollateralValues) collaterals; + mapping(bytes32 => CollateralValues) collaterals; } event Debug(uint256); - ChainlogAbstract constant public LOG = ChainlogAbstract(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); + ChainlogAbstract public constant LOG = ChainlogAbstract(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); // MAINNET ADDRESSES address pauseProxy; @@ -170,33 +177,33 @@ contract DssLibExecTest is Test { DssExec spell; - uint256 constant HUNDRED = 10 ** 2; + uint256 constant HUNDRED = 10 ** 2; uint256 constant THOUSAND = 10 ** 3; - uint256 constant MILLION = 10 ** 6; - uint256 constant BILLION = 10 ** 9; - uint256 constant WAD = 10 ** 18; - uint256 constant RAY = 10 ** 27; - uint256 constant RAD = 10 ** 45; + uint256 constant MILLION = 10 ** 6; + uint256 constant BILLION = 10 ** 9; + uint256 constant WAD = 10 ** 18; + uint256 constant RAY = 10 ** 27; + uint256 constant RAD = 10 ** 45; function setUp() public { vm.createSelectFork("mainnet"); - pauseProxy = LOG.getAddress("MCD_PAUSE_PROXY"); - pause = PauseAbstract( LOG.getAddress("MCD_PAUSE")); - chief = DSChiefAbstract( LOG.getAddress("MCD_ADM")); - vat = VatAbstract( LOG.getAddress("MCD_VAT")); - vow = VowAbstract( LOG.getAddress("MCD_VOW")); - dog = DogAbstract( LOG.getAddress("MCD_DOG")); - pot = PotAbstract( LOG.getAddress("MCD_POT")); - jug = JugAbstract( LOG.getAddress("MCD_JUG")); - spot = SpotAbstract( LOG.getAddress("MCD_SPOT")); - gov = DSTokenAbstract( LOG.getAddress("MCD_GOV")); - end = EndAbstract( LOG.getAddress("MCD_END")); - reg = IlkRegistryAbstract(LOG.getAddress("ILK_REGISTRY")); - osmMom = OsmMomAbstract( LOG.getAddress("OSM_MOM")); - clipMom = ClipperMomAbstract( LOG.getAddress("CLIPPER_MOM")); - xmpl = GemAbstract( 0xCE4F3774620764Ea881a8F8840Cbe0F701372283); - pipXMPL = OsmAbstract( LOG.getAddress("PIP_USDT")); + pauseProxy = LOG.getAddress("MCD_PAUSE_PROXY"); + pause = PauseAbstract(LOG.getAddress("MCD_PAUSE")); + chief = DSChiefAbstract(LOG.getAddress("MCD_ADM")); + vat = VatAbstract(LOG.getAddress("MCD_VAT")); + vow = VowAbstract(LOG.getAddress("MCD_VOW")); + dog = DogAbstract(LOG.getAddress("MCD_DOG")); + pot = PotAbstract(LOG.getAddress("MCD_POT")); + jug = JugAbstract(LOG.getAddress("MCD_JUG")); + spot = SpotAbstract(LOG.getAddress("MCD_SPOT")); + gov = DSTokenAbstract(LOG.getAddress("MCD_GOV")); + end = EndAbstract(LOG.getAddress("MCD_END")); + reg = IlkRegistryAbstract(LOG.getAddress("ILK_REGISTRY")); + osmMom = OsmMomAbstract(LOG.getAddress("OSM_MOM")); + clipMom = ClipperMomAbstract(LOG.getAddress("CLIPPER_MOM")); + xmpl = GemAbstract(0xCE4F3774620764Ea881a8F8840Cbe0F701372283); + pipXMPL = OsmAbstract(LOG.getAddress("PIP_USDT")); rates = new Rates(); @@ -207,82 +214,89 @@ contract DssLibExecTest is Test { // Test for all system configuration changes - afterSpell.dsr_rate = 0; // In basis points - afterSpell.vat_Line = 10000 * MILLION; // In whole Dai units - afterSpell.pause_delay = pause.delay(); // In seconds - afterSpell.vow_wait = vow.wait(); // In seconds - afterSpell.vow_dump = vow.dump()/WAD; // In whole Dai units - afterSpell.vow_sump = vow.sump()/RAD; // In whole Dai units - afterSpell.vow_bump = vow.bump()/RAD; // In whole Dai units - afterSpell.vow_hump = vow.hump()/RAD; // In whole Dai units - afterSpell.dog_Hole = dog.Hole()/RAD; // In whole Dai units - afterSpell.ilk_count = reg.count() + 1; // Num expected in system + afterSpell.dsr_rate = 0; // In basis points + afterSpell.vat_Line = 10000 * MILLION; // In whole Dai units + afterSpell.pause_delay = pause.delay(); // In seconds + afterSpell.vow_wait = vow.wait(); // In seconds + afterSpell.vow_dump = vow.dump() / WAD; // In whole Dai units + afterSpell.vow_sump = vow.sump() / RAD; // In whole Dai units + afterSpell.vow_bump = vow.bump() / RAD; // In whole Dai units + afterSpell.vow_hump = vow.hump() / RAD; // In whole Dai units + afterSpell.dog_Hole = dog.Hole() / RAD; // In whole Dai units + afterSpell.ilk_count = reg.count() + 1; // Num expected in system // Test for all collateral based changes here - (uint256 _duty,) = jug.ilks("LINK-A"); + (uint256 _duty,) = jug.ilks("LINK-A"); (address _clip,,,) = dog.ilks("LINK-A"); ClipAbstract clip = ClipAbstract(_clip); afterSpell.collaterals["LINK-A"] = CollateralValues({ - line: 10 * MILLION, // In whole Dai units - dust: 800, // In whole Dai units - pct: _duty, // In basis points - buf: clip.buf()*10000/RAY, // In basis points - cusp: clip.cusp()*10000/RAY, // In basis points - chop: 1400, // In basis points - tip: clip.tip()/RAD, // In whole Dai units - chip: 2, // In basis points - hole: 100000, // In whole Dai units - mat: 16000, // In basis points - beg: 400, // In basis points - tail: 2 hours, // In seconds - ttl: 3 hours, // In seconds - tau: 3 hours, // In seconds - liquidations: 1 // 1 if enabled + line: 10 * MILLION, // In whole Dai units + dust: 800, // In whole Dai units + pct: _duty, // In basis points + buf: clip.buf() * 10000 / RAY, // In basis points + cusp: clip.cusp() * 10000 / RAY, // In basis points + chop: 1400, // In basis points + tip: clip.tip() / RAD, // In whole Dai units + chip: 2, // In basis points + hole: 100000, // In whole Dai units + mat: 16000, // In basis points + beg: 400, // In basis points + tail: 2 hours, // In seconds + ttl: 3 hours, // In seconds + tau: 3 hours, // In seconds + liquidations: 1 // 1 if enabled }); // New collateral afterSpell.collaterals["XMPL-A"] = CollateralValues({ - line: 3 * MILLION, // In whole Dai units - dust: 2000, // In whole Dai units - pct: 225, // In basis points - buf: 13000, // In basis points - cusp: 4000, // In basis points - chop: 1300, // In basis points - tip: 5, // In whole Dai units - chip: 5, // In basis points - hole: 50 * THOUSAND, // In whole Dai units - mat: 15000, // In basis points - beg: 300, // In basis points - tail: 10 hours, // In seconds - ttl: 6 hours, // In seconds - tau: 6 hours, // In seconds - liquidations: 1 // 1 if enabled + line: 3 * MILLION, // In whole Dai units + dust: 2000, // In whole Dai units + pct: 225, // In basis points + buf: 13000, // In basis points + cusp: 4000, // In basis points + chop: 1300, // In basis points + tip: 5, // In whole Dai units + chip: 5, // In basis points + hole: 50 * THOUSAND, // In whole Dai units + mat: 15000, // In basis points + beg: 300, // In basis points + tail: 10 hours, // In seconds + ttl: 6 hours, // In seconds + tau: 6 hours, // In seconds + liquidations: 1 // 1 if enabled }); } // not provided in DSMath function _rpow(uint256 x, uint256 n, uint256 b) internal pure returns (uint256 z) { - assembly { - switch x case 0 {switch n case 0 {z := b} default {z := 0}} - default { - switch mod(n, 2) case 0 { z := b } default { z := x } - let half := div(b, 2) // for rounding. - for { n := div(n, 2) } n { n := div(n,2) } { - let xx := mul(x, x) - if iszero(eq(div(xx, x), x)) { revert(0,0) } - let xxRound := add(xx, half) - if lt(xxRound, xx) { revert(0,0) } - x := div(xxRound, b) - if mod(n,2) { - let zx := mul(z, x) - if and(iszero(iszero(x)), iszero(eq(div(zx, x), z))) { revert(0,0) } - let zxRound := add(zx, half) - if lt(zxRound, zx) { revert(0,0) } - z := div(zxRound, b) + assembly { + switch x + case 0 { + switch n + case 0 { z := b } + default { z := 0 } + } + default { + switch mod(n, 2) + case 0 { z := b } + default { z := x } + let half := div(b, 2) // for rounding. + for { n := div(n, 2) } n { n := div(n, 2) } { + let xx := mul(x, x) + if iszero(eq(div(xx, x), x)) { revert(0, 0) } + let xxRound := add(xx, half) + if lt(xxRound, xx) { revert(0, 0) } + x := div(xxRound, b) + if mod(n, 2) { + let zx := mul(z, x) + if and(iszero(iszero(x)), iszero(eq(div(zx, x), z))) { revert(0, 0) } + let zxRound := add(zx, half) + if lt(zxRound, zx) { revert(0, 0) } + z := div(zxRound, b) + } + } } - } } - } } // 10^-5 (tenth of a basis point) as a RAY @@ -303,6 +317,7 @@ contract DssLibExecTest is Test { function ray(uint256 wad) internal pure returns (uint256) { return wad * 10 ** 9; } + function rad(uint256 wad) internal pure returns (uint256) { return wad * RAY; } @@ -310,9 +325,7 @@ contract DssLibExecTest is Test { function vote() private { if (chief.hat() != address(spell)) { vm.store( - address(gov), - keccak256(abi.encode(address(this), uint256(1))), - bytes32(uint256(999999999999 ether)) + address(gov), keccak256(abi.encode(address(this), uint256(1))), bytes32(uint256(999999999999 ether)) ); gov.approve(address(chief), type(uint256).max); chief.lock(gov.balanceOf(address(this)) - 1 ether); @@ -372,7 +385,7 @@ contract DssLibExecTest is Test { uint256 castTime = block.timestamp + pause.delay(); uint256 day = (castTime / 1 days + 3) % 7; - if(day >= 5) { + if (day >= 5) { castTime += 7 days - day * 86400; } @@ -399,19 +412,14 @@ contract DssLibExecTest is Test { // make sure dsr is less than 100% APR // bc -l <<< 'scale=27; e( l(2.00)/(60 * 60 * 24 * 365) )' // 1000000021979553151239153027 - assertTrue( - pot.dsr() >= RAY && pot.dsr() < 1000000021979553151239153027 - ); + assertTrue(pot.dsr() >= RAY && pot.dsr() < 1000000021979553151239153027); assertTrue(diffCalc(expectedRate(values.dsr_rate), yearlyYield(expectedDSRRate)) <= TOLERANCE); { - // Line values in RAD - uint256 normalizedLine = values.vat_Line * RAD; - assertEq(vat.Line(), normalizedLine); - assertTrue( - (vat.Line() >= RAD && vat.Line() < 100 * BILLION * RAD) || - vat.Line() == 0 - ); + // Line values in RAD + uint256 normalizedLine = values.vat_Line * RAD; + assertEq(vat.Line(), normalizedLine); + assertTrue((vat.Line() >= RAD && vat.Line() < 100 * BILLION * RAD) || vat.Line() == 0); } // Pause delay @@ -421,40 +429,30 @@ contract DssLibExecTest is Test { assertEq(vow.wait(), values.vow_wait); { - // dump values in WAD - uint256 normalizedDump = values.vow_dump * WAD; - assertEq(vow.dump(), normalizedDump); - assertTrue( - (vow.dump() >= WAD && vow.dump() < 2 * THOUSAND * WAD) || - vow.dump() == 0 - ); + // dump values in WAD + uint256 normalizedDump = values.vow_dump * WAD; + assertEq(vow.dump(), normalizedDump); + assertTrue((vow.dump() >= WAD && vow.dump() < 2 * THOUSAND * WAD) || vow.dump() == 0); } { - // sump values in RAD - uint256 normalizedSump = values.vow_sump * RAD; - assertEq(vow.sump(), normalizedSump); - assertTrue( - (vow.sump() >= RAD && vow.sump() < 500 * THOUSAND * RAD) || - vow.sump() == 0 - ); + // sump values in RAD + uint256 normalizedSump = values.vow_sump * RAD; + assertEq(vow.sump(), normalizedSump); + assertTrue((vow.sump() >= RAD && vow.sump() < 500 * THOUSAND * RAD) || vow.sump() == 0); } { - // bump values in RAD - uint256 normalizedBump = values.vow_bump * RAD; - assertEq(vow.bump(), normalizedBump); - assertTrue( - (vow.bump() >= RAD && vow.bump() < HUNDRED * THOUSAND * RAD) || - vow.bump() == 0 - ); + // bump values in RAD + uint256 normalizedBump = values.vow_bump * RAD; + assertEq(vow.bump(), normalizedBump); + assertTrue((vow.bump() >= RAD && vow.bump() < HUNDRED * THOUSAND * RAD) || vow.bump() == 0); } { - // hump values in RAD - assertEq(vow.hump()/RAD, values.vow_hump); - assertTrue( - (vow.hump() >= RAD && vow.hump() < THOUSAND * MILLION * RAD) || - vow.hump() == 0, - "DssExec.t.sol/hump-sanity-check-fail" - ); + // hump values in RAD + assertEq(vow.hump() / RAD, values.vow_hump); + assertTrue( + (vow.hump() >= RAD && vow.hump() < THOUSAND * MILLION * RAD) || vow.hump() == 0, + "DssExec.t.sol/hump-sanity-check-fail" + ); } // Hole values in RAD @@ -468,7 +466,7 @@ contract DssLibExecTest is Test { } function checkCollateralValues(bytes32 ilk, SystemValues storage values) internal { - (uint256 duty,) = jug.ilks(ilk); + (uint256 duty,) = jug.ilks(ilk); uint256 normRate; if (values.collaterals[ilk].pct > WAD) { @@ -476,81 +474,84 @@ contract DssLibExecTest is Test { normRate = values.collaterals[ilk].pct; } else { // basis points used - assertTrue(values.collaterals[ilk].pct < THOUSAND * THOUSAND); // check value lt 1000% + assertTrue(values.collaterals[ilk].pct < THOUSAND * THOUSAND); // check value lt 1000% normRate = rates.rates(values.collaterals[ilk].pct); - assertTrue(diffCalc(expectedRate(values.collaterals[ilk].pct), yearlyYield(rates.rates(values.collaterals[ilk].pct))) <= TOLERANCE); + assertTrue( + diffCalc( + expectedRate(values.collaterals[ilk].pct), yearlyYield(rates.rates(values.collaterals[ilk].pct)) + ) <= TOLERANCE + ); } // make sure duty is less than 1000% APR // bc -l <<< 'scale=27; e( l(10.00)/(60 * 60 * 24 * 365) )' // 1000000073014496989316680335 - assertTrue(duty >= RAY && duty < 1000000073014496989316680335); // gt 0 and lt 1000% + assertTrue(duty >= RAY && duty < 1000000073014496989316680335); // gt 0 and lt 1000% { - (,,, uint256 line, uint256 dust) = vat.ilks(ilk); - // Convert whole Dai units to expected RAD - uint256 normalizedTestLine = values.collaterals[ilk].line * RAD; - assertEq(line, normalizedTestLine); - assertTrue((line >= RAD && line < BILLION * RAD) || line == 0); // eq 0 or gt eq 1 RAD and lt 1B - uint256 normalizedTestDust = values.collaterals[ilk].dust * RAD; - assertEq(dust, normalizedTestDust); - assertTrue((dust >= RAD && dust < 100 * THOUSAND * RAD) || dust == 0); // eq 0 or gt eq 1 and lt 10k + (,,, uint256 line, uint256 dust) = vat.ilks(ilk); + // Convert whole Dai units to expected RAD + uint256 normalizedTestLine = values.collaterals[ilk].line * RAD; + assertEq(line, normalizedTestLine); + assertTrue((line >= RAD && line < BILLION * RAD) || line == 0); // eq 0 or gt eq 1 RAD and lt 1B + uint256 normalizedTestDust = values.collaterals[ilk].dust * RAD; + assertEq(dust, normalizedTestDust); + assertTrue((dust >= RAD && dust < 100 * THOUSAND * RAD) || dust == 0); // eq 0 or gt eq 1 and lt 10k } { - (, uint256 chop, uint256 hole, uint256 dirt) = dog.ilks(ilk); - (,,,, uint256 dust) = vat.ilks(ilk); - - assertEq(hole, values.collaterals[ilk].hole * RAD); - assertTrue(dirt <= hole + dust); - - // Convert BP to system expected value - uint256 normalizedTestChop = (values.collaterals[ilk].chop * 10**14) + WAD; - assertEq(chop, normalizedTestChop); - // make sure chop is less than 100% - assertTrue(chop >= WAD && chop < 2 * WAD); // penalty gt eq 0% and lt 100% - // Convert whole Dai units to expected RAD - uint256 normalizedTestHole = values.collaterals[ilk].hole * RAD; - assertEq(hole, normalizedTestHole); - assertTrue(hole >= RAD && hole < MILLION * RAD); + (, uint256 chop, uint256 hole, uint256 dirt) = dog.ilks(ilk); + (,,,, uint256 dust) = vat.ilks(ilk); + + assertEq(hole, values.collaterals[ilk].hole * RAD); + assertTrue(dirt <= hole + dust); + + // Convert BP to system expected value + uint256 normalizedTestChop = (values.collaterals[ilk].chop * 10 ** 14) + WAD; + assertEq(chop, normalizedTestChop); + // make sure chop is less than 100% + assertTrue(chop >= WAD && chop < 2 * WAD); // penalty gt eq 0% and lt 100% + // Convert whole Dai units to expected RAD + uint256 normalizedTestHole = values.collaterals[ilk].hole * RAD; + assertEq(hole, normalizedTestHole); + assertTrue(hole >= RAD && hole < MILLION * RAD); } { - (,uint256 mat) = spot.ilks(ilk); - // Convert BP to system expected value - uint256 normalizedTestMat = (values.collaterals[ilk].mat * 10**23); - assertEq(mat, normalizedTestMat); - assertTrue(mat >= RAY && mat < 10 * RAY); // cr eq 100% and lt 1000% + (, uint256 mat) = spot.ilks(ilk); + // Convert BP to system expected value + uint256 normalizedTestMat = (values.collaterals[ilk].mat * 10 ** 23); + assertEq(mat, normalizedTestMat); + assertTrue(mat >= RAY && mat < 10 * RAY); // cr eq 100% and lt 1000% } { - uint256 class = reg.class(ilk); - if (class == 1) { - (address clipper,,,) = dog.ilks(ilk); - ClipAbstract clip = ClipAbstract(clipper); - - assertEq(clip.ilk(), ilk); - assertEq(address(clip.vat()), address(vat)); - - // buf [RAY] - uint256 normalizedTestBuf = (values.collaterals[ilk].buf * RAY / 10000); - assertEq(clip.buf(), normalizedTestBuf); - // tail [seconds] - assertEq(clip.tail(), values.collaterals[ilk].tail); - // cusp - uint256 normalizedTestCusp = (values.collaterals[ilk].cusp * RAY / 10000); - assertEq(clip.cusp(), normalizedTestCusp); - // chip - assertEq(clip.chip(), values.collaterals[ilk].chip * WAD / 10000); - // tip - assertEq(clip.tip(), values.collaterals[ilk].tip * RAD); - - assertEq(clip.wards(address(dog)), values.collaterals[ilk].liquidations); // liquidations == 1 => on - assertEq(clip.wards(address(pauseProxy)), 1); // Check pause_proxy ward - } else if (class == 2) { - revert(); // Old stuff. Not used here. - } - + uint256 class = reg.class(ilk); + if (class == 1) { + (address clipper,,,) = dog.ilks(ilk); + ClipAbstract clip = ClipAbstract(clipper); + + assertEq(clip.ilk(), ilk); + assertEq(address(clip.vat()), address(vat)); + + // buf [RAY] + uint256 normalizedTestBuf = (values.collaterals[ilk].buf * RAY / 10000); + assertEq(clip.buf(), normalizedTestBuf); + // tail [seconds] + assertEq(clip.tail(), values.collaterals[ilk].tail); + // cusp + uint256 normalizedTestCusp = (values.collaterals[ilk].cusp * RAY / 10000); + assertEq(clip.cusp(), normalizedTestCusp); + // chip + assertEq(clip.chip(), values.collaterals[ilk].chip * WAD / 10000); + // tip + assertEq(clip.tip(), values.collaterals[ilk].tip * RAD); + + assertEq(clip.wards(address(dog)), values.collaterals[ilk].liquidations); // liquidations == 1 => on + assertEq(clip.wards(address(pauseProxy)), 1); // Check pause_proxy ward + } else if (class == 2) { + revert(); // Old stuff. Not used here. + } } { - GemJoinAbstract join = GemJoinAbstract(reg.join(ilk)); - assertEq(join.wards(address(pauseProxy)), 1); // Check pause_proxy ward + GemJoinAbstract join = GemJoinAbstract(reg.join(ilk)); + assertEq(join.wards(address(pauseProxy)), 1); // Check pause_proxy ward } } @@ -560,8 +561,8 @@ contract DssLibExecTest is Test { assertTrue(spell.done()); checkSystemValues(afterSpell); - checkCollateralValues("LINK-A", afterSpell); - checkCollateralValues("XMPL-A", afterSpell); + checkCollateralValues("LINK-A", afterSpell); + checkCollateralValues("XMPL-A", afterSpell); assertTrue(spell.officeHours()); assertTrue(spell.action() != address(0)); @@ -577,11 +578,7 @@ contract DssLibExecTest is Test { pipXMPL.poke(); spot.poke("XMPL-A"); - vm.store( - address(xmpl), - keccak256(abi.encode(address(this), uint256(3))), - bytes32(uint256(10 * THOUSAND * WAD)) - ); + vm.store(address(xmpl), keccak256(abi.encode(address(this), uint256(3))), bytes32(uint256(10 * THOUSAND * WAD))); (address clip,,,) = dog.ilks("XMPL-A"); clipXMPLA = ClipAbstract(clip); @@ -615,7 +612,9 @@ contract DssLibExecTest is Test { assertEq(vat.dai(address(this)), 2500 * RAD); // Payback DAI, withdraw collateral - vat.frob("XMPL-A", address(this), address(this), address(this), -int256(10 * THOUSAND * WAD), -int256(2500 * WAD)); + vat.frob( + "XMPL-A", address(this), address(this), address(this), -int256(10 * THOUSAND * WAD), -int256(2500 * WAD) + ); assertEq(vat.gem("XMPL-A", address(this)), 10 * THOUSAND * WAD); assertEq(vat.dai(address(this)), 0); @@ -627,9 +626,16 @@ contract DssLibExecTest is Test { // Generate new DAI to force a liquidation xmpl.approve(address(joinXMPLA), 10 * THOUSAND * WAD); joinXMPLA.join(address(this), 10 * THOUSAND * WAD); - (,,uint256 spotV,,) = vat.ilks("XMPL-A"); + (,, uint256 spotV,,) = vat.ilks("XMPL-A"); // dart max amount of DAI - vat.frob("XMPL-A", address(this), address(this), address(this), int256(10 * THOUSAND * WAD), int256(10 * THOUSAND * WAD * spotV / RAY)); + vat.frob( + "XMPL-A", + address(this), + address(this), + address(this), + int256(10 * THOUSAND * WAD), + int256(10 * THOUSAND * WAD * spotV / RAY) + ); vm.warp(block.timestamp + 1); jug.drip("XMPL-A"); assertEq(clipXMPLA.kicks(), 0); diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index 65a6fd9..d94fa3b 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -22,22 +22,21 @@ pragma solidity ^0.8.16; import "../DssAction.sol"; contract DssTestNoOfficeHoursAction is DssAction { - function description() public override pure returns (string memory) { + function description() public pure override returns (string memory) { return "No Office Hours Action"; } - function actions() public override pure { + function actions() public pure override { require(!officeHours()); } - function officeHours() public override pure returns (bool) { + function officeHours() public pure override returns (bool) { return false; } } contract DssTestAction is DssAction { - - function description() external override pure returns (string memory) { + function description() external pure override returns (string memory) { return "DssTestAction"; } @@ -51,9 +50,15 @@ contract DssTestAction is DssAction { return DssExecLib.nextCastTime(eta, ts, officeHours); } - /**********************/ - /*** Authorizations ***/ - /**********************/ + /** + * + */ + /** + * Authorizations ** + */ + /** + * + */ function authorize_test(address base, address ward) public { DssExecLib.authorize(base, ward); } @@ -74,10 +79,15 @@ contract DssTestAction is DssAction { DssExecLib.undelegateVat(usr); } - /**************************/ - /*** Accumulating Rates ***/ - /**************************/ - + /** + * + */ + /** + * Accumulating Rates ** + */ + /** + * + */ function accumulateDSR_test() public { DssExecLib.accumulateDSR(); } @@ -90,10 +100,15 @@ contract DssTestAction is DssAction { DssExecLib.accumulateCollateralStabilityFees(ilk); } - /****************************/ - /*** Changelog Management ***/ - /****************************/ - + /** + * + */ + /** + * Changelog Management ** + */ + /** + * + */ function setChangelogAddress_test(bytes32 key, address val) public { DssExecLib.setChangelogAddress(key, val); } @@ -110,16 +125,28 @@ contract DssTestAction is DssAction { DssExecLib.setChangelogSHA256(SHA256); } - /*********************/ - /*** Price Updates ***/ - /*********************/ + /** + * + */ + /** + * Price Updates ** + */ + /** + * + */ function updateCollateralPrice_test(bytes32 ilk) public { DssExecLib.updateCollateralPrice(ilk); } - /****************************/ - /*** System Configuration ***/ - /****************************/ + /** + * + */ + /** + * System Configuration ** + */ + /** + * + */ function setContract_test(address base, bytes32 what, address addr) public { DssExecLib.setContract(base, what, addr); } @@ -128,9 +155,15 @@ contract DssTestAction is DssAction { DssExecLib.setContract(base, ilk, what, addr); } - /******************************/ - /*** System Risk Parameters ***/ - /******************************/ + /** + * + */ + /** + * System Risk Parameters ** + */ + /** + * + */ function setGlobalDebtCeiling_test(uint256 amount) public { DssExecLib.setGlobalDebtCeiling(amount); } @@ -207,9 +240,15 @@ contract DssTestAction is DssAction { DssExecLib.setDAIReferenceValue(value); } - /*****************************/ - /*** Collateral Management ***/ - /*****************************/ + /** + * + */ + /** + * Collateral Management ** + */ + /** + * + */ function setIlkDebtCeiling_test(bytes32 ilk, uint256 amount) public { DssExecLib.setIlkDebtCeiling(ilk, amount); } @@ -294,10 +333,15 @@ contract DssTestAction is DssAction { DssExecLib.setExponentialDecrease(calc, pct_bps); } - /*************************/ - /*** Oracle Management ***/ - /*************************/ - + /** + * + */ + /** + * Oracle Management ** + */ + /** + * + */ function whitelistOracleMedians_test(address oracle) public { DssExecLib.whitelistOracleMedians(oracle); } @@ -314,54 +358,95 @@ contract DssTestAction is DssAction { DssExecLib.allowOSMFreeze(osm, ilk); } - /**********************************/ - /*** Governance Security Module ***/ - /**********************************/ - + /** + * + */ + /** + * Governance Security Module ** + */ + /** + * + */ function setGSMDelay_test(uint256 _delay) public { DssExecLib.setGSMDelay(_delay); } - /*****************************/ - /*** Direct Deposit Module ***/ - /*****************************/ - + /** + * + */ + /** + * Direct Deposit Module ** + */ + /** + * + */ function setDDMTargetInterestRate_test(address ddm, uint256 pct_bps) public { DssExecLib.setDDMTargetInterestRate(ddm, pct_bps); } - /*****************************/ - /*** Collateral Onboarding ***/ - /*****************************/ - - function addCollateralBase_test( - bytes32 ilk, address gem, address join, address clip, address calc, address pip - ) public { + /** + * + */ + /** + * Collateral Onboarding ** + */ + /** + * + */ + function addCollateralBase_test(bytes32 ilk, address gem, address join, address clip, address calc, address pip) + public + { DssExecLib.addCollateralBase(ilk, gem, join, clip, calc, pip); } - function addNewCollateral_test( - CollateralOpts memory co - ) public { + function addNewCollateral_test(CollateralOpts memory co) public { DssExecLib.addNewCollateral(co); } - /***************/ - /*** Payment ***/ - /***************/ - + /** + * + */ + /** + * Payment ** + */ + /** + * + */ function sendPaymentFromSurplusBuffer_test(address join, address target, uint256 amount) public { DssExecLib.sendPaymentFromSurplusBuffer(join, target, amount); } - /************/ - /*** Misc ***/ - /************/ - function linearInterpolation_test(bytes32 _name, address _target, bytes32 _what, uint256 _startTime, uint256 _start, uint256 _end, uint256 _duration) public returns (address) { + /** + * + */ + /** + * Misc ** + */ + /** + * + */ + function linearInterpolation_test( + bytes32 _name, + address _target, + bytes32 _what, + uint256 _startTime, + uint256 _start, + uint256 _end, + uint256 _duration + ) public returns (address) { return DssExecLib.linearInterpolation(_name, _target, _what, _startTime, _start, _end, _duration); } - function linearInterpolation_test(bytes32 _name, address _target, bytes32 _ilk, bytes32 _what, uint256 _startTime, uint256 _start, uint256 _end, uint256 _duration) public returns (address) { + + function linearInterpolation_test( + bytes32 _name, + address _target, + bytes32 _ilk, + bytes32 _what, + uint256 _startTime, + uint256 _start, + uint256 _end, + uint256 _duration + ) public returns (address) { return DssExecLib.linearInterpolation(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); } - } diff --git a/src/test/Mocks.sol b/src/test/Mocks.sol index b6986eb..a6a69a0 100644 --- a/src/test/Mocks.sol +++ b/src/test/Mocks.sol @@ -22,12 +22,12 @@ pragma solidity ^0.8.16; import "dss-interfaces/Interfaces.sol"; contract MockToken { - uint256 public totalSupply; - mapping (address => uint256) public balanceOf; - mapping (address => mapping (address => uint256)) public allowance; - string public symbol; - uint8 public decimals = 18; // standard token precision. override to customize - string public name = ""; // Optional token name + uint256 public totalSupply; + mapping(address => uint256) public balanceOf; + mapping(address => mapping(address => uint256)) public allowance; + string public symbol; + uint8 public decimals = 18; // standard token precision. override to customize + string public name = ""; // Optional token name constructor(string memory symbol_) { symbol = symbol_; @@ -42,10 +42,7 @@ contract MockToken { return transferFrom(msg.sender, dst, wad); } - function transferFrom(address src, address dst, uint256 wad) - public - returns (bool) - { + function transferFrom(address src, address dst, uint256 wad) public returns (bool) { if (src != msg.sender && allowance[src][msg.sender] != type(uint256).max) { require(allowance[src][msg.sender] >= wad, "ds-token-insufficient-approval"); allowance[src][msg.sender] = allowance[src][msg.sender] - wad; @@ -57,6 +54,7 @@ contract MockToken { return true; } + function mint(address guy, uint256 wad) public { balanceOf[guy] = balanceOf[guy] + wad; totalSupply = totalSupply + wad; @@ -75,52 +73,66 @@ contract MockToken { } contract MockValue { - bool has; + bool has; bytes32 val; + function peek() public view returns (bytes32, bool) { - return (val,has); + return (val, has); } + function read() public view returns (bytes32) { - bytes32 wut; bool haz; + bytes32 wut; + bool haz; (wut, haz) = peek(); require(haz, "haz-not"); return wut; } + function poke(bytes32 wut) public { val = wut; has = true; } + function void() public { has = false; } } contract MockMedian { - // --- Auth --- - mapping (address => uint256) public wards; - function rely(address usr) external auth { wards[usr] = 1; } - function deny(address usr) external auth { wards[usr] = 0; } - modifier auth { + mapping(address => uint256) public wards; + + function rely(address usr) external auth { + wards[usr] = 1; + } + + function deny(address usr) external auth { + wards[usr] = 0; + } + + modifier auth() { require(wards[msg.sender] == 1, "Median/not-authorized"); _; } - uint128 val; - uint32 public age; + uint128 val; + uint32 public age; bytes32 public constant wat = "ethusd"; // You want to change this every deploy uint256 public bar = 1; // Authorized oracles, set by an auth - mapping (address => uint256) public orcl; + mapping(address => uint256) public orcl; // Whitelisted contracts, set by an auth - mapping (address => uint256) public bud; + mapping(address => uint256) public bud; // Mapping for at most 256 oracles - mapping (uint8 => address) public slot; + mapping(uint8 => address) public slot; - modifier toll { require(bud[msg.sender] == 1, "Median/contract-not-whitelisted"); _;} + modifier toll() { + require(bud[msg.sender] == 1, "Median/contract-not-whitelisted"); + _; + } event LogMedianPrice(uint256 val, uint256 age); @@ -134,21 +146,28 @@ contract MockMedian { return val; } - function peek() external view toll returns (uint256,bool) { + function peek() external view toll returns (uint256, bool) { return (val, val > 0); } function recover(uint256 val_, uint256 age_, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { return ecrecover( - keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256(abi.encodePacked(val_, age_, wat)))), - v, r, s + keccak256( + abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256(abi.encodePacked(val_, age_, wat))) + ), + v, + r, + s ); } function poke( - uint256[] calldata val_, uint256[] calldata age_, - uint8[] calldata v, bytes32[] calldata r, bytes32[] calldata s) external - { + uint256[] calldata val_, + uint256[] calldata age_, + uint8[] calldata v, + bytes32[] calldata r, + bytes32[] calldata s + ) external { require(val_.length == bar, "Median/bar-too-low"); uint256 bloom = 0; @@ -188,10 +207,10 @@ contract MockMedian { } function drop(address[] calldata a) external auth { - for (uint256 i = 0; i < a.length; i++) { + for (uint256 i = 0; i < a.length; i++) { orcl[a[i]] = 0; slot[uint8(uint256(uint160(a[i])) >> 152)] = address(0); - } + } } function setBar(uint256 bar_) external auth { @@ -210,38 +229,48 @@ contract MockMedian { } function kiss(address[] calldata a) external auth { - for(uint256 i = 0; i < a.length; i++) { + for (uint256 i = 0; i < a.length; i++) { require(a[i] != address(0), "Median/no-contract-0"); bud[a[i]] = 1; } } function diss(address[] calldata a) external auth { - for(uint256 i = 0; i < a.length; i++) { + for (uint256 i = 0; i < a.length; i++) { bud[a[i]] = 0; } } } contract MockOsm { - // --- Auth --- - mapping (address => uint256) public wards; - function rely(address usr) external auth { wards[usr] = 1; } - function deny(address usr) external auth { wards[usr] = 0; } - modifier auth { + mapping(address => uint256) public wards; + + function rely(address usr) external auth { + wards[usr] = 1; + } + + function deny(address usr) external auth { + wards[usr] = 0; + } + + modifier auth() { require(wards[msg.sender] == 1, "OSM/not-authorized"); _; } // --- Stop --- uint256 public stopped; - modifier stoppable { require(stopped == 0, "OSM/is-stopped"); _; } + + modifier stoppable() { + require(stopped == 0, "OSM/is-stopped"); + _; + } address public src; - uint16 constant ONE_HOUR = uint16(3600); - uint16 public hop = ONE_HOUR; - uint64 public zzz; + uint16 constant ONE_HOUR = uint16(3600); + uint16 public hop = ONE_HOUR; + uint64 public zzz; struct Feed { uint128 val; @@ -252,13 +281,16 @@ contract MockOsm { Feed nxt; // Whitelisted contracts, set by an auth - mapping (address => uint256) public bud; + mapping(address => uint256) public bud; - modifier toll { require(bud[msg.sender] == 1, "OSM/contract-not-whitelisted"); _; } + modifier toll() { + require(bud[msg.sender] == 1, "OSM/contract-not-whitelisted"); + _; + } event LogValue(bytes32 val); - constructor (address src_) { + constructor(address src_) { wards[msg.sender] = 1; src = src_; } @@ -266,6 +298,7 @@ contract MockOsm { function stop() external auth { stopped = 1; } + function start() external auth { stopped = 0; } @@ -308,11 +341,11 @@ contract MockOsm { } } - function peek() external view toll returns (bytes32,bool) { + function peek() external view toll returns (bytes32, bool) { return (bytes32(uint256(cur.val)), cur.has == 1); } - function peep() external view toll returns (bytes32,bool) { + function peep() external view toll returns (bytes32, bool) { return (bytes32(uint256(nxt.val)), nxt.has == 1); } @@ -331,22 +364,25 @@ contract MockOsm { } function kiss(address[] calldata a) external auth { - for(uint256 i = 0; i < a.length; i++) { + for (uint256 i = 0; i < a.length; i++) { require(a[i] != address(0), "OSM/no-contract-0"); bud[a[i]] = 1; } } function diss(address[] calldata a) external auth { - for(uint256 i = 0; i < a.length; i++) { + for (uint256 i = 0; i < a.length; i++) { bud[a[i]] = 0; } } } contract MockUniPair { - address public token0; address public token1; + address public token0; + address public token1; + constructor(address _token0, address _token1) { - token0 = _token0; token1 = _token1; + token0 = _token0; + token1 = _token1; } } diff --git a/src/test/rates.sol b/src/test/rates.sol index d482261..89d2228 100644 --- a/src/test/rates.sol +++ b/src/test/rates.sol @@ -20,8 +20,7 @@ pragma solidity ^0.8.16; contract Rates { - - mapping (uint256 => uint256) public rates; + mapping(uint256 => uint256) public rates; constructor() { rates[0] = 1000000000000000000000000000; @@ -426,5 +425,4 @@ contract Rates { rates[9975] = 1000000021939891116449723415; rates[10000] = 1000000021979553151239153027; } - } From 99797f06529b275d1bc480f54ea2aac26bde0d7c Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 20:28:22 -0300 Subject: [PATCH 17/61] fix: `test_setGSMDelay` to call `MCD_PAUSE_PROXY` Fix the issue with the `wait` modifier from `MCD_PAUSE` --- src/test/DssAction.t.sol | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 6495436..e0756b1 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -89,7 +89,13 @@ interface SUsdsLike { function ssr() external view returns (uint256); } +interface ProxyLike { + function exec(address, bytes calldata) external returns (bytes memory); +} + contract ActionTest is Test { + using stdStorage for StdStorage; + ChainlogLike LOG = ChainlogLike(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); DSPauseAbstract pause; @@ -1057,18 +1063,23 @@ contract ActionTest is Test { * */ function test_setGSMDelay() public { - // Because of the `wait` modifier in MCD_PAUSE, we need to prank delegatecalls as well, - // since this will be the opcode used by `setGSMDelay_test` when calling `DssExecLib` - vm.startPrank(LOG.getAddress("MCD_PAUSE_PROXY"), /* delegatecall = */ true); + // Because of the `wait` modifier in MCD_PAUSE, the call needs to be made from MCD_PAUSE_PROXY. + // It's not possible to do that using `prank`/`startPrank`. See: + // https://github.com/foundry-rs/foundry/issues/4266 + // For that reason, we need overwrite the `owner` in MCD_PAUSE_PROXY, so we can call `exec` from there. + ProxyLike pauseProxy = ProxyLike(LOG.getAddress("MCD_PAUSE_PROXY")); + stdstore.target(address(pauseProxy)).sig("owner()").checked_write(address(this)); + // Sets an initial value - action.setGSMDelay_test(12 hours); + pauseProxy.exec(address(action), abi.encodeCall(action.setGSMDelay_test, 12 hours)); // Checks if the new value is being properly set. - action.setGSMDelay_test(16 hours); + pauseProxy.exec(address(action), abi.encodeCall(action.setGSMDelay_test, 16 hours)); assertEq(pause.delay(), 16 hours); + // Reverts if the value is lower than 12 hours vm.expectRevert(); - action.setGSMDelay_test(8 hours); // delay-too-low. Min: 12 hours + pauseProxy.exec(address(action), abi.encodeCall(action.setGSMDelay_test, 8 hours)); } /** From f3e50f3e4ad87f639268a5b6617aa4409f7d678c Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 6 May 2025 20:37:33 -0300 Subject: [PATCH 18/61] chore: fix comment section header formatting --- src/DssExecLib.sol | 218 ++++++++++--------------------------- src/test/DssAction.t.sol | 117 -------------------- src/test/DssTestAction.sol | 117 -------------------- 3 files changed, 56 insertions(+), 396 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index fd5488d..7e2b02c 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -158,15 +158,9 @@ interface RwaOracleLike { // @title DssExecLib.sol -- Sky Protocol's Executive Spellcrafting Library library DssExecLib { - /** - * - */ - /** - * Constants ** - */ - /** - * - */ + /************* + * Constants * + *************/ address public constant LOG = 0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F; uint256 internal constant THOUSAND = 10 ** 3; @@ -178,15 +172,9 @@ library DssExecLib { uint256 internal constant BPS_ONE_HUNDRED_PCT = 100_00; uint256 internal constant RATES_ONE_HUNDRED_PCT = 1000000021979553151239153027; - /** - * - */ - /** - * Math Functions ** - */ - /** - * - */ + /****************** + * Math Functions * + ******************/ /// @dev WAD division. The final result is rounded to the nearest integer. /// Examples: @@ -204,15 +192,10 @@ library DssExecLib { z = (x * RAY + y / 2) / y; } - /** - * - */ - /** - * Core Address Helpers ** - */ - /** - * - */ + /************************ + * Core Address Helpers * + ************************/ + function dai() public view returns (address) { return getChangelogAddress("MCD_DAI"); } @@ -337,15 +320,9 @@ library DssExecLib { return ChainlogLike(LOG).getAddress(_key); } - /** - * - */ - /** - * Changelog Management ** - */ - /** - * - */ + /************************ + * Changelog Management * + ************************/ /// @dev Set an address in the MCD on-chain changelog. /// @param _key Access key for the address (e.g. "MCD_VAT") @@ -372,15 +349,9 @@ library DssExecLib { ChainlogLike(LOG).setSha256sum(_SHA256Sum); } - /** - * - */ - /** - * Authorizations ** - */ - /** - * - */ + /****************** + * Authorizations * + ******************/ /// @dev Give an address authorization to perform auth actions on the contract. /// @param _base The address of the contract where the authorization will be set @@ -415,15 +386,9 @@ library DssExecLib { DssVat(vat()).nope(_usr); } - /** - * - */ - /** - * OfficeHours Management ** - */ - /** - * - */ + /************************** + * OfficeHours Management * + **************************/ /// @dev Returns true if a time is within office hours range /// @param _ts The timestamp to check, usually block.timestamp @@ -472,15 +437,9 @@ library DssExecLib { } } - /** - * - */ - /** - * Accumulating Rates ** - */ - /** - * - */ + /********************** + * Accumulating Rates * + **********************/ /// @dev Update rate accumulation for the Dai Savings Rate (DSR). function accumulateDSR() public { @@ -498,15 +457,9 @@ library DssExecLib { Drippable(jug()).drip(_ilk); } - /** - * - */ - /** - * Price Updates ** - */ - /** - * - */ + /***************** + * Price Updates * + *****************/ /// @dev Update price of a given collateral type. /// @param _ilk Collateral type @@ -514,15 +467,9 @@ library DssExecLib { Pokeable(spotter()).poke(_ilk); } - /** - * - */ - /** - * System Configuration ** - */ - /** - * - */ + /************************ + * System Configuration * + ************************/ /// @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in Clip) /// @param _base The address of the contract where the new contract address will be filed @@ -558,15 +505,9 @@ library DssExecLib { Fileable(_base).file(_ilk, _what, _amt); } - /** - * - */ - /** - * System Risk Parameters ** - */ - /** - * - */ + /************************** + * System Risk Parameters * + **************************/ /// @dev Set the global debt ceiling. Amount will be converted to the correct internal precision. /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) @@ -725,15 +666,10 @@ library DssExecLib { setValue(spotter(), "par", rdiv(_value, 1000)); } - /** - * - */ - /** - * Collateral Management ** - */ - /** - * - */ + /************************* + * Collateral Management * + *************************/ + /// @dev Set a collateral debt ceiling. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) @@ -918,15 +854,9 @@ library DssExecLib { setValue(_jug, _ilk, "duty", _rate); } - /** - * - */ - /** - * Abacus Management ** - */ - /** - * - */ + /********************* + * Abacus Management * + *********************/ /// @dev Set the number of seconds from the start when the auction reaches zero price. /// @dev Abacus:LinearDecrease only. @@ -957,15 +887,9 @@ library DssExecLib { setValue(_calc, "cut", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * - */ - /** - * Oracle Management ** - */ - /** - * - */ + /********************* + * Oracle Management * + *********************/ /// @dev Allows an oracle to read prices from its source feeds /// @param _oracle An OSM or LP oracle contract @@ -1003,15 +927,9 @@ library DssExecLib { OsmMomLike(osmMom()).setOsm(_ilk, _osm); } - /** - * - */ - /** - * Governance Security Module ** - */ - /** - * - */ + /****************************** + * Governance Security Module * + ******************************/ /// @dev Sets the time delay between governance votes and execution in MCD_PAUSE. /// @dev Enforces an arbitrary minimum delay of 12 hours. @@ -1021,15 +939,9 @@ library DssExecLib { PauseLike(pause()).setDelay(_delay); } - /** - * - */ - /** - * Direct Deposit Module ** - */ - /** - * - */ + /************************* + * Direct Deposit Module * + *************************/ /// @dev Sets the target rate threshold for a dai direct deposit module (ddm) /// @dev Aave: Targets the variable borrow rate @@ -1040,15 +952,9 @@ library DssExecLib { setValue(_ddm, "bar", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /** - * - */ - /** - * Collateral Onboarding ** - */ - /** - * - */ + /************************* + * Collateral Onboarding * + *************************/ /// @dev Performs basic functions and sanity checks to add a new collateral type to the MCD system /// @param _ilk Collateral type key code [Ex. "ETH-A"] @@ -1171,15 +1077,9 @@ library DssExecLib { updateCollateralPrice(co.ilk); } - /** - * - */ - /** - * Payment ** - */ - /** - * - */ + /*********** + * Payment * + ***********/ /// @dev Send a payment in either ERC20 USDS or DAI from the surplus buffer. /// @param _join The join adapter to exit the payment from. @@ -1191,15 +1091,9 @@ library DssExecLib { JoinLike(_join).exit(_target, _amount * WAD); } - /** - * - */ - /** - * Misc ** - */ - /** - * - */ + /******** + * Misc * + ********/ /// @dev Initiate linear interpolation on an administrative value over time. /// @param _name The label for this lerp instance diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index e0756b1..747e066 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -516,15 +516,6 @@ contract ActionTest is Test { assertEq(vat.can(address(action), address(1)), 0); } - /** - * - */ - /** - * Changelog Management ** - */ - /** - * - */ function test_setAddress() public { bytes32 ilk = "silver"; action.setChangelogAddress_test(ilk, address(this)); @@ -549,15 +540,6 @@ contract ActionTest is Test { assertEq(LOG.sha256sum(), SHA256); } - /** - * - */ - /** - * Accumulating Rates ** - */ - /** - * - */ function test_accumulateDSR() public { uint256 beforeChi = pot.chi(); action.setDSR_test(1000000001243680656318820312); // 4% @@ -593,15 +575,6 @@ contract ActionTest is Test { assertGt(afterRate, beforeRate); } - /** - * - */ - /** - * Price Updates ** - */ - /** - * - */ function test_updateCollateralPrice() public { uint256 _spot; @@ -615,29 +588,11 @@ contract ActionTest is Test { assertEq(_spot, ray(5 ether)); // $5 at 200% } - /** - * - */ - /** - * System Configuration ** - */ - /** - * - */ function test_setContract() public { action.setContract_test(address(jug), "vow", address(1)); assertEq(jug.vow(), address(1)); } - /** - * - */ - /** - * System Risk Parameters ** - */ - /** - * - */ function test_setGlobalDebtCeiling() public { action.setGlobalDebtCeiling_test(100 * MILLION); // 100,000,000 Dai assertEq(vat.Line(), 100 * MILLION * RAD); // Fixes precision @@ -761,15 +716,6 @@ contract ActionTest is Test { assertEq(spot.par(), ray(1.005 ether)); } - /** - * - */ - /** - * Collateral Management ** - */ - /** - * - */ function test_setIlkDebtCeiling() public { action.setIlkDebtCeiling_test("gold", 100 * MILLION); (,,, uint256 line,) = vat.ilks("gold"); @@ -935,15 +881,6 @@ contract ActionTest is Test { assertEq(rho, START_TIME + 1 days); } - /** - * - */ - /** - * Pricing Management ** - */ - /** - * - */ function test_setLinearDecrease() public { LinearDecreaseAbstract calc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); @@ -970,15 +907,6 @@ contract ActionTest is Test { assertEq(calc.cut(), 999900000000000000000000000); } - /** - * - */ - /** - * Oracle Management ** - */ - /** - * - */ function test_whitelistOracleOSM() public { address tokenPip = address(new MockOsm(address(median))); @@ -1053,15 +981,6 @@ contract ActionTest is Test { assertEq(osmMom.osms("gold"), address(osm)); } - /** - * - */ - /** - * Governance Security Module ** - */ - /** - * - */ function test_setGSMDelay() public { // Because of the `wait` modifier in MCD_PAUSE, the call needs to be made from MCD_PAUSE_PROXY. // It's not possible to do that using `prank`/`startPrank`. See: @@ -1082,15 +1001,6 @@ contract ActionTest is Test { pauseProxy.exec(address(action), abi.encodeCall(action.setGSMDelay_test, 8 hours)); } - /** - * - */ - /** - * Direct Deposit Module ** - */ - /** - * - */ function test_setDDMTargetInterestRate() public { DDMLike ddm = DDMLike(LOG.getAddress("DIRECT_AAVEV2_DAI_PLAN")); giveAuth(address(ddm), address(action)); @@ -1105,15 +1015,6 @@ contract ActionTest is Test { assertEq(ddm.bar(), 10 * RAY / 100); } - /** - * - */ - /** - * Collateral Onboarding ** - */ - /** - * - */ function test_collateralOnboardingBase() public { string memory silk = "silver"; bytes32 ilk = stringToBytes32(silk); @@ -1306,15 +1207,6 @@ contract ActionTest is Test { assertTrue(!actionNoOfficeHours.officeHours()); } - /** - * - */ - /** - * Payment ** - */ - /** - * - */ function test_sendPaymentFromSurplusBuffer_DAI() public { address target = address(this); @@ -1351,15 +1243,6 @@ contract ActionTest is Test { assertEq(vat.sin(address(vow)), vowSinPrev + 100 * RAD); } - /** - * - */ - /** - * Misc ** - */ - /** - * - */ function test_lerpLine() public { LerpAbstract lerp = LerpAbstract( action.linearInterpolation_test( diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index d94fa3b..1f9452d 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -50,15 +50,6 @@ contract DssTestAction is DssAction { return DssExecLib.nextCastTime(eta, ts, officeHours); } - /** - * - */ - /** - * Authorizations ** - */ - /** - * - */ function authorize_test(address base, address ward) public { DssExecLib.authorize(base, ward); } @@ -79,15 +70,6 @@ contract DssTestAction is DssAction { DssExecLib.undelegateVat(usr); } - /** - * - */ - /** - * Accumulating Rates ** - */ - /** - * - */ function accumulateDSR_test() public { DssExecLib.accumulateDSR(); } @@ -100,15 +82,6 @@ contract DssTestAction is DssAction { DssExecLib.accumulateCollateralStabilityFees(ilk); } - /** - * - */ - /** - * Changelog Management ** - */ - /** - * - */ function setChangelogAddress_test(bytes32 key, address val) public { DssExecLib.setChangelogAddress(key, val); } @@ -125,28 +98,10 @@ contract DssTestAction is DssAction { DssExecLib.setChangelogSHA256(SHA256); } - /** - * - */ - /** - * Price Updates ** - */ - /** - * - */ function updateCollateralPrice_test(bytes32 ilk) public { DssExecLib.updateCollateralPrice(ilk); } - /** - * - */ - /** - * System Configuration ** - */ - /** - * - */ function setContract_test(address base, bytes32 what, address addr) public { DssExecLib.setContract(base, what, addr); } @@ -155,15 +110,6 @@ contract DssTestAction is DssAction { DssExecLib.setContract(base, ilk, what, addr); } - /** - * - */ - /** - * System Risk Parameters ** - */ - /** - * - */ function setGlobalDebtCeiling_test(uint256 amount) public { DssExecLib.setGlobalDebtCeiling(amount); } @@ -240,15 +186,6 @@ contract DssTestAction is DssAction { DssExecLib.setDAIReferenceValue(value); } - /** - * - */ - /** - * Collateral Management ** - */ - /** - * - */ function setIlkDebtCeiling_test(bytes32 ilk, uint256 amount) public { DssExecLib.setIlkDebtCeiling(ilk, amount); } @@ -333,15 +270,6 @@ contract DssTestAction is DssAction { DssExecLib.setExponentialDecrease(calc, pct_bps); } - /** - * - */ - /** - * Oracle Management ** - */ - /** - * - */ function whitelistOracleMedians_test(address oracle) public { DssExecLib.whitelistOracleMedians(oracle); } @@ -358,41 +286,14 @@ contract DssTestAction is DssAction { DssExecLib.allowOSMFreeze(osm, ilk); } - /** - * - */ - /** - * Governance Security Module ** - */ - /** - * - */ function setGSMDelay_test(uint256 _delay) public { DssExecLib.setGSMDelay(_delay); } - /** - * - */ - /** - * Direct Deposit Module ** - */ - /** - * - */ function setDDMTargetInterestRate_test(address ddm, uint256 pct_bps) public { DssExecLib.setDDMTargetInterestRate(ddm, pct_bps); } - /** - * - */ - /** - * Collateral Onboarding ** - */ - /** - * - */ function addCollateralBase_test(bytes32 ilk, address gem, address join, address clip, address calc, address pip) public { @@ -403,28 +304,10 @@ contract DssTestAction is DssAction { DssExecLib.addNewCollateral(co); } - /** - * - */ - /** - * Payment ** - */ - /** - * - */ function sendPaymentFromSurplusBuffer_test(address join, address target, uint256 amount) public { DssExecLib.sendPaymentFromSurplusBuffer(join, target, amount); } - /** - * - */ - /** - * Misc ** - */ - /** - * - */ function linearInterpolation_test( bytes32 _name, address _target, From aa3c928f2b99e8a1bc1e14308596447d1fb601e4 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 7 May 2025 15:28:48 -0300 Subject: [PATCH 19/61] fix: update natspec and parameter names for generalized whitelist managing --- src/DssExecLib.sol | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 7e2b02c..fc5b937 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -906,18 +906,18 @@ library DssExecLib { } } - /// @dev Adds an address to the OSM or Median's reader whitelist, allowing the address to read prices. - /// @param _oracle Oracle Security Module (OSM) or Median core contract address - /// @param _reader Address to add to whitelist - function addToWhitelist(address _oracle, address _reader) public { - Kissable(_oracle).kiss(_reader); - } - - /// @dev Removes an address to the OSM or Median's reader whitelist, disallowing the address to read prices. - /// @param _oracle Oracle Security Module (OSM) or Median core contract address - /// @param _reader Address to remove from whitelist - function removeFromWhitelist(address _oracle, address _reader) public { - Kissable(_oracle).diss(_reader); + /// @dev Adds an address to a contract's whitelist + /// @param _target Address of a contract that implements the kiss() function + /// @param _usr Address to add to whitelist + function addToWhitelist(address _target, address _usr) public { + Kissable(_target).kiss(_usr); + } + + /// @dev Removes an address from a contract's whitelist + /// @param _target Address of a contract that implements the diss() function + /// @param _usr Address to remove from whitelist + function removeFromWhitelist(address _target, address _usr) public { + Kissable(_target).diss(_usr); } /// @dev Add OSM address to OSM mom, allowing it to be frozen by governance. From cff0591f380319bab24afcc72103ae54fe9a9c36 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 7 May 2025 15:43:59 -0300 Subject: [PATCH 20/61] chore: improve natspec and section comment formatting --- src/DssExecLib.sol | 229 +++++++++++++++++++-------------------------- 1 file changed, 97 insertions(+), 132 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index fc5b937..48b0d73 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -158,9 +158,8 @@ interface RwaOracleLike { // @title DssExecLib.sol -- Sky Protocol's Executive Spellcrafting Library library DssExecLib { - /************* - * Constants * - *************/ + /* ----- Constants ----- */ + address public constant LOG = 0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F; uint256 internal constant THOUSAND = 10 ** 3; @@ -172,9 +171,7 @@ library DssExecLib { uint256 internal constant BPS_ONE_HUNDRED_PCT = 100_00; uint256 internal constant RATES_ONE_HUNDRED_PCT = 1000000021979553151239153027; - /****************** - * Math Functions * - ******************/ + /* ----- Math Functions ----- */ /// @dev WAD division. The final result is rounded to the nearest integer. /// Examples: @@ -192,9 +189,7 @@ library DssExecLib { z = (x * RAY + y / 2) / y; } - /************************ - * Core Address Helpers * - ************************/ + /* ----- Core Address Helpers ----- */ function dai() public view returns (address) { return getChangelogAddress("MCD_DAI"); @@ -320,9 +315,7 @@ library DssExecLib { return ChainlogLike(LOG).getAddress(_key); } - /************************ - * Changelog Management * - ************************/ + /* ----- Changelog Management ----- */ /// @dev Set an address in the MCD on-chain changelog. /// @param _key Access key for the address (e.g. "MCD_VAT") @@ -349,27 +342,25 @@ library DssExecLib { ChainlogLike(LOG).setSha256sum(_SHA256Sum); } - /****************** - * Authorizations * - ******************/ + /* ----- Authorizations ----- */ /// @dev Give an address authorization to perform auth actions on the contract. - /// @param _base The address of the contract where the authorization will be set - /// @param _ward Address to be authorized + /// @param _base The address of the contract where the authorization will be set + /// @param _ward Address to be authorized function authorize(address _base, address _ward) public { Authorizable(_base).rely(_ward); } /// @dev Revoke contract authorization from an address. - /// @param _base The address of the contract where the authorization will be revoked - /// @param _ward Address to be deauthorized + /// @param _base The address of the contract where the authorization will be revoked + /// @param _ward Address to be deauthorized function deauthorize(address _base, address _ward) public { Authorizable(_base).deny(_ward); } /// @dev Give an address authorization to perform auth actions on the contract. - /// @param _base The address of the contract with a `setAuthority` pattern - /// @param _authority Address to be authorized + /// @param _base The address of the contract with a `setAuthority` pattern + /// @param _authority Address to be authorized function setAuthority(address _base, address _authority) public { Authorizable(_base).setAuthority(_authority); } @@ -386,13 +377,11 @@ library DssExecLib { DssVat(vat()).nope(_usr); } - /************************** - * OfficeHours Management * - **************************/ + /* ----- OfficeHours Management ----- */ /// @dev Returns true if a time is within office hours range - /// @param _ts The timestamp to check, usually block.timestamp - /// @param _officeHours true if office hours is enabled. + /// @param _ts The timestamp to check, usually block.timestamp + /// @param _officeHours true if office hours is enabled. /// @return true if time is in castable range function canCast(uint40 _ts, bool _officeHours) public pure returns (bool) { if (_officeHours) { @@ -405,9 +394,9 @@ library DssExecLib { } /// @dev Calculate the next available cast time in epoch seconds - /// @param _eta The scheduled time of the spell plus the pause delay + /// @param _eta The scheduled time of the spell plus the pause delay /// @param _ts The current timestamp, usually block.timestamp - /// @param _officeHours true if office hours is enabled. + /// @param _officeHours true if office hours is enabled. /// @return castTime The next available cast timestamp function nextCastTime(uint40 _eta, uint40 _ts, bool _officeHours) public pure returns (uint256 castTime) { require(_eta != 0); // "DssExecLib/invalid eta" @@ -437,9 +426,7 @@ library DssExecLib { } } - /********************** - * Accumulating Rates * - **********************/ + /* ----- Accumulating Rates ----- */ /// @dev Update rate accumulation for the Dai Savings Rate (DSR). function accumulateDSR() public { @@ -452,62 +439,56 @@ library DssExecLib { } /// @dev Update rate accumulation for the stability fees of a given collateral type. - /// @param _ilk Collateral type + /// @param _ilk Collateral type function accumulateCollateralStabilityFees(bytes32 _ilk) public { Drippable(jug()).drip(_ilk); } - /***************** - * Price Updates * - *****************/ + /* ----- Price Updates ----- */ /// @dev Update price of a given collateral type. - /// @param _ilk Collateral type + /// @param _ilk Collateral type function updateCollateralPrice(bytes32 _ilk) public { Pokeable(spotter()).poke(_ilk); } - /************************ - * System Configuration * - ************************/ + /* ----- System Configuration ----- */ /// @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in Clip) - /// @param _base The address of the contract where the new contract address will be filed - /// @param _what Name of contract to file - /// @param _addr Address of contract to file + /// @param _base The address of the contract where the new contract address will be filed + /// @param _what Name of contract to file + /// @param _addr Address of contract to file function setContract(address _base, bytes32 _what, address _addr) public { Fileable(_base).file(_what, _addr); } /// @dev Set a contract in another contract, defining the relationship (ex. set a new Calc contract in a Clip) - /// @param _base The address of the contract where the new contract address will be filed - /// @param _ilk Collateral type - /// @param _what Name of contract to file - /// @param _addr Address of contract to file + /// @param _base The address of the contract where the new contract address will be filed + /// @param _ilk Collateral type + /// @param _what Name of contract to file + /// @param _addr Address of contract to file function setContract(address _base, bytes32 _ilk, bytes32 _what, address _addr) public { Fileable(_base).file(_ilk, _what, _addr); } /// @dev Set a value in a contract, via a governance authorized File pattern. - /// @param _base The address of the contract where the new contract address will be filed - /// @param _what Name of tag for the value (e.x. "Line") - /// @param _amt The value to set or update + /// @param _base The address of the contract where the new contract address will be filed + /// @param _what Name of tag for the value (e.x. "Line") + /// @param _amt The value to set or update function setValue(address _base, bytes32 _what, uint256 _amt) public { Fileable(_base).file(_what, _amt); } /// @dev Set an ilk-specific value in a contract, via a governance authorized File pattern. - /// @param _base The address of the contract where the new value will be filed - /// @param _ilk Collateral type - /// @param _what Name of tag for the value (e.x. "Line") - /// @param _amt The value to set or update + /// @param _base The address of the contract where the new value will be filed + /// @param _ilk Collateral type + /// @param _what Name of tag for the value (e.x. "Line") + /// @param _amt The value to set or update function setValue(address _base, bytes32 _ilk, bytes32 _what, uint256 _amt) public { Fileable(_base).file(_ilk, _what, _amt); } - /************************** - * System Risk Parameters * - **************************/ + /* ----- System Risk Parameters ----- */ /// @dev Set the global debt ceiling. Amount will be converted to the correct internal precision. /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) @@ -533,7 +514,7 @@ library DssExecLib { } /// @dev Set the Dai Savings Rate. See: docs/rates.txt - /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) /// @param _doDrip `true` to accumulate interest owed function setDSR(uint256 _rate, bool _doDrip) public { require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/dsr-out-of-bounds" @@ -542,7 +523,7 @@ library DssExecLib { } /// @dev Set the SKY Savings Rate. See: docs/rates.txt - /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) /// @param _doDrip `true` to accumulate interest owed function setSSR(uint256 _rate, bool _doDrip) public { require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/dsr-out-of-bounds" @@ -594,7 +575,7 @@ library DssExecLib { /// @dev Set minimum bid increase for debt auctions. Amount will be converted to the correct internal precision. /// @dev Equation used for conversion is (1 + pct / 10,000) * WAD - /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) function setMinDebtAuctionBidIncrease(uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flop-beg-precision" setValue(flop(), "beg", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); @@ -617,7 +598,7 @@ library DssExecLib { /// @dev Set the rate of increasing amount of MKR out for auction during debt auctions. Amount will be converted to the correct internal precision. /// @dev MKR amount is increased by this rate every "tick" (if auction duration has passed and no one has bid on the MKR) /// @dev Equation used for conversion is (1 + pct / 10,000) * WAD - /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) function setDebtAuctionMKRIncreaseRate(uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-flop-pad-precision" setValue(flop(), "pad", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); @@ -652,7 +633,7 @@ library DssExecLib { /// /// A table of rates can also be found at: /// https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW - /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) function setGlobalStabilityFee(uint256 _rate) public { require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/global-stability-fee-out-of-bounds" setValue(jug(), "base", _rate); @@ -666,12 +647,10 @@ library DssExecLib { setValue(spotter(), "par", rdiv(_value, 1000)); } - /************************* - * Collateral Management * - *************************/ + /* ----- Collateral Management ----- */ /// @dev Set a collateral debt ceiling. Amount will be converted to the correct internal precision. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setIlkDebtCeiling(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" @@ -679,7 +658,7 @@ library DssExecLib { } /// @dev Increase a collateral debt ceiling. Amount will be converted to the correct internal precision. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to increase in DAI (ex. 10m DAI amount == 10000000) /// @param _global If true, increases the global debt ceiling by _amount function increaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global) public { @@ -691,7 +670,7 @@ library DssExecLib { } /// @dev Decrease a collateral debt ceiling. Amount will be converted to the correct internal precision. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to decrease in DAI (ex. 10m DAI amount == 10000000) /// @param _global If true, decreases the global debt ceiling by _amount function decreaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global) public { @@ -703,9 +682,9 @@ library DssExecLib { } /// @dev Set a RWA collateral debt ceiling by specifying its new oracle price. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _ceiling The new debt ceiling in natural units (e.g. set 10m DAI as 10_000_000) - /// @param _price The new oracle price in natural units + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ceiling The new debt ceiling in natural units (e.g. set 10m DAI as 10_000_000) + /// @param _price The new oracle price in natural units /// @dev note: _price should enable DAI to be drawn over the loan period while taking into /// account the configured ink amount, interest rate and liquidation ratio /// @dev note: _price * WAD should be greater than or equal to the current oracle price @@ -717,10 +696,10 @@ library DssExecLib { } /// @dev Set the parameters for an ilk in the "MCD_IAM_AUTO_LINE" auto-line - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The Maximum value (ex. 100m DAI amount == 100000000) - /// @param _gap The amount of Dai per step (ex. 5m Dai == 5000000) - /// @param _ttl The amount of time (in seconds) + /// @param _gap The amount of Dai per step (ex. 5m Dai == 5000000) + /// @param _ttl The amount of time (in seconds) function setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap, uint256 _ttl) public { require(_amount < WAD); // "LibDssExec/incorrect-auto-line-amount-precision" require(_gap < WAD); // "LibDssExec/incorrect-auto-line-gap-precision" @@ -728,7 +707,7 @@ library DssExecLib { } /// @dev Set the debt ceiling for an ilk in the "MCD_IAM_AUTO_LINE" auto-line without updating the time values - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The Maximum value (ex. 100m DAI amount == 100000000) function setIlkAutoLineDebtCeiling(bytes32 _ilk, uint256 _amount) public { address _autoLine = autoLine(); @@ -738,13 +717,13 @@ library DssExecLib { } /// @dev Remove an ilk in the "MCD_IAM_AUTO_LINE" auto-line - /// @param _ilk The ilk to remove (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to remove (ex. bytes32("ETH-A")) function removeIlkFromAutoLine(bytes32 _ilk) public { IAMLike(autoLine()).remIlk(_ilk); } /// @dev Set a collateral minimum vault amount. Amount will be converted to the correct internal precision. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-dust-precision" @@ -756,8 +735,8 @@ library DssExecLib { /// @dev Set a collateral liquidation penalty. Amount will be converted to the correct internal precision. /// @dev Equation used for conversion is (1 + pct / 10,000) * WAD - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 10.25% = 10.25 * 100 = 1025) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 10.25% = 10.25 * 100 = 1025) function setIlkLiquidationPenalty(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-chop-precision" setValue(dog(), _ilk, "chop", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); @@ -765,7 +744,7 @@ library DssExecLib { } /// @dev Set max DAI amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) function setIlkMaxLiquidationAmount(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-hole-precision" @@ -774,8 +753,8 @@ library DssExecLib { /// @dev Set a collateral liquidation ratio. Amount will be converted to the correct internal precision. /// @dev Equation used for conversion is pct * RAY / 10,000 - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 150% = 150 * 100 = 15000) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 150% = 150 * 100 = 15000) function setIlkLiquidationRatio(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < 10 * BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-mat-precision" // Fails if pct >= 1000% require(_pct_bps >= BPS_ONE_HUNDRED_PCT); // the liquidation ratio has to be bigger or equal to 100% @@ -784,8 +763,8 @@ library DssExecLib { /// @dev Set an auction starting multiplier. Amount will be converted to the correct internal precision. /// @dev Equation used for conversion is pct * RAY / 10,000 - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 1.3x starting multiplier = 130% = 13000) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 1.3x starting multiplier = 130% = 13000) function setStartingPriceMultiplicativeFactor(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < 10 * BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-mat-precision" // Fails if gt 10x require(_pct_bps >= BPS_ONE_HUNDRED_PCT); // fail if start price is less than OSM price @@ -793,14 +772,14 @@ library DssExecLib { } /// @dev Set the amout of time before an auction resets. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _duration Amount of time before auction resets (in seconds). function setAuctionTimeBeforeReset(bytes32 _ilk, uint256 _duration) public { setValue(clip(_ilk), "tail", _duration); } /// @dev Percentage drop permitted before auction reset - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _pct_bps The pct, in basis points, of drop to permit (x100). function setAuctionPermittedDrop(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clip-cusp-value" @@ -808,7 +787,7 @@ library DssExecLib { } /// @dev Percentage of tab to suck from vow to incentivize keepers. Amount will be converted to the correct internal precision. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _pct_bps The pct, in basis points, of the tab to suck. (0.01% == 1) function setKeeperIncentivePercent(bytes32 _ilk, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clip-chip-precision" @@ -816,7 +795,7 @@ library DssExecLib { } /// @dev Set max DAI amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set in DAI (ex. 1000 DAI amount == 1000) function setKeeperIncentiveFlatRate(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-clip-tip-precision" @@ -826,7 +805,7 @@ library DssExecLib { /// @dev Sets the circuit breaker price tolerance in the clipper mom. /// This is somewhat counter-intuitive, /// to accept a 25% price drop, use a value of 75% - /// @param _clip The clipper to set the tolerance for + /// @param _clip The clipper to set the tolerance for /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 5% = 5 * 100 = 500) function setLiquidationBreakerPriceTolerance(address _clip, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-clippermom-price-tolerance" @@ -843,8 +822,8 @@ library DssExecLib { /// A table of rates can also be found at: /// https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW /// - /// @param _ilk The ilk to update (ex. bytes32("ETH-A") ) - /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) /// @param _doDrip `true` to accumulate stability fees for the collateral function setIlkStabilityFee(bytes32 _ilk, uint256 _rate, bool _doDrip) public { require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/ilk-stability-fee-out-of-bounds" @@ -854,13 +833,11 @@ library DssExecLib { setValue(_jug, _ilk, "duty", _rate); } - /********************* - * Abacus Management * - *********************/ + /* ----- Abacus Management ----- */ /// @dev Set the number of seconds from the start when the auction reaches zero price. /// @dev Abacus:LinearDecrease only. - /// @param _calc The address of the LinearDecrease pricing contract + /// @param _calc The address of the LinearDecrease pricing contract /// @param _duration Amount of time for auctions. function setLinearDecrease(address _calc, uint256 _duration) public { setValue(_calc, "tau", _duration); @@ -868,7 +845,7 @@ library DssExecLib { /// @dev Set the number of seconds for each price step. /// @dev Abacus:StairstepExponentialDecrease only. - /// @param _calc The address of the StairstepExponentialDecrease pricing contract + /// @param _calc The address of the StairstepExponentialDecrease pricing contract /// @param _duration Length of time between price drops [seconds] /// @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) function setStairstepExponentialDecrease(address _calc, uint256 _duration, uint256 _pct_bps) public { @@ -880,16 +857,14 @@ library DssExecLib { /// @dev Set the number of seconds for each price step. (99% cut = 1% price drop per step) /// Amounts will be converted to the correct internal precision. /// @dev Abacus:ExponentialDecrease only - /// @param _calc The address of the ExponentialDecrease pricing contract + /// @param _calc The address of the ExponentialDecrease pricing contract /// @param _pct_bps Per-step multiplicative factor in basis points. (ex. 99% == 9900) function setExponentialDecrease(address _calc, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/cut-too-high setValue(_calc, "cut", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /********************* - * Oracle Management * - *********************/ + /* ----- Oracle Management ----- */ /// @dev Allows an oracle to read prices from its source feeds /// @param _oracle An OSM or LP oracle contract @@ -921,15 +896,13 @@ library DssExecLib { } /// @dev Add OSM address to OSM mom, allowing it to be frozen by governance. - /// @param _osm Oracle Security Module (OSM) core contract address - /// @param _ilk Collateral type using OSM + /// @param _osm Oracle Security Module (OSM) core contract address + /// @param _ilk Collateral type using OSM function allowOSMFreeze(address _osm, bytes32 _ilk) public { OsmMomLike(osmMom()).setOsm(_ilk, _osm); } - /****************************** - * Governance Security Module * - ******************************/ + /* ----- Governance Security Module ----- */ /// @dev Sets the time delay between governance votes and execution in MCD_PAUSE. /// @dev Enforces an arbitrary minimum delay of 12 hours. @@ -939,22 +912,18 @@ library DssExecLib { PauseLike(pause()).setDelay(_delay); } - /************************* - * Direct Deposit Module * - *************************/ + /* ----- Direct Deposit Module ----- */ /// @dev Sets the target rate threshold for a dai direct deposit module (ddm) /// @dev Aave: Targets the variable borrow rate - /// @param _ddm The address of the DDM contract + /// @param _ddm The address of the DDM contract /// @param _pct_bps Target rate in basis points. (ex. 4% == 400) function setDDMTargetInterestRate(address _ddm, uint256 _pct_bps) public { require(_pct_bps < BPS_ONE_HUNDRED_PCT); // DssExecLib/bar-too-high setValue(_ddm, "bar", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /************************* - * Collateral Onboarding * - *************************/ + /* ----- Collateral Onboarding ----- */ /// @dev Performs basic functions and sanity checks to add a new collateral type to the MCD system /// @param _ilk Collateral type key code [Ex. "ETH-A"] @@ -1077,9 +1046,7 @@ library DssExecLib { updateCollateralPrice(co.ilk); } - /*********** - * Payment * - ***********/ + /* ----- Payment ----- */ /// @dev Send a payment in either ERC20 USDS or DAI from the surplus buffer. /// @param _join The join adapter to exit the payment from. @@ -1091,18 +1058,16 @@ library DssExecLib { JoinLike(_join).exit(_target, _amount * WAD); } - /******** - * Misc * - ********/ + /* ----- Misc ----- */ /// @dev Initiate linear interpolation on an administrative value over time. - /// @param _name The label for this lerp instance - /// @param _target The target contract - /// @param _what The target parameter to adjust - /// @param _startTime The time for this lerp - /// @param _start The start value for the target parameter - /// @param _end The end value for the target parameter - /// @param _duration The duration of the interpolation + /// @param _name The label for this lerp instance + /// @param _target The target contract + /// @param _what The target parameter to adjust + /// @param _startTime The time for this lerp + /// @param _start The start value for the target parameter + /// @param _end The end value for the target parameter + /// @param _duration The duration of the interpolation function linearInterpolation( bytes32 _name, address _target, @@ -1119,14 +1084,14 @@ library DssExecLib { } /// @dev Initiate linear interpolation on an administrative value over time. - /// @param _name The label for this lerp instance - /// @param _target The target contract - /// @param _ilk The ilk to target - /// @param _what The target parameter to adjust - /// @param _startTime The time for this lerp - /// @param _start The start value for the target parameter - /// @param _end The end value for the target parameter - /// @param _duration The duration of the interpolation + /// @param _name The label for this lerp instance + /// @param _target The target contract + /// @param _ilk The ilk to target + /// @param _what The target parameter to adjust + /// @param _startTime The time for this lerp + /// @param _start The start value for the target parameter + /// @param _end The end value for the target parameter + /// @param _duration The duration of the interpolation function linearInterpolation( bytes32 _name, address _target, From abb4ae2ccccc48b6a80f76909d0dd24868fe44d1 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 7 May 2025 16:43:57 -0300 Subject: [PATCH 21/61] chore: ensure docs and comments use Sky Protocol rather than MakerDAO/MCD --- README.md | 8 ++++---- src/DssExecLib.sol | 22 ++++++++++++---------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index baef2ca..dfd69b0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DSS Exec Library -A library for crafting spells in DSS more efficiently, predictably, and easily. +A library for crafting spells in Sky Protocol (formerly MakerDAO) more efficiently, predictably, and easily. ## Public Library Addresses @@ -266,7 +266,7 @@ DssExecLib.setChangelogAddress("MCD_CLIP_CALC_XMPL-A", xmpl_calc); ## Testing -``` -$ dapp update -$ make test +```bash +$ forge update +$ ETH_RPC_URL= forge test ``` diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 48b0d73..7de3ea5 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -156,7 +156,9 @@ interface RwaOracleLike { function bump(bytes32 ilk, uint256 val) external; } -// @title DssExecLib.sol -- Sky Protocol's Executive Spellcrafting Library +/// @title DssExecLib - Sky Protocol's Executive Spellcrafting Library +/// @notice This library provides a suite of functions for managing the Sky Protocol. +/// @dev Includes functions for collateral management, system configuration, governance, and more. library DssExecLib { /* ----- Constants ----- */ @@ -317,26 +319,26 @@ library DssExecLib { /* ----- Changelog Management ----- */ - /// @dev Set an address in the MCD on-chain changelog. + /// @dev Set an address in the Sky Protocol on-chain changelog. /// @param _key Access key for the address (e.g. "MCD_VAT") /// @param _val The address associated with the _key function setChangelogAddress(bytes32 _key, address _val) public { ChainlogLike(LOG).setAddress(_key, _val); } - /// @dev Set version in the MCD on-chain changelog. + /// @dev Set version in the Sky Protocol on-chain changelog. /// @param _version Changelog version (e.g. "1.1.2") function setChangelogVersion(string memory _version) public { ChainlogLike(LOG).setVersion(_version); } - /// @dev Set IPFS hash of IPFS changelog in MCD on-chain changelog. + /// @dev Set IPFS hash of IPFS changelog in Sky Protocol on-chain changelog. /// @param _ipfsHash IPFS hash (e.g. "QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW") function setChangelogIPFS(string memory _ipfsHash) public { ChainlogLike(LOG).setIPFS(_ipfsHash); } - /// @dev Set SHA256 hash in MCD on-chain changelog. + /// @dev Set SHA256 hash in Sky Protocol on-chain changelog. /// @param _SHA256Sum SHA256 hash (e.g. "e42dc9d043a57705f3f097099e6b2de4230bca9a020c797508da079f9079e35b") function setChangelogSHA256(string memory _SHA256Sum) public { ChainlogLike(LOG).setSha256sum(_SHA256Sum); @@ -382,7 +384,7 @@ library DssExecLib { /// @dev Returns true if a time is within office hours range /// @param _ts The timestamp to check, usually block.timestamp /// @param _officeHours true if office hours is enabled. - /// @return true if time is in castable range + /// @return true if time is in castable range function canCast(uint40 _ts, bool _officeHours) public pure returns (bool) { if (_officeHours) { uint256 day = (_ts / 1 days + 3) % 7; @@ -395,9 +397,9 @@ library DssExecLib { /// @dev Calculate the next available cast time in epoch seconds /// @param _eta The scheduled time of the spell plus the pause delay - /// @param _ts The current timestamp, usually block.timestamp + /// @param _ts The current timestamp, usually block.timestamp /// @param _officeHours true if office hours is enabled. - /// @return castTime The next available cast timestamp + /// @return castTime The next available cast timestamp function nextCastTime(uint40 _eta, uint40 _ts, bool _officeHours) public pure returns (uint256 castTime) { require(_eta != 0); // "DssExecLib/invalid eta" require(_ts != 0); // "DssExecLib/invalid ts" @@ -895,7 +897,7 @@ library DssExecLib { Kissable(_target).diss(_usr); } - /// @dev Add OSM address to OSM mom, allowing it to be frozen by governance. + /// @dev Add OSM address to OSM mom, allowing it to be frozen by governance /// @param _osm Oracle Security Module (OSM) core contract address /// @param _ilk Collateral type using OSM function allowOSMFreeze(address _osm, bytes32 _ilk) public { @@ -925,7 +927,7 @@ library DssExecLib { /* ----- Collateral Onboarding ----- */ - /// @dev Performs basic functions and sanity checks to add a new collateral type to the MCD system + /// @dev Performs basic functions and sanity checks to add a new collateral type to the Sky Protocol /// @param _ilk Collateral type key code [Ex. "ETH-A"] /// @param _gem Address of token contract /// @param _join Address of join adapter From db763371afcbc59a4fea6954cbe70ab098fd02d6 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 7 May 2025 16:44:30 -0300 Subject: [PATCH 22/61] chore: remove Makefile, as default `forge` commands are preferred. --- Makefile | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 Makefile diff --git a/Makefile b/Makefile deleted file mode 100644 index 7142d95..0000000 --- a/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -build :; DAPP_BUILD_OPTIMIZE=1 DAPP_BUILD_OPTIMIZE_RUNS=200 dapp --use solc:0.8.16 build -clean :; forge clean -deploy :; make build && dapp create DssExecLib -flatten :; hevm flatten --source-file "src/DssExecLib.sol" > out/DssExecLib-flat.sol From 01938d5a8666ae9160a76d1cd789afd57a078a65 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 7 May 2025 16:45:46 -0300 Subject: [PATCH 23/61] fix: remove duplicate ETH_RPC_URL setting in GitHub workflow --- .github/workflows/tests.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index b9b2d31..07cbc20 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -7,7 +7,6 @@ on: env: FOUNDRY_PROFILE: ci - ETH_RPC_URL: ${{ secrets.ETH_RPC_URL }} jobs: check: From 4ab7c386382ba98926dcdf1ce5cde159d9d4163f Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 13 May 2025 14:38:54 -0300 Subject: [PATCH 24/61] Apply suggestions from code review Co-authored-by: oddaf <106770775+oddaf@users.noreply.github.com> --- src/DssExecLib.sol | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 7de3ea5..1afe8d3 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -528,7 +528,7 @@ library DssExecLib { /// @param _rate The accumulated rate (ex. 4% => 1000000001243680656318820312) /// @param _doDrip `true` to accumulate interest owed function setSSR(uint256 _rate, bool _doDrip) public { - require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/dsr-out-of-bounds" + require((_rate >= RAY) && (_rate <= RATES_ONE_HUNDRED_PCT)); // "LibDssExec/ssr-out-of-bounds" if (_doDrip) Drippable(susds()).drip(); setValue(susds(), "ssr", _rate); } @@ -768,12 +768,12 @@ library DssExecLib { /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _pct_bps The pct, in basis points, to set in integer form (x100). (ex. 1.3x starting multiplier = 130% = 13000) function setStartingPriceMultiplicativeFactor(bytes32 _ilk, uint256 _pct_bps) public { - require(_pct_bps < 10 * BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-mat-precision" // Fails if gt 10x + require(_pct_bps < 10 * BPS_ONE_HUNDRED_PCT); // "LibDssExec/incorrect-ilk-buf-precision" // Fails if gt 10x require(_pct_bps >= BPS_ONE_HUNDRED_PCT); // fail if start price is less than OSM price setValue(clip(_ilk), "buf", rdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /// @dev Set the amout of time before an auction resets. + /// @dev Set the amount of time before an auction resets. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _duration Amount of time before auction resets (in seconds). function setAuctionTimeBeforeReset(bytes32 _ilk, uint256 _duration) public { From be459030d4c731689fe13982f5d9bb87b85057e1 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 16 May 2025 11:53:14 -0300 Subject: [PATCH 25/61] refactor: simplify further oracle management --- README.md | 3 +- src/CollateralOpts.sol | 2 +- src/DssExecLib.sol | 61 +++++++++------------------- src/test/DssAction.t.sol | 83 ++++++++++---------------------------- src/test/DssExec.t.sol | 2 +- src/test/DssTestAction.sol | 5 +-- src/test/Mocks.sol | 2 +- 7 files changed, 46 insertions(+), 112 deletions(-) diff --git a/README.md b/README.md index dfd69b0..8985f6a 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ Below is an outline of all functions used in the library. - `increaseGlobalDebtCeiling(uint256 _amount)`: Increase the global debt ceiling. - `decreaseGlobalDebtCeiling(uint256 _amount)`: Decrease the global debt ceiling. - `setDSR(uint256 _rate, bool _doDrip)`: Set the Dai Savings Rate. -- `setSurplusAuctionMinPriceThreshold(uint256 _pct_bps)`: Set the relative multiplier of the reference price to insist in the swap. For example, ``9_80 bps` allows a 2% drop in the reference price. +- `setSurplusAuctionMinPriceThreshold(uint256 _pct_bps)`: Set the relative multiplier of the reference price to insist in the swap. For example, `9_80` bps allows a 2% drop in the reference price. - `setSurplusBuffer(uint256 _amount)`: Set the DAI amount for system surplus buffer, must be exceeded before surplus auctions start. - `setDebtAuctionDelay(uint256 _length)`: Set the number of seconds that pass before system debt is auctioned for MKR tokens. - `setDebtAuctionDAIAmount(uint256 _amount)`: Set the DAI amount for system debt to be covered by each debt auction. @@ -165,7 +165,6 @@ Below is an outline of all functions used in the library. - `initExponentialDecrease(address _calc, uint256 _pct_bps)`: Initialize the variables in an ExponentialDecrease calculator. ### Oracle Management -- `whitelistOracleMedians(address _oracle)`: Pass an OSM or UNIV2LP oracle to enable it to read the underlying medianizer. - `addToWhitelist(address _oracle, address _reader)`: Adds an address to a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. - `removeFromWhitelist(address _oracle, address _reader)`: Removes an address from a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. - `allowOSMFreeze(address _osm, bytes32 _ilk)`: Add OSM address to OSM mom, allowing it to be frozen by governance. diff --git a/src/CollateralOpts.sol b/src/CollateralOpts.sol index 33537aa..acda96b 100644 --- a/src/CollateralOpts.sol +++ b/src/CollateralOpts.sol @@ -28,7 +28,7 @@ struct CollateralOpts { address pip; bool isLiquidatable; bool isOSM; - bool whitelistOSM; + bool checkWhitelistedOSM; uint256 ilkDebtCeiling; uint256 minVaultAmount; uint256 maxLiquidationAmount; diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 1afe8d3..a32633d 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -31,6 +31,7 @@ interface Authorizable { interface Kissable { function kiss(address) external; function diss(address) external; + function bud(address) external view returns (uint256); } interface Fileable { @@ -86,16 +87,10 @@ interface JoinLike { function exit(address, uint256) external; } -// Includes Median and OSM functions -interface OracleLike is Kissable { +interface OsmLike is Kissable { function src() external view returns (address); } -interface LPOracleLike is Kissable { - function orb0() external view returns (address); - function orb1() external view returns (address); -} - interface OsmMomLike { function setOsm(bytes32, address) external; } @@ -360,6 +355,20 @@ library DssExecLib { Authorizable(_base).deny(_ward); } + /// @dev Adds an address to a contract's whitelist + /// @param _target Address of a contract that implements the kiss() function + /// @param _usr Address to add to whitelist + function addToWhitelist(address _target, address _usr) public { + Kissable(_target).kiss(_usr); + } + + /// @dev Removes an address from a contract's whitelist + /// @param _target Address of a contract that implements the diss() function + /// @param _usr Address to remove from whitelist + function removeFromWhitelist(address _target, address _usr) public { + Kissable(_target).diss(_usr); + } + /// @dev Give an address authorization to perform auth actions on the contract. /// @param _base The address of the contract with a `setAuthority` pattern /// @param _authority Address to be authorized @@ -868,35 +877,6 @@ library DssExecLib { /* ----- Oracle Management ----- */ - /// @dev Allows an oracle to read prices from its source feeds - /// @param _oracle An OSM or LP oracle contract - function whitelistOracleMedians(address _oracle) public { - (bool ok, bytes memory data) = _oracle.call(abi.encodeWithSignature("orb0()")); - if (ok) { - // Token is an LP oracle - address median0 = abi.decode(data, (address)); - median0.call(abi.encodeWithSignature("kiss(address)", _oracle)); - LPOracleLike(_oracle).orb1().call(abi.encodeWithSignature("kiss(address)", _oracle)); - } else { - // Standard OSM - OracleLike(_oracle).src().call(abi.encodeWithSignature("kiss(address)", _oracle)); - } - } - - /// @dev Adds an address to a contract's whitelist - /// @param _target Address of a contract that implements the kiss() function - /// @param _usr Address to add to whitelist - function addToWhitelist(address _target, address _usr) public { - Kissable(_target).kiss(_usr); - } - - /// @dev Removes an address from a contract's whitelist - /// @param _target Address of a contract that implements the diss() function - /// @param _usr Address to remove from whitelist - function removeFromWhitelist(address _target, address _usr) public { - Kissable(_target).diss(_usr); - } - /// @dev Add OSM address to OSM mom, allowing it to be frozen by governance /// @param _osm Oracle Security Module (OSM) core contract address /// @param _ilk Collateral type using OSM @@ -999,13 +979,12 @@ library DssExecLib { if (co.isOSM) { // If pip == OSM + if (co.checkWhitelistedOSM) { + // Check whether the OSM was kissed in the underlying oracle + require(Kissable(OsmLike(co.pip).src()).bud(co.pip) == 1); // DssExecLib/osm-not-kissed + } // Allow OsmMom to access to the TOKEN OSM authorize(co.pip, osmMom()); - if (co.whitelistOSM) { - // If median is src in OSM - // Whitelist OSM to read the Median data (only necessary if it is the first time the token is being added to an ilk) - whitelistOracleMedians(co.pip); - } // Whitelist Spotter to read the OSM data (only necessary if it is the first time the token is being added to an ilk) addToWhitelist(co.pip, spotter()); // Whitelist Clipper on pip diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 747e066..73d7121 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -35,6 +35,10 @@ interface PipLike { function read() external returns (bytes32); } +interface KissLike { + function kiss(address) external; +} + interface ClipFabLike { function newClip(address owner, address vat, address spotter, address dog, bytes32 ilk) external @@ -122,7 +126,7 @@ contract ActionTest is Test { LerpFactoryAbstract lerpFab; RwaLiquidationOracleLike rwaOracle; - MedianAbstract median; + MedianAbstract oracle; DssTestAction action; @@ -175,7 +179,7 @@ contract ActionTest is Test { autoLine = DssAutoLineAbstract(LOG.getAddress("MCD_IAM_AUTO_LINE")); lerpFab = LerpFactoryAbstract(LOG.getAddress("LERP_FAB")); rwaOracle = RwaLiquidationOracleLike(LOG.getAddress("MIP21_LIQUIDATION_ORACLE")); - median = MedianAbstract(address(new MockMedian())); + oracle = MedianAbstract(address(new MockOracle())); vm.label(address(pause), "PAUSE"); vm.label(address(vat), "VAT"); @@ -227,7 +231,7 @@ contract ActionTest is Test { giveAuth(address(lerpFab), address(action)); giveAuth(address(rwaOracle), address(this)); giveAuth(address(rwaOracle), address(action)); - median.rely(address(action)); + oracle.rely(address(action)); initCollateral("gold", address(action)); initRwaCollateral({ @@ -907,54 +911,6 @@ contract ActionTest is Test { assertEq(calc.cut(), 999900000000000000000000000); } - function test_whitelistOracleOSM() public { - address tokenPip = address(new MockOsm(address(median))); - - assertEq(median.bud(tokenPip), 0); - action.whitelistOracleMedians_test(tokenPip); - assertEq(median.bud(tokenPip), 1); - } - - function test_whitelistOracleLP() public { - // Mock an LP oracle and whitelist it - address token0 = address(new MockToken("nil")); - address token1 = address(new MockToken("one")); - MedianAbstract med0 = MedianAbstract(address(new MockMedian())); - MedianAbstract med1 = MedianAbstract(address(new MockMedian())); - address lperc = address(new MockUniPair(token0, token1)); - med0.rely(address(action)); - med1.rely(address(action)); - LPOsmAbstract lorc = LPOsmAbstract( - Univ2OracleFactoryLike(UNIV2ORACLE_FAB).build( - address(this), address(lperc), "NILONE", address(med0), address(med1) - ) - ); - - assertEq(med0.bud(address(lorc)), 0); - assertEq(med1.bud(address(lorc)), 0); - action.whitelistOracleMedians_test(address(lorc)); - assertEq(med0.bud(address(lorc)), 1); - assertEq(med1.bud(address(lorc)), 1); - } - - function test_whitelistOracleWithDSValueLP() public { - // Should not fail for LP tokens if one or more oracles are DSValue - address token0 = address(new MockToken("nil")); - address token1 = address(new MockToken("one")); - DSValueAbstract med0 = DSValueAbstract(address(new MockValue())); - DSValueAbstract med1 = DSValueAbstract(address(new MockValue())); - address lperc = address(new MockUniPair(token0, token1)); - med0.poke(bytes32(uint256(100))); - med1.poke(bytes32(uint256(100))); - LPOsmAbstract lorc = LPOsmAbstract( - Univ2OracleFactoryLike(UNIV2ORACLE_FAB).build( - address(this), address(lperc), "NILONE", address(med0), address(med1) - ) - ); - - action.whitelistOracleMedians_test(address(lorc)); - } - function test_addReaderToOSMWhitelist() public { OsmAbstract osm = ilks["gold"].osm; address reader = address(1); @@ -1059,7 +1015,7 @@ contract ActionTest is Test { assertEq(address(tokenClip.calc()), address(tokenCalc)); } - function collateralOnboardingTest(bool liquidatable, bool isOsm, bool medianSrc) internal { + function _checkCollateralOnboarding(bool liquidatable, bool isOsm, bool oracleSrc) internal { string memory silk = "silver"; bytes32 ilk = stringToBytes32(silk); @@ -1074,11 +1030,15 @@ contract ActionTest is Test { LinearDecreaseAbstract tokenCalc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); tokenCalc.file("tau", 1); - address tokenPip = address(DSValueAbstract(address(new MockValue()))); + address _pip = address(DSValueAbstract(address(new MockValue()))); + address tokenPip; if (isOsm) { - tokenPip = medianSrc ? address(new MockOsm(address(median))) : address(new MockOsm(address(tokenPip))); + tokenPip = oracleSrc ? address(new MockOsm(address(oracle))) : address(new MockOsm(address(_pip))); + if (oracleSrc) KissLike(address(oracle)).kiss(address(tokenPip)); OsmAbstract(tokenPip).rely(address(action)); + } else { + tokenPip = _pip; } tokenClip.rely(address(action)); @@ -1099,7 +1059,7 @@ contract ActionTest is Test { pip: tokenPip, isLiquidatable: liquidatable, isOSM: isOsm, - whitelistOSM: medianSrc, + checkWhitelistedOSM: oracleSrc, ilkDebtCeiling: 100 * MILLION, minVaultAmount: 100, maxLiquidationAmount: 50 * THOUSAND, @@ -1141,7 +1101,6 @@ contract ActionTest is Test { assertEq(OsmAbstract(tokenPip).bud(address(clipperMom)), 1); assertEq(OsmAbstract(tokenPip).bud(address(end)), 1); - if (medianSrc) assertEq(median.bud(tokenPip), 1); assertEq(osmMom.osms(ilk), tokenPip); } @@ -1178,27 +1137,27 @@ contract ActionTest is Test { } function test_addNewCollateralCase1() public { - collateralOnboardingTest(true, true, true); // Liquidations: ON, PIP == OSM, osmSrc == median + _checkCollateralOnboarding(true, true, true); // Liquidations: ON, PIP == OSM, osmSrc == oracle } function test_addNewCollateralCase2() public { - collateralOnboardingTest(true, true, false); // Liquidations: ON, PIP == OSM, osmSrc != median + _checkCollateralOnboarding(true, true, false); // Liquidations: ON, PIP == OSM, osmSrc != oracle } function test_addNewCollateralCase3() public { - collateralOnboardingTest(true, false, false); // Liquidations: ON, PIP != OSM, osmSrc != median + _checkCollateralOnboarding(true, false, false); // Liquidations: ON, PIP != OSM, osmSrc != oracle } function test_addNewCollateralCase4() public { - collateralOnboardingTest(false, true, true); // Liquidations: OFF, PIP == OSM, osmSrc == median + _checkCollateralOnboarding(false, true, true); // Liquidations: OFF, PIP == OSM, osmSrc == oracle } function test_addNewCollateralCase5() public { - collateralOnboardingTest(false, true, false); // Liquidations: OFF, PIP == OSM, osmSrc != median + _checkCollateralOnboarding(false, true, false); // Liquidations: OFF, PIP == OSM, osmSrc != oracle } function test_addNewCollateralCase6() public { - collateralOnboardingTest(false, false, false); // Liquidations: OFF, PIP != OSM, osmSrc != median + _checkCollateralOnboarding(false, false, false); // Liquidations: OFF, PIP != OSM, osmSrc != oracle } function test_officeHoursCanOverrideInAction() public { diff --git a/src/test/DssExec.t.sol b/src/test/DssExec.t.sol index c0612bb..3c7e7be 100644 --- a/src/test/DssExec.t.sol +++ b/src/test/DssExec.t.sol @@ -86,7 +86,7 @@ contract DssLibSpellAction is pip: xmpl_pip, isLiquidatable: true, isOSM: true, - whitelistOSM: true, + checkWhitelistedOSM: true, ilkDebtCeiling: 3 * MILLION, minVaultAmount: 2000, maxLiquidationAmount: 50000, diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index 1f9452d..8397716 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -20,6 +20,7 @@ pragma solidity ^0.8.16; import "../DssAction.sol"; +import "../CollateralOpts.sol"; contract DssTestNoOfficeHoursAction is DssAction { function description() public pure override returns (string memory) { @@ -270,10 +271,6 @@ contract DssTestAction is DssAction { DssExecLib.setExponentialDecrease(calc, pct_bps); } - function whitelistOracleMedians_test(address oracle) public { - DssExecLib.whitelistOracleMedians(oracle); - } - function addToWhitelist_test(address osm, address reader) public { DssExecLib.addToWhitelist(osm, reader); } diff --git a/src/test/Mocks.sol b/src/test/Mocks.sol index a6a69a0..bbb3bea 100644 --- a/src/test/Mocks.sol +++ b/src/test/Mocks.sol @@ -98,7 +98,7 @@ contract MockValue { } } -contract MockMedian { +contract MockOracle { // --- Auth --- mapping(address => uint256) public wards; From 448c55118459559dc75ea80171f53318a0a8c0fc Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 16 May 2025 12:11:05 -0300 Subject: [PATCH 26/61] feat: add `removeChangelogAddress` --- src/DssAction.sol | 5 ----- src/DssExecLib.sol | 7 ++++++- src/test/DssAction.t.sol | 14 ++++++++++++++ src/test/DssTestAction.sol | 4 ++++ 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/DssAction.sol b/src/DssAction.sol index 5d3dce6..5f834b7 100644 --- a/src/DssAction.sol +++ b/src/DssAction.sol @@ -20,11 +20,6 @@ pragma solidity ^0.8.16; import {DssExecLib} from "./DssExecLib.sol"; -import {CollateralOpts} from "./CollateralOpts.sol"; - -interface OracleLike { - function src() external view returns (address); -} abstract contract DssAction { using DssExecLib for *; diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index a32633d..536cb1a 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -118,7 +118,6 @@ interface IAMLike { function ilks(bytes32) external view returns (uint256, uint256, uint48, uint48, uint48); function setIlk(bytes32, uint256, uint256, uint256) external; function remIlk(bytes32) external; - function exec(bytes32) external returns (uint256); } interface LerpFactoryLike { @@ -321,6 +320,12 @@ library DssExecLib { ChainlogLike(LOG).setAddress(_key, _val); } + /// @dev Remove an address from the Sky Protocol on-chain changelog. + /// @param _key Access key for the address to remove (e.g. "MCD_VAT") + function removeChangelogAddress(bytes32 _key) public { + ChainlogLike(LOG).removeAddress(_key); + } + /// @dev Set version in the Sky Protocol on-chain changelog. /// @param _version Changelog version (e.g. "1.1.2") function setChangelogVersion(string memory _version) public { diff --git a/src/test/DssAction.t.sol b/src/test/DssAction.t.sol index 73d7121..cb86351 100644 --- a/src/test/DssAction.t.sol +++ b/src/test/DssAction.t.sol @@ -526,6 +526,20 @@ contract ActionTest is Test { assertEq(LOG.getAddress(ilk), address(this)); } + function test_removeAddress() public { + bytes32 ilk = "silver"; + // First add an address to the changelog + action.setChangelogAddress_test(ilk, address(this)); + assertEq(LOG.getAddress(ilk), address(this)); + + // Then remove it + action.removeChangelogAddress_test(ilk); + + // Verify it was removed by checking that it reverts when trying to get the address + vm.expectRevert(); + LOG.getAddress(ilk); + } + function test_setVersion() public { string memory version = "9001.0.0"; action.setChangelogVersion_test(version); diff --git a/src/test/DssTestAction.sol b/src/test/DssTestAction.sol index 8397716..ab214cb 100644 --- a/src/test/DssTestAction.sol +++ b/src/test/DssTestAction.sol @@ -87,6 +87,10 @@ contract DssTestAction is DssAction { DssExecLib.setChangelogAddress(key, val); } + function removeChangelogAddress_test(bytes32 key) public { + DssExecLib.removeChangelogAddress(key); + } + function setChangelogVersion_test(string memory version) public { DssExecLib.setChangelogVersion(version); } From b6e7597872a5400f80d70fe6d894780a7606a563 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 16 May 2025 16:27:56 -0300 Subject: [PATCH 27/61] feat: add Star spell proxy execution functions --- src/DssExecLib.sol | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 536cb1a..a4a10f0 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -150,6 +150,10 @@ interface RwaOracleLike { function bump(bytes32 ilk, uint256 val) external; } +interface ProxyLike { + function exec(address target, bytes calldata args) external payable returns (bytes memory out); +} + /// @title DssExecLib - Sky Protocol's Executive Spellcrafting Library /// @notice This library provides a suite of functions for managing the Sky Protocol. /// @dev Includes functions for collateral management, system configuration, governance, and more. @@ -1094,4 +1098,29 @@ library DssExecLib { LerpLike(lerp).tick(); return lerp; } + + /* ----- SubDAO/Star Spells ----- */ + + /// @dev Execute a start spell through its star proxy. + /// @param _starProxy The proxy to execute the spell through. + /// @param _starSpell The spell to execute. + /// @return The return data from the spell execution. + function executeStarSpell(address _starProxy, address _starSpell) public returns (bytes memory) { + return ProxyLike(_starProxy).exec(_starSpell, abi.encodeWithSignature("execute()")); + } + + /// @dev Tries to execute a spell through its star proxy. + /// Uses low-level call to avoid reverts in case of an error. + /// Callers are expected to deal with failed calls. + /// @param _starProxy The proxy to execute the spell through. + /// @param _starSpell The spell to execute. + /// @return ok Whether the spell was executed successfully. + /// @return data The return data from the spell execution or error message. + function tryExecuteStarSpell(address _starProxy, address _starSpell) public returns (bool ok, bytes memory data) { + // Simple low-level call to handle errors without reverting + (bool success, bytes memory result) = + _starProxy.call(abi.encodeCall(ProxyLike.exec, (_starSpell, abi.encodeWithSignature("execute()")))); + + return (success, result); + } } From 9f0aac8d062f16f9a75a81735644024054a5e225 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 16 May 2025 17:08:15 -0300 Subject: [PATCH 28/61] refacotr: reorganize project structure --- src/{test => }/DssAction.t.sol | 83 +++- src/{test => }/DssExec.t.sol | 17 +- src/DssExecLib.t.sol | 71 ++++ .../MockDssSpellAction.sol} | 21 +- src/mocks/MockOracle.sol | 164 ++++++++ src/mocks/MockOsm.sol | 157 +++++++ src/{test/rates.sol => mocks/MockRates.sol} | 2 +- src/mocks/MockStarProxy.sol | 44 ++ src/mocks/MockStarSpell.sol | 32 ++ src/mocks/MockToken.sol | 71 ++++ src/mocks/MockValue.sol | 46 +++ src/test/Mocks.sol | 388 ------------------ 12 files changed, 687 insertions(+), 409 deletions(-) rename src/{test => }/DssAction.t.sol (93%) rename src/{test => }/DssExec.t.sol (98%) create mode 100644 src/DssExecLib.t.sol rename src/{test/DssTestAction.sol => mocks/MockDssSpellAction.sol} (93%) create mode 100644 src/mocks/MockOracle.sol create mode 100644 src/mocks/MockOsm.sol rename src/{test/rates.sol => mocks/MockRates.sol} (99%) create mode 100644 src/mocks/MockStarProxy.sol create mode 100644 src/mocks/MockStarSpell.sol create mode 100644 src/mocks/MockToken.sol create mode 100644 src/mocks/MockValue.sol delete mode 100644 src/test/Mocks.sol diff --git a/src/test/DssAction.t.sol b/src/DssAction.t.sol similarity index 93% rename from src/test/DssAction.t.sol rename to src/DssAction.t.sol index cb86351..a6f4c6e 100644 --- a/src/test/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -22,9 +22,14 @@ pragma solidity ^0.8.16; import "forge-std/Test.sol"; import "dss-interfaces/Interfaces.sol"; -import "../CollateralOpts.sol"; -import {DssTestAction, DssTestNoOfficeHoursAction} from "./DssTestAction.sol"; -import "./Mocks.sol"; +import {CollateralOpts} from "./CollateralOpts.sol"; +import {MockDssSpellAction, MockDssSpellActionNoOfficeHours} from "./mocks/MockDssSpellAction.sol"; +import {MockToken} from "./mocks/MockToken.sol"; +import {MockValue} from "./mocks/MockValue.sol"; +import {MockOracle} from "./mocks/MockOracle.sol"; +import {MockOsm} from "./mocks/MockOsm.sol"; +import {MockStarProxy} from "./mocks/MockStarProxy.sol"; +import {MockStarSpell} from "./mocks/MockStarSpell.sol"; interface ChainlogLike is ChainlogAbstract { function sha256sum() external view returns (string calldata); @@ -128,7 +133,7 @@ contract ActionTest is Test { MedianAbstract oracle; - DssTestAction action; + MockDssSpellAction action; struct Ilk { DSValueAbstract pip; @@ -207,7 +212,7 @@ contract ActionTest is Test { vm.warp(START_TIME); - action = new DssTestAction(); + action = new MockDssSpellAction(); giveAuth(address(vat), address(this)); giveAuth(address(vat), address(action)); @@ -1175,7 +1180,7 @@ contract ActionTest is Test { } function test_officeHoursCanOverrideInAction() public { - DssTestNoOfficeHoursAction actionNoOfficeHours = new DssTestNoOfficeHoursAction(); + MockDssSpellActionNoOfficeHours actionNoOfficeHours = new MockDssSpellActionNoOfficeHours(); actionNoOfficeHours.execute(); assertTrue(!actionNoOfficeHours.officeHours()); } @@ -1286,4 +1291,70 @@ contract ActionTest is Test { assertTrue(lerp.done()); assertEq(vat.wards(address(lerp)), 0); } + + function test_executeStarSpell_success() public { + // Setup mock contracts + MockStarProxy proxy = new MockStarProxy(); + MockStarSpell spell = new MockStarSpell(); + + // Execute the spell through the proxy + action.executeStarSpell_test(address(proxy), address(spell)); + + // Verify the spell was executed successfully + assertTrue(proxy.executed(), "Spell should have been executed"); + + // Verify the proxy recorded the correct target and data + assertEq(proxy.lastTarget(), address(spell), "Proxy should have recorded the correct target"); + assertEq( + proxy.lastData(), + abi.encodeWithSignature("execute()"), + "Proxy should have recorded the correct function signature" + ); + } + + function test_executeStarSpell_failure() public { + // Setup mock contracts + MockStarProxy proxy = new MockStarProxy(); + MockStarSpell spell = new MockStarSpell(); + + // Configure the spell to fail + proxy.setShouldFail(true); + + // This should revert + vm.expectRevert("MockStarProxy/delegatecall-error"); + action.executeStarSpell_test(address(proxy), address(spell)); + } + + function test_tryExecuteStarSpell_success() public { + // Setup mock contracts + MockStarProxy proxy = new MockStarProxy(); + MockStarSpell spell = new MockStarSpell(); + + // Try to execute the spell through the proxy + (bool success,) = action.tryExecuteStarSpell_test(address(proxy), address(spell)); + + // Verify the execution was successful + assertTrue(success, "tryExecuteStarSpell should return success=true for successful execution"); + + // Verify the spell was executed + assertTrue(proxy.executed(), "Spell should have been executed"); + } + + function test_tryExecuteStarSpell_failure() public { + // Setup mock contracts + MockStarProxy proxy = new MockStarProxy(); + MockStarSpell spell = new MockStarSpell(); + + // Configure the spell to fail + proxy.setShouldFail(true); + + // Try to execute the spell through the proxy + (bool success,) = action.tryExecuteStarSpell_test(address(proxy), address(spell)); + + // Verify the execution failed but the call itself didn't revert + assertFalse(success, "tryExecuteStarSpell should return success=false for failed execution"); + + // Verify the spell was not executed + assertFalse(proxy.executed(), "Spell should not have been executed when configured to fail"); + } } diff --git a/src/test/DssExec.t.sol b/src/DssExec.t.sol similarity index 98% rename from src/test/DssExec.t.sol rename to src/DssExec.t.sol index 3c7e7be..c90dd44 100644 --- a/src/test/DssExec.t.sol +++ b/src/DssExec.t.sol @@ -22,10 +22,11 @@ pragma solidity ^0.8.16; import "forge-std/Test.sol"; import "dss-interfaces/Interfaces.sol"; -import "../DssExec.sol"; -import "../DssAction.sol"; -import "../CollateralOpts.sol"; -import "./rates.sol"; +import {DssExec} from "./DssExec.sol"; +import {DssExecLib} from "./DssExecLib.sol"; +import {DssAction} from "./DssAction.sol"; +import {CollateralOpts} from "./CollateralOpts.sol"; +import {MockRates} from "./mocks/MockRates.sol"; interface SpellLike { function done() external view returns (bool); @@ -153,7 +154,7 @@ contract DssLibExecTest is Test { // MAINNET ADDRESSES address pauseProxy; - PauseAbstract pause; + DSPauseAbstract pause; DSChiefAbstract chief; VatAbstract vat; VowAbstract vow; @@ -173,7 +174,7 @@ contract DssLibExecTest is Test { SystemValues afterSpell; - Rates rates; + MockRates rates; DssExec spell; @@ -189,7 +190,7 @@ contract DssLibExecTest is Test { vm.createSelectFork("mainnet"); pauseProxy = LOG.getAddress("MCD_PAUSE_PROXY"); - pause = PauseAbstract(LOG.getAddress("MCD_PAUSE")); + pause = DSPauseAbstract(LOG.getAddress("MCD_PAUSE")); chief = DSChiefAbstract(LOG.getAddress("MCD_ADM")); vat = VatAbstract(LOG.getAddress("MCD_VAT")); vow = VowAbstract(LOG.getAddress("MCD_VOW")); @@ -205,7 +206,7 @@ contract DssLibExecTest is Test { xmpl = GemAbstract(0xCE4F3774620764Ea881a8F8840Cbe0F701372283); pipXMPL = OsmAbstract(LOG.getAddress("PIP_USDT")); - rates = new Rates(); + rates = new MockRates(); spell = new DssExec( block.timestamp + 30 days, // Expiration diff --git a/src/DssExecLib.t.sol b/src/DssExecLib.t.sol new file mode 100644 index 0000000..65dfcec --- /dev/null +++ b/src/DssExecLib.t.sol @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// DssExecLib.t.sol -- DssExecLib Tests +// +// Copyright (C) 2022-2025 Dai Foundation +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +pragma solidity ^0.8.16; + +import "forge-std/Test.sol"; +import {DssExecLib} from "./DssExecLib.sol"; + +// This contract uses DssExecLib to verify it can be used in a contract +contract DssExecLibUser { + using DssExecLib for *; + + function checkLibraryCall() public pure returns (uint256) { + // Just call a simple function from the library to ensure it's usable + return DssExecLib.WAD; + } +} + +contract DssExecLibTest is Test { + function setUp() public {} + + function test_DssExecLibSize() public { + // Get the creation code of DssExecLib + bytes memory creationCode = type(DssExecLib).creationCode; + uint256 creationSize = creationCode.length; + + // Get the runtime code of DssExecLib + bytes memory runtimeCode = type(DssExecLib).runtimeCode; + uint256 runtimeSize = runtimeCode.length; + + // Log the sizes for debugging + emit log_named_uint("DssExecLib creation code size (bytes)", creationSize); + emit log_named_uint("DssExecLib runtime code size (bytes)", runtimeSize); + + // Ethereum contract size limit is 24KB (24576 bytes) + uint256 MAX_CONTRACT_SIZE = 24576; + + // Assert that the runtime size is within limits + assertTrue( + runtimeSize <= MAX_CONTRACT_SIZE, + string( + abi.encodePacked( + "DssExecLib exceeds maximum contract size limit: ", + vm.toString(runtimeSize), + " > ", + vm.toString(MAX_CONTRACT_SIZE) + ) + ) + ); + + // Create a contract that uses the library to ensure it's usable + DssExecLibUser user = new DssExecLibUser(); + assertEq(user.checkLibraryCall(), 10 ** 18, "Library function call failed"); + } +} diff --git a/src/test/DssTestAction.sol b/src/mocks/MockDssSpellAction.sol similarity index 93% rename from src/test/DssTestAction.sol rename to src/mocks/MockDssSpellAction.sol index ab214cb..0eac2a3 100644 --- a/src/test/DssTestAction.sol +++ b/src/mocks/MockDssSpellAction.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: AGPL-3.0-or-later // -// DssTestAction.sol -- Testable Actions +// MockDssSpellAction.sol -- Mock for testing DssExecLib // -// Copyright (C) 2020-2022 Dai Foundation +// Copyright (C) 2020-2025 Dai Foundation // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by @@ -19,10 +19,11 @@ pragma solidity ^0.8.16; -import "../DssAction.sol"; -import "../CollateralOpts.sol"; +import {DssExecLib} from "../DssExecLib.sol"; +import {DssAction} from "../DssAction.sol"; +import {CollateralOpts} from "../CollateralOpts.sol"; -contract DssTestNoOfficeHoursAction is DssAction { +contract MockDssSpellActionNoOfficeHours is DssAction { function description() public pure override returns (string memory) { return "No Office Hours Action"; } @@ -36,7 +37,7 @@ contract DssTestNoOfficeHoursAction is DssAction { } } -contract DssTestAction is DssAction { +contract MockDssSpellAction is DssAction { function description() external pure override returns (string memory) { return "DssTestAction"; } @@ -333,4 +334,12 @@ contract DssTestAction is DssAction { ) public returns (address) { return DssExecLib.linearInterpolation(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); } + + function executeStarSpell_test(address starProxy, address starSpell) public returns (bytes memory) { + return DssExecLib.executeStarSpell(starProxy, starSpell); + } + + function tryExecuteStarSpell_test(address starProxy, address starSpell) public returns (bool, bytes memory) { + return DssExecLib.tryExecuteStarSpell(starProxy, starSpell); + } } diff --git a/src/mocks/MockOracle.sol b/src/mocks/MockOracle.sol new file mode 100644 index 0000000..0c0101f --- /dev/null +++ b/src/mocks/MockOracle.sol @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// MockOracle.sol -- Mock Oracle for testing +// +// Copyright (C) 2022-2025 Dai Foundation +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +pragma solidity ^0.8.16; + +contract MockOracle { + // --- Auth --- + mapping(address => uint256) public wards; + + function rely(address usr) external auth { + wards[usr] = 1; + } + + function deny(address usr) external auth { + wards[usr] = 0; + } + + modifier auth() { + require(wards[msg.sender] == 1, "Median/not-authorized"); + _; + } + + uint128 val; + uint32 public age; + bytes32 public constant wat = "ethusd"; // You want to change this every deploy + uint256 public bar = 1; + + // Authorized oracles, set by an auth + mapping(address => uint256) public orcl; + + // Whitelisted contracts, set by an auth + mapping(address => uint256) public bud; + + // Mapping for at most 256 oracles + mapping(uint8 => address) public slot; + + modifier toll() { + require(bud[msg.sender] == 1, "Median/contract-not-whitelisted"); + _; + } + + event LogMedianPrice(uint256 val, uint256 age); + + //Set type of Oracle + constructor() { + wards[msg.sender] = 1; + } + + function read() external view toll returns (uint256) { + require(val > 0, "Median/invalid-price-feed"); + return val; + } + + function peek() external view toll returns (uint256, bool) { + return (val, val > 0); + } + + function recover(uint256 val_, uint256 age_, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { + return ecrecover( + keccak256( + abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256(abi.encodePacked(val_, age_, wat))) + ), + v, + r, + s + ); + } + + function poke( + uint256[] calldata val_, + uint256[] calldata age_, + uint8[] calldata v, + bytes32[] calldata r, + bytes32[] calldata s + ) external { + require(val_.length == bar, "Median/bar-too-low"); + + uint256 bloom = 0; + uint256 last = 0; + uint256 zzz = age; + + for (uint256 i = 0; i < val_.length; i++) { + // Validate the values were signed by an authorized oracle + address signer = recover(val_[i], age_[i], v[i], r[i], s[i]); + // Check that signer is an oracle + require(orcl[signer] == 1, "Median/invalid-oracle"); + // Price feed age greater than last medianizer age + require(age_[i] > zzz, "Median/stale-message"); + // Check for ordered values + require(val_[i] >= last, "Median/messages-not-in-order"); + last = val_[i]; + // Bloom filter for signer uniqueness + uint8 sl = uint8(uint256(uint160(signer)) >> 152); + require((bloom >> sl) % 2 == 0, "Median/oracle-already-signed"); + bloom += uint256(2) ** sl; + } + + val = uint128(val_[val_.length >> 1]); + age = uint32(block.timestamp); + + emit LogMedianPrice(val, age); + } + + function lift(address[] calldata a) external auth { + for (uint256 i = 0; i < a.length; i++) { + require(a[i] != address(0), "Median/no-oracle-0"); + uint8 s = uint8(uint256(uint160(a[i])) >> 152); + require(slot[s] == address(0), "Median/signer-already-exists"); + orcl[a[i]] = 1; + slot[s] = a[i]; + } + } + + function drop(address[] calldata a) external auth { + for (uint256 i = 0; i < a.length; i++) { + orcl[a[i]] = 0; + slot[uint8(uint256(uint160(a[i])) >> 152)] = address(0); + } + } + + function setBar(uint256 bar_) external auth { + require(bar_ > 0, "Median/quorum-is-zero"); + require(bar_ % 2 != 0, "Median/quorum-not-odd-number"); + bar = bar_; + } + + function kiss(address a) external auth { + require(a != address(0), "Median/no-contract-0"); + bud[a] = 1; + } + + function diss(address a) external auth { + bud[a] = 0; + } + + function kiss(address[] calldata a) external auth { + for (uint256 i = 0; i < a.length; i++) { + require(a[i] != address(0), "Median/no-contract-0"); + bud[a[i]] = 1; + } + } + + function diss(address[] calldata a) external auth { + for (uint256 i = 0; i < a.length; i++) { + bud[a[i]] = 0; + } + } +} diff --git a/src/mocks/MockOsm.sol b/src/mocks/MockOsm.sol new file mode 100644 index 0000000..f05e5ce --- /dev/null +++ b/src/mocks/MockOsm.sol @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// MockOsm.sol -- Mock OSM for testing +// +// Copyright (C) 2022-2025 Dai Foundation +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +pragma solidity ^0.8.16; + +import "dss-interfaces/Interfaces.sol"; + +contract MockOsm { + // --- Auth --- + mapping(address => uint256) public wards; + + function rely(address usr) external auth { + wards[usr] = 1; + } + + function deny(address usr) external auth { + wards[usr] = 0; + } + + modifier auth() { + require(wards[msg.sender] == 1, "OSM/not-authorized"); + _; + } + + // --- Stop --- + uint256 public stopped; + + modifier stoppable() { + require(stopped == 0, "OSM/is-stopped"); + _; + } + + address public src; + uint16 constant ONE_HOUR = uint16(3600); + uint16 public hop = ONE_HOUR; + uint64 public zzz; + + struct Feed { + uint128 val; + uint128 has; + } + + Feed cur; + Feed nxt; + + // Whitelisted contracts, set by an auth + mapping(address => uint256) public bud; + + modifier toll() { + require(bud[msg.sender] == 1, "OSM/contract-not-whitelisted"); + _; + } + + event LogValue(bytes32 val); + + constructor(address src_) { + wards[msg.sender] = 1; + src = src_; + } + + function stop() external auth { + stopped = 1; + } + + function start() external auth { + stopped = 0; + } + + function change(address src_) external auth { + src = src_; + } + + function era() internal view returns (uint256) { + return block.timestamp; + } + + function prev(uint256 ts) internal view returns (uint64) { + require(hop != 0, "OSM/hop-is-zero"); + return uint64(ts - (ts % hop)); + } + + function step(uint16 ts) external auth { + require(ts > 0, "OSM/ts-is-zero"); + hop = ts; + } + + function void() external auth { + cur = nxt = Feed(0, 0); + stopped = 1; + } + + function pass() public view returns (bool ok) { + return era() >= zzz + hop; + } + + function poke() external stoppable { + require(pass(), "OSM/not-passed"); + (bytes32 wut, bool ok) = DSValueAbstract(src).peek(); + if (ok) { + cur = nxt; + nxt = Feed(uint128(uint256(wut)), 1); + zzz = prev(era()); + emit LogValue(bytes32(uint256(cur.val))); + } + } + + function peek() external view toll returns (bytes32, bool) { + return (bytes32(uint256(cur.val)), cur.has == 1); + } + + function peep() external view toll returns (bytes32, bool) { + return (bytes32(uint256(nxt.val)), nxt.has == 1); + } + + function read() external view toll returns (bytes32) { + require(cur.has == 1, "OSM/no-current-value"); + return (bytes32(uint256(cur.val))); + } + + function kiss(address a) external auth { + require(a != address(0), "OSM/no-contract-0"); + bud[a] = 1; + } + + function diss(address a) external auth { + bud[a] = 0; + } + + function kiss(address[] calldata a) external auth { + for (uint256 i = 0; i < a.length; i++) { + require(a[i] != address(0), "OSM/no-contract-0"); + bud[a[i]] = 1; + } + } + + function diss(address[] calldata a) external auth { + for (uint256 i = 0; i < a.length; i++) { + bud[a[i]] = 0; + } + } +} diff --git a/src/test/rates.sol b/src/mocks/MockRates.sol similarity index 99% rename from src/test/rates.sol rename to src/mocks/MockRates.sol index 89d2228..4edaf68 100644 --- a/src/test/rates.sol +++ b/src/mocks/MockRates.sol @@ -19,7 +19,7 @@ pragma solidity ^0.8.16; -contract Rates { +contract MockRates { mapping(uint256 => uint256) public rates; constructor() { diff --git a/src/mocks/MockStarProxy.sol b/src/mocks/MockStarProxy.sol new file mode 100644 index 0000000..bc75569 --- /dev/null +++ b/src/mocks/MockStarProxy.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// MockStarProxy.sol -- Mock Star Proxy for testing +// +// Copyright (C) 2022-2025 Dai Foundation +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +pragma solidity ^0.8.16; + +contract MockStarProxy { + // Storage layout must match MockStarSpell for delegatecall to work properly + bool public executed; + bool public shouldFail; + + // Proxy-specific storage (must come after the shared storage) + address public lastTarget; + bytes public lastData; + + function setShouldFail(bool _shouldFail) external { + shouldFail = _shouldFail; + } + + function exec(address target, bytes calldata args) external returns (bytes memory out) { + lastTarget = target; + lastData = args; + + // Use delegatecall to execute the spell's function + bool ok; + (ok, out) = target.delegatecall(args); + require(ok, "MockStarProxy/delegatecall-error"); + } +} diff --git a/src/mocks/MockStarSpell.sol b/src/mocks/MockStarSpell.sol new file mode 100644 index 0000000..cd74481 --- /dev/null +++ b/src/mocks/MockStarSpell.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// MockStarSpell.sol -- Mock Star Spell for testing +// +// Copyright (C) 2022-2025 Dai Foundation +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +pragma solidity ^0.8.16; + +contract MockStarSpell { + bool public executed; + bool public shouldFail; + + function execute() external { + // Check if this spell should fail + require(!shouldFail, "MockStarSpell/execution-failed"); + + executed = true; + } +} diff --git a/src/mocks/MockToken.sol b/src/mocks/MockToken.sol new file mode 100644 index 0000000..e448a1c --- /dev/null +++ b/src/mocks/MockToken.sol @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// MockToken.sol -- Mock Token for testing +// +// Copyright (C) 2022-2025 Dai Foundation +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +pragma solidity ^0.8.16; + +contract MockToken { + uint256 public totalSupply; + mapping(address => uint256) public balanceOf; + mapping(address => mapping(address => uint256)) public allowance; + string public symbol; + uint8 public decimals = 18; // standard token precision. override to customize + string public name = ""; // Optional token name + + constructor(string memory symbol_) { + symbol = symbol_; + } + + function approve(address guy, uint256 wad) public returns (bool) { + allowance[msg.sender][guy] = wad; + return true; + } + + function transfer(address dst, uint256 wad) external returns (bool) { + return transferFrom(msg.sender, dst, wad); + } + + function transferFrom(address src, address dst, uint256 wad) public returns (bool) { + if (src != msg.sender && allowance[src][msg.sender] != type(uint256).max) { + require(allowance[src][msg.sender] >= wad, "ds-token-insufficient-approval"); + allowance[src][msg.sender] = allowance[src][msg.sender] - wad; + } + + require(balanceOf[src] >= wad, "ds-token-insufficient-balance"); + balanceOf[src] = balanceOf[src] - wad; + balanceOf[dst] = balanceOf[dst] + wad; + + return true; + } + + function mint(address guy, uint256 wad) public { + balanceOf[guy] = balanceOf[guy] + wad; + totalSupply = totalSupply + wad; + } + + function burn(address guy, uint256 wad) public { + if (guy != msg.sender && allowance[guy][msg.sender] != type(uint256).max) { + require(allowance[guy][msg.sender] >= wad, "ds-token-insufficient-approval"); + allowance[guy][msg.sender] = allowance[guy][msg.sender] - wad; + } + + require(balanceOf[guy] >= wad, "ds-token-insufficient-balance"); + balanceOf[guy] = balanceOf[guy] - wad; + totalSupply = totalSupply - wad; + } +} diff --git a/src/mocks/MockValue.sol b/src/mocks/MockValue.sol new file mode 100644 index 0000000..fca8ebc --- /dev/null +++ b/src/mocks/MockValue.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// MockValue.sol -- Mock Value for testing +// +// Copyright (C) 2022-2025 Dai Foundation +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +pragma solidity ^0.8.16; + +contract MockValue { + bool has; + bytes32 val; + + function peek() public view returns (bytes32, bool) { + return (val, has); + } + + function read() public view returns (bytes32) { + bytes32 wut; + bool haz; + (wut, haz) = peek(); + require(haz, "haz-not"); + return wut; + } + + function poke(bytes32 wut) public { + val = wut; + has = true; + } + + function void() public { + has = false; + } +} diff --git a/src/test/Mocks.sol b/src/test/Mocks.sol deleted file mode 100644 index bbb3bea..0000000 --- a/src/test/Mocks.sol +++ /dev/null @@ -1,388 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later -// -// Mocks.sol -- DSS Executive Spell Action Tests -// -// Copyright (C) 2022 Dai Foundation -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -pragma solidity ^0.8.16; - -import "dss-interfaces/Interfaces.sol"; - -contract MockToken { - uint256 public totalSupply; - mapping(address => uint256) public balanceOf; - mapping(address => mapping(address => uint256)) public allowance; - string public symbol; - uint8 public decimals = 18; // standard token precision. override to customize - string public name = ""; // Optional token name - - constructor(string memory symbol_) { - symbol = symbol_; - } - - function approve(address guy, uint256 wad) public returns (bool) { - allowance[msg.sender][guy] = wad; - return true; - } - - function transfer(address dst, uint256 wad) external returns (bool) { - return transferFrom(msg.sender, dst, wad); - } - - function transferFrom(address src, address dst, uint256 wad) public returns (bool) { - if (src != msg.sender && allowance[src][msg.sender] != type(uint256).max) { - require(allowance[src][msg.sender] >= wad, "ds-token-insufficient-approval"); - allowance[src][msg.sender] = allowance[src][msg.sender] - wad; - } - - require(balanceOf[src] >= wad, "ds-token-insufficient-balance"); - balanceOf[src] = balanceOf[src] - wad; - balanceOf[dst] = balanceOf[dst] + wad; - - return true; - } - - function mint(address guy, uint256 wad) public { - balanceOf[guy] = balanceOf[guy] + wad; - totalSupply = totalSupply + wad; - } - - function burn(address guy, uint256 wad) public { - if (guy != msg.sender && allowance[guy][msg.sender] != type(uint256).max) { - require(allowance[guy][msg.sender] >= wad, "ds-token-insufficient-approval"); - allowance[guy][msg.sender] = allowance[guy][msg.sender] - wad; - } - - require(balanceOf[guy] >= wad, "ds-token-insufficient-balance"); - balanceOf[guy] = balanceOf[guy] - wad; - totalSupply = totalSupply - wad; - } -} - -contract MockValue { - bool has; - bytes32 val; - - function peek() public view returns (bytes32, bool) { - return (val, has); - } - - function read() public view returns (bytes32) { - bytes32 wut; - bool haz; - (wut, haz) = peek(); - require(haz, "haz-not"); - return wut; - } - - function poke(bytes32 wut) public { - val = wut; - has = true; - } - - function void() public { - has = false; - } -} - -contract MockOracle { - // --- Auth --- - mapping(address => uint256) public wards; - - function rely(address usr) external auth { - wards[usr] = 1; - } - - function deny(address usr) external auth { - wards[usr] = 0; - } - - modifier auth() { - require(wards[msg.sender] == 1, "Median/not-authorized"); - _; - } - - uint128 val; - uint32 public age; - bytes32 public constant wat = "ethusd"; // You want to change this every deploy - uint256 public bar = 1; - - // Authorized oracles, set by an auth - mapping(address => uint256) public orcl; - - // Whitelisted contracts, set by an auth - mapping(address => uint256) public bud; - - // Mapping for at most 256 oracles - mapping(uint8 => address) public slot; - - modifier toll() { - require(bud[msg.sender] == 1, "Median/contract-not-whitelisted"); - _; - } - - event LogMedianPrice(uint256 val, uint256 age); - - //Set type of Oracle - constructor() { - wards[msg.sender] = 1; - } - - function read() external view toll returns (uint256) { - require(val > 0, "Median/invalid-price-feed"); - return val; - } - - function peek() external view toll returns (uint256, bool) { - return (val, val > 0); - } - - function recover(uint256 val_, uint256 age_, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { - return ecrecover( - keccak256( - abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256(abi.encodePacked(val_, age_, wat))) - ), - v, - r, - s - ); - } - - function poke( - uint256[] calldata val_, - uint256[] calldata age_, - uint8[] calldata v, - bytes32[] calldata r, - bytes32[] calldata s - ) external { - require(val_.length == bar, "Median/bar-too-low"); - - uint256 bloom = 0; - uint256 last = 0; - uint256 zzz = age; - - for (uint256 i = 0; i < val_.length; i++) { - // Validate the values were signed by an authorized oracle - address signer = recover(val_[i], age_[i], v[i], r[i], s[i]); - // Check that signer is an oracle - require(orcl[signer] == 1, "Median/invalid-oracle"); - // Price feed age greater than last medianizer age - require(age_[i] > zzz, "Median/stale-message"); - // Check for ordered values - require(val_[i] >= last, "Median/messages-not-in-order"); - last = val_[i]; - // Bloom filter for signer uniqueness - uint8 sl = uint8(uint256(uint160(signer)) >> 152); - require((bloom >> sl) % 2 == 0, "Median/oracle-already-signed"); - bloom += uint256(2) ** sl; - } - - val = uint128(val_[val_.length >> 1]); - age = uint32(block.timestamp); - - emit LogMedianPrice(val, age); - } - - function lift(address[] calldata a) external auth { - for (uint256 i = 0; i < a.length; i++) { - require(a[i] != address(0), "Median/no-oracle-0"); - uint8 s = uint8(uint256(uint160(a[i])) >> 152); - require(slot[s] == address(0), "Median/signer-already-exists"); - orcl[a[i]] = 1; - slot[s] = a[i]; - } - } - - function drop(address[] calldata a) external auth { - for (uint256 i = 0; i < a.length; i++) { - orcl[a[i]] = 0; - slot[uint8(uint256(uint160(a[i])) >> 152)] = address(0); - } - } - - function setBar(uint256 bar_) external auth { - require(bar_ > 0, "Median/quorum-is-zero"); - require(bar_ % 2 != 0, "Median/quorum-not-odd-number"); - bar = bar_; - } - - function kiss(address a) external auth { - require(a != address(0), "Median/no-contract-0"); - bud[a] = 1; - } - - function diss(address a) external auth { - bud[a] = 0; - } - - function kiss(address[] calldata a) external auth { - for (uint256 i = 0; i < a.length; i++) { - require(a[i] != address(0), "Median/no-contract-0"); - bud[a[i]] = 1; - } - } - - function diss(address[] calldata a) external auth { - for (uint256 i = 0; i < a.length; i++) { - bud[a[i]] = 0; - } - } -} - -contract MockOsm { - // --- Auth --- - mapping(address => uint256) public wards; - - function rely(address usr) external auth { - wards[usr] = 1; - } - - function deny(address usr) external auth { - wards[usr] = 0; - } - - modifier auth() { - require(wards[msg.sender] == 1, "OSM/not-authorized"); - _; - } - - // --- Stop --- - uint256 public stopped; - - modifier stoppable() { - require(stopped == 0, "OSM/is-stopped"); - _; - } - - address public src; - uint16 constant ONE_HOUR = uint16(3600); - uint16 public hop = ONE_HOUR; - uint64 public zzz; - - struct Feed { - uint128 val; - uint128 has; - } - - Feed cur; - Feed nxt; - - // Whitelisted contracts, set by an auth - mapping(address => uint256) public bud; - - modifier toll() { - require(bud[msg.sender] == 1, "OSM/contract-not-whitelisted"); - _; - } - - event LogValue(bytes32 val); - - constructor(address src_) { - wards[msg.sender] = 1; - src = src_; - } - - function stop() external auth { - stopped = 1; - } - - function start() external auth { - stopped = 0; - } - - function change(address src_) external auth { - src = src_; - } - - function era() internal view returns (uint256) { - return block.timestamp; - } - - function prev(uint256 ts) internal view returns (uint64) { - require(hop != 0, "OSM/hop-is-zero"); - return uint64(ts - (ts % hop)); - } - - function step(uint16 ts) external auth { - require(ts > 0, "OSM/ts-is-zero"); - hop = ts; - } - - function void() external auth { - cur = nxt = Feed(0, 0); - stopped = 1; - } - - function pass() public view returns (bool ok) { - return era() >= zzz + hop; - } - - function poke() external stoppable { - require(pass(), "OSM/not-passed"); - (bytes32 wut, bool ok) = DSValueAbstract(src).peek(); - if (ok) { - cur = nxt; - nxt = Feed(uint128(uint256(wut)), 1); - zzz = prev(era()); - emit LogValue(bytes32(uint256(cur.val))); - } - } - - function peek() external view toll returns (bytes32, bool) { - return (bytes32(uint256(cur.val)), cur.has == 1); - } - - function peep() external view toll returns (bytes32, bool) { - return (bytes32(uint256(nxt.val)), nxt.has == 1); - } - - function read() external view toll returns (bytes32) { - require(cur.has == 1, "OSM/no-current-value"); - return (bytes32(uint256(cur.val))); - } - - function kiss(address a) external auth { - require(a != address(0), "OSM/no-contract-0"); - bud[a] = 1; - } - - function diss(address a) external auth { - bud[a] = 0; - } - - function kiss(address[] calldata a) external auth { - for (uint256 i = 0; i < a.length; i++) { - require(a[i] != address(0), "OSM/no-contract-0"); - bud[a[i]] = 1; - } - } - - function diss(address[] calldata a) external auth { - for (uint256 i = 0; i < a.length; i++) { - bud[a[i]] = 0; - } - } -} - -contract MockUniPair { - address public token0; - address public token1; - - constructor(address _token0, address _token1) { - token0 = _token0; - token1 = _token1; - } -} From 30404c33f13232c99e95abb160ecf894988e59a5 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 10:17:05 -0300 Subject: [PATCH 29/61] docs: update documntation about `checkWhitelistedOSM` --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 8985f6a..2c1ee11 100644 --- a/README.md +++ b/README.md @@ -213,7 +213,7 @@ CollateralOpts memory XMPL_A = CollateralOpts({ calc: xmpl_calc, pip: 0x9eb923339c24c40Bef2f4AF4961742AA7C23EF3a, isLiquidatable: true, - isOSM: true, + checkWhitelistedOSM: true, whitelistOSM: true, ilkDebtCeiling: 3 * MILLION, minVaultAmount: 100, // 100 Dust @@ -235,17 +235,17 @@ DssExecLib.setChangelogAddress("MCD_CLIP_XMPL-A", 0x9daCc11dcD0aa13386D295eAeeBB DssExecLib.setChangelogAddress("MCD_CLIP_CALC_XMPL-A", xmpl_calc); ``` -- `ilk`: Collateral type -- `gem`: Address of collateral token -- `join`: Address of GemJoin contract -- `clip`: Address of Clip contract -- `calc`: Address of Abacus pricing contract -- `pip`: Address of Pip contract -- `isLiquidatable`: Boolean indicating whether liquidations are enabled for collateral -- `isOsm`: Boolean indicating whether pip address used is an OSM contract -- `whitelistOsm`: Boolean indicating whether median is src in OSM. -- `ilkDebtCeiling`: Debt ceiling for new collateral -- `minVaultAmount`: Minimum DAI vault amount required for new collateral +- `ilk`: Collateral type +- `gem`: Address of collateral token +- `join`: Address of GemJoin contract +- `clip`: Address of Clip contract +- `calc`: Address of Abacus pricing contract +- `pip`: Address of Pip contract +- `isLiquidatable`: Boolean indicating whether liquidations are enabled for collateral +- `isOsm`: Boolean indicating whether pip address used is an OSM contract +- `checkWhitelistedOSM`: Boolean indicating whether to check if OSM is whitelisted by the underlying oracle +- `ilkDebtCeiling`: Debt ceiling for new collateral +- `minVaultAmount`: Minimum DAI vault amount required for new collateral - `maxLiquidationAmount`: Max DAI amount per vault for liquidation for new collateral - `liquidationPenalty`: Percent liquidation penalty for new collateral [ex. 13.5% == 1350] - `ilkStabilityFee`: Percent stability fee for new collateral [ex. 4% == 1000000001243680656318820312] From d7fdb6bfbfc5b112dad366a56559fb9ecfc31611 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 10:17:28 -0300 Subject: [PATCH 30/61] chore: format README --- README.md | 59 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 2c1ee11..47b170f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A library for crafting spells in Sky Protocol (formerly MakerDAO) more efficient ## Requirements -* [Foundry](https://getfoundry.sh/) +- [Foundry](https://getfoundry.sh/) ## About @@ -38,7 +38,7 @@ The `SpellAction.sol` file must always inherit `DssAction` from `lib/dss-exec-li The developer must override the `actions()` function and place all spell actions within. This is called by the `execute()` function in the pause, which is subject to an optional limiter for office hours. -*Note:* All variables within the SpellAction MUST be defined as constants, or assigned at runtime inside of the `actions()` function. Variable memory storage is not available within a Spell Action due to the underlying delegatecall mechanisms. +_Note:_ All variables within the SpellAction MUST be defined as constants, or assigned at runtime inside of the `actions()` function. Variable memory storage is not available within a Spell Action due to the underlying delegatecall mechanisms. The spell itself is deployed as follows: @@ -59,7 +59,7 @@ Below is an outline of how all variables are accounted for for precision based o - `amount`: Integer amount, (e.g., 10m DAI amount == 10000000) - `rate`: Rate value expressed as value corresponding to percent from this [list](https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW) (e.g., 4% => 1000000001243680656318820312) - `duration`: Time, in seconds. -- `pct_bps`: Percentage, in basis points (e.g., 5% = 5 * 100 = 500). +- `pct_bps`: Percentage, in basis points (e.g., 5% = 5 \* 100 = 500). - `value`: Decimal value, expressed as 1000x (e.g., $1.025 == 1025) ## Actions @@ -67,6 +67,7 @@ Below is an outline of how all variables are accounted for for precision based o Below is an outline of all functions used in the library. ### Core Address Helpers + - `dai()`: Dai ERC20 Contract - `mkr()`: MKR ERC20 Contract - `vat()`: MCD Core Accounting @@ -91,6 +92,7 @@ Below is an outline of all functions used in the library. - `clip(bytes32 _ilk)`: Collateral Auction Module (per ilk) ### Changelog Management + - `getChangelogAddress(bytes32 _key)`: Get MCD address from key from MCD on-chain changelog. - `setChangelogAddress(bytes32 _key, address _val)`: Set an address in the MCD on-chain changelog. - `setChangelogVersion(string memory _version)`: Set version in the MCD on-chain changelog. @@ -98,29 +100,37 @@ Below is an outline of all functions used in the library. - `setChangelogSHA256(string memory _SHA256Sum)`: Set SHA256 hash in MCD on-chain changelog. ### Authorizations + - `authorize(address _base, address _ward)`: Give an address authorization to perform auth actions on the contract. - `deauthorize(address _base, address _ward)`: Revoke contract authorization from an address. - `setAuthority(address _base, address _authority)`: Give an address authority to a base contract using authority pattern. - `delegateVat(address _usr)`: Delegate vat authority to the specified address. - `undelegateVat(address _usr)`: Revoke vat authority to the specified address. +- `addToWhitelist(address _base, address _bud)`: Adds an address to a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. +- `removeFromWhitelist(address _base, address _bud)`: Removes an address from a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. ### Time Management + - `canCast(uint40 _ts, bool _officeHours) returns (bool)`: Use to determine whether a timestamp is within the office hours window. - `nextCastTime(uint40 _eta, uint40 _ts, bool _officeHours) returns (uint256)`: Use to return the timestamp of the first available time after eta that a spell can be cast. ### Accumulating Rates + - `accumulateDSR()`: Update rate accumulation for the Dai Savings Rate (DSR). - `accumulateSSR()`: Update rate accumulation for the Sky Savings Rate (SSR). - `accumulateCollateralStabilityFees(bytes32 _ilk)`: Update rate accumulation for the stability fees of a given collateral type. ### Price Updates + - `updateCollateralPrice(bytes32 _ilk)`: Update price of a given collateral type. ### System Configuration + - `setContract(address _base, bytes32 _what, address _addr)`: Set a contract in another contract, defining the relationship (ex. set a new Vow contract in the Dog) - `setContract(address _base, bytes32 _ilk, bytes32 _what, address _addr)`: Set a contract in another contract, defining the relationship for a given ilk. ### System Risk Parameters + - `setGlobalDebtCeiling(uint256 _amount)`: Set the global debt ceiling. - `increaseGlobalDebtCeiling(uint256 _amount)`: Increase the global debt ceiling. - `decreaseGlobalDebtCeiling(uint256 _amount)`: Decrease the global debt ceiling. @@ -133,13 +143,14 @@ Below is an outline of all functions used in the library. - `setMinDebtAuctionBidIncrease(uint256 _pct_bps)`: Set minimum bid increase for debt auctions. - `setDebtAuctionBidDuration(uint256 _length)`: Set bid duration for debt auctions. - `setDebtAuctionDuration(uint256 _length)`: Set total auction duration for debt auctions. -- `setDebtAuctionMKRIncreaseRate(uint256 _pct_bps)`: Set the rate of increasing amount of MKR out for auction during debt auctions. MKR amount is increased by this rate every "tick" (if auction duration has passed and no one has bid on the MKR). +- `setDebtAuctionMKRIncreaseRate(uint256 _pct_bps)`: Set the rate of increasing amount of MKR out for auction during debt auctions. MKR amount is increased by this rate every "tick" (if auction duration has passed and no one has bid on the MKR). - `setMaxTotalDAILiquidationAmount(uint256 _amount)`: Set the maximum total DAI amount that can be out for liquidation in the system at any point. - `setEmergencyShutdownProcessingTime(uint256 _length)`: Set the length of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. - `setGlobalStabilityFee(uint256 _rate)`: Set the global stability fee (not typically used, currently is 0). - `setDAIReferenceValue(uint256 _amount) `: Set the value of DAI in the reference asset (e.g. $1 per DAI). ### Collateral Management + - `setIlkDebtCeiling(bytes32 _ilk, uint256 _amount)`: Set a collateral debt ceiling. - `increaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global)`: Raise the debt ceiling of a particular ilk. - `decreaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global)`: Lower the debt ceiling of a particular ilk. @@ -160,38 +171,43 @@ Below is an outline of all functions used in the library. - `setIlkStabilityFee(bytes32 _ilk, uint256 _rate)`: Set the stability fee for a given ilk. ### Abacus Management + - `initLinearDecrease(address _calc, uint256 _duration)`: Initialize the variables in a LinearDecrease calculator. - `initStairstepExponentialDecrease(address _calc, uint256 _duration, uint256 _pct_bps)`: Initialize the variables in a StairstepExponentialDecrease calculator. - `initExponentialDecrease(address _calc, uint256 _pct_bps)`: Initialize the variables in an ExponentialDecrease calculator. ### Oracle Management -- `addToWhitelist(address _oracle, address _reader)`: Adds an address to a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. -- `removeFromWhitelist(address _oracle, address _reader)`: Removes an address from a whitelist, for contracts which implement the `kiss`/`diss` pattern for 2nd level permissions. + - `allowOSMFreeze(address _osm, bytes32 _ilk)`: Add OSM address to OSM mom, allowing it to be frozen by governance. ### Governance Security Module + - `setGSMDelay`: Sets the GSM delay for governance actions. ### Direct Deposit Module + - `setDDMTargetInterestRate(address _ddm, uint256 _pct_bps)`: Set the target rate (`bar`) for a DDM module. ### Collateral Onboarding + In order to onboard new collateral to the Maker protocol, the following must be done before the spell is prepared: + - Deploy a GemJoin contract - - Rely the `MCD_PAUSE_PROXY` address - - Deny the deployer address + - Rely the `MCD_PAUSE_PROXY` address + - Deny the deployer address - Deploy a Clip contract - - Rely the `MCD_PAUSE_PROXY` address - - Deny the deployer address + - Rely the `MCD_PAUSE_PROXY` address + - Deny the deployer address - Deploy an Abacus pricing contract - - Initialize values (or use initialization function in DssExecLib) - - Rely the `MCD_PAUSE_PROXY` address - - Deny the deployer address + - Initialize values (or use initialization function in DssExecLib) + - Rely the `MCD_PAUSE_PROXY` address + - Deny the deployer address - Deploy a Pip contract (oracles team-managed) - - Rely the `MCD_PAUSE_PROXY` address - - Deny the deployer address + - Rely the `MCD_PAUSE_PROXY` address + - Deny the deployer address Once these actions are done, add the following code (below is an example) to the `execute()` function in the spell. The `setChangelogAddress` function calls are required to add the collateral to the on-chain changelog. They must follow the following convention: + - GEM: `TOKEN` - JOIN: `MCD_JOIN_TOKEN` - CLIP: `MCD_CLIP_TOKEN` @@ -247,14 +263,15 @@ DssExecLib.setChangelogAddress("MCD_CLIP_CALC_XMPL-A", xmpl_calc); - `ilkDebtCeiling`: Debt ceiling for new collateral - `minVaultAmount`: Minimum DAI vault amount required for new collateral - `maxLiquidationAmount`: Max DAI amount per vault for liquidation for new collateral -- `liquidationPenalty`: Percent liquidation penalty for new collateral [ex. 13.5% == 1350] -- `ilkStabilityFee`: Percent stability fee for new collateral [ex. 4% == 1000000001243680656318820312] -- `startingPriceFactor`: Percentage to multiply for initial auction price. [ex. 1.3x == 130% == 13000 bps] -- `auctionDuration`: Total auction duration before reset for new collateral -- `permittedDrop`: Percent an auction can drop before it can be reset. -- `liquidationRatio`: Percent liquidation ratio for new collateral [ex. 150% == 15000] +- `liquidationPenalty`: Percent liquidation penalty for new collateral [ex. 13.5% == 1350] +- `ilkStabilityFee`: Percent stability fee for new collateral [ex. 4% == 1000000001243680656318820312] +- `startingPriceFactor`: Percentage to multiply for initial auction price. [ex. 1.3x == 130% == 13000 bps] +- `auctionDuration`: Total auction duration before reset for new collateral +- `permittedDrop`: Percent an auction can drop before it can be reset. +- `liquidationRatio`: Percent liquidation ratio for new collateral [ex. 150% == 15000] ### Payments + - `sendPaymentFromSurplusBuffer(address _join, address _target, uint256 _amount)`: Send a payment in either ERC20 USDS or DAI from the surplus buffer. ### Misc From 391e29f0df579ce764dd9b275c3edf145996d85c Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 10:43:46 -0300 Subject: [PATCH 31/61] docs: update README with TODO for the new release --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 47b170f..a375eb6 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,7 @@ A library for crafting spells in Sky Protocol (formerly MakerDAO) more efficient ## Public Library Addresses -- (v0.0.9) Mainnet: [0x8de6ddbcd5053d32292aaa0d2105a32d108484a6](https://etherscan.io/address/0x8de6ddbcd5053d32292aaa0d2105a32d108484a6#code) -- (v0.0.9) Goerli: [0x122f6c0dcd898b4a07310e92c3eae5d7ce0c8bb6](https://goerli.etherscan.io/address/0x122f6c0dcd898b4a07310e92c3eae5d7ce0c8bb6#code) -- (v0.0.9) Kovan: [0xb1d60194ec975bc83f0300b7669a0803b6dd2955](https://kovan.etherscan.io/address/0xb1d60194ec975bc83f0300b7669a0803b6dd2955#code) +- (v0.1.0) Mainnet: [TODO](https://etherscan.io/address/TODO#code) ## Requirements @@ -38,7 +36,9 @@ The `SpellAction.sol` file must always inherit `DssAction` from `lib/dss-exec-li The developer must override the `actions()` function and place all spell actions within. This is called by the `execute()` function in the pause, which is subject to an optional limiter for office hours. -_Note:_ All variables within the SpellAction MUST be defined as constants, or assigned at runtime inside of the `actions()` function. Variable memory storage is not available within a Spell Action due to the underlying delegatecall mechanisms. +> [!NOTE] +> All variables within the SpellAction MUST be defined as constants, or assigned at runtime inside of the `actions()` function. +> Variable memory storage is not available within a Spell Action due to the underlying delegatecall mechanisms. The spell itself is deployed as follows: @@ -54,7 +54,7 @@ new DssExec( Below is an outline of how all variables are accounted for for precision based on name. -**NOTE: `DSSExecLib.sol` has NatSpec comments above every function definition that provides a comprehensive definition of the function, its parameters, and any precision calculations that are made.** +> [!NOTE] > `DSSExecLib.sol` has NatSpec comments above every function definition that provides a comprehensive definition of the function, its parameters, and any precision calculations that are made. - `amount`: Integer amount, (e.g., 10m DAI amount == 10000000) - `rate`: Rate value expressed as value corresponding to percent from this [list](https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW) (e.g., 4% => 1000000001243680656318820312) From f8e045ade534a844e94505a0f84676c2512db268 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 10:44:55 -0300 Subject: [PATCH 32/61] fix: typo in READMEw --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a375eb6..3b8eebc 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,8 @@ new DssExec( Below is an outline of how all variables are accounted for for precision based on name. -> [!NOTE] > `DSSExecLib.sol` has NatSpec comments above every function definition that provides a comprehensive definition of the function, its parameters, and any precision calculations that are made. +> [!NOTE] +> `DSSExecLib.sol` has NatSpec comments above every function definition that provides a comprehensive definition of the function, its parameters, and any precision calculations that are made. - `amount`: Integer amount, (e.g., 10m DAI amount == 10000000) - `rate`: Rate value expressed as value corresponding to percent from this [list](https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW) (e.g., 4% => 1000000001243680656318820312) From 925f6e65dc04d0af3b5f7536304b97d63b7a983d Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 10:51:16 -0300 Subject: [PATCH 33/61] docs: add missing documentation to README --- README.md | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 3b8eebc..0e5ff22 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,7 @@ The `SpellAction.sol` file must always inherit `DssAction` from `lib/dss-exec-li The developer must override the `actions()` function and place all spell actions within. This is called by the `execute()` function in the pause, which is subject to an optional limiter for office hours. > [!NOTE] -> All variables within the SpellAction MUST be defined as constants, or assigned at runtime inside of the `actions()` function. -> Variable memory storage is not available within a Spell Action due to the underlying delegatecall mechanisms. +> All variables within spell action MUST be defined as constants, or assigned at runtime inside of the `actions()` function. Variable memory storage is not available within a spell action due to the underlying `delegatcall` mechanisms. The spell itself is deployed as follows: @@ -70,35 +69,39 @@ Below is an outline of all functions used in the library. ### Core Address Helpers - `dai()`: Dai ERC20 Contract +- `usds()`: USDS ERC20 Contract +- `susds()`: sUSDS ERC4626 Contract - `mkr()`: MKR ERC20 Contract -- `vat()`: MCD Core Accounting -- `cat()`: MCD Liquidation Agent -- `dog()`: MCD Liquidation 2.0 Agent -- `jug()`: MCD Rates Module -- `pot()`: MCD Savings Rates Module -- `vow()`: MCD System Stabilizer Module -- `end()`: MCD Shutdown Coordinator +- `vat()`: Core Accounting +- `cat()`: Liquidation Agent +- `dog()`: Liquidation 2.0 Agent +- `jug()`: Rates Module +- `pot()`: Savings Rates Module +- `vow()`: System Stabilizer Module +- `end()`: Shutdown Coordinator - `reg()`: Ilk Registry -- `spotter()`: MCD Oracle Liason -- `flap()`: MCD Surplus Auction Module -- `flop()`: MCD Debt Auction Module +- `spotter()`: Oracle Liason +- `flap()`: Surplus Auction Module +- `flop()`: Debt Auction Module - `osmMom()`: OSM Circuit Breaker - `govGuard()`: MKR Authority - `flipperMom()`: Flipper Governance Interface - `clipperMom()`: Clipper Governance Interface (Liquidations 2.0) - `pauseProxy()`: Governance Authority - `autoLine()`: Debt Ceiling Auto Adjustment -- `daiJoin()`: MCD Join adapter for Dai +- `daiJoin()`: Join adapter for Dai +- `usdsJoin()`: Join adapter for USDS - `flip(bytes32 _ilk)`: Collateral Auction Module (per ilk) - `clip(bytes32 _ilk)`: Collateral Auction Module (per ilk) ### Changelog Management -- `getChangelogAddress(bytes32 _key)`: Get MCD address from key from MCD on-chain changelog. -- `setChangelogAddress(bytes32 _key, address _val)`: Set an address in the MCD on-chain changelog. -- `setChangelogVersion(string memory _version)`: Set version in the MCD on-chain changelog. -- `setChangelogIPFS(string memory _ipfsHash)`: Set IPFS hash of IPFS changelog in MCD on-chain changelog. -- `setChangelogSHA256(string memory _SHA256Sum)`: Set SHA256 hash in MCD on-chain changelog. +- `getChangelogAddress(bytes32 _key)`: Get address from key from on-chain changelog. +- `removeChangelogAddress(bytes32 _key)`: Remove key from on-chain changelog. +- `setChangelogAddress(bytes32 _key, address _val)`: Set an address in the on-chain changelog. +- `setChangelogVersion(string memory _version)`: Set version in the on-chain changelog. +- `setChangelogIPFS(string memory _ipfsHash)`: Set IPFS hash of IPFS changelog in on-chain changelog. +- `setChangelogSHA256(string memory _SHA256Sum)`: Set SHA256 hash in on-chain changelog. ### Authorizations From 62fe567670650926d82aee4ffeca1e65145e95f7 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 14:51:12 -0300 Subject: [PATCH 34/61] refactor: rename auction debt related functions --- README.md | 50 +++++++++++++++++--------------- src/DssAction.t.sol | 8 ++--- src/DssExecLib.sol | 12 ++++---- src/mocks/MockDssSpellAction.sol | 8 ++--- 4 files changed, 41 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 0e5ff22..cba0422 100644 --- a/README.md +++ b/README.md @@ -91,8 +91,11 @@ Below is an outline of all functions used in the library. - `autoLine()`: Debt Ceiling Auto Adjustment - `daiJoin()`: Join adapter for Dai - `usdsJoin()`: Join adapter for USDS +- `lerpFab()`: Lerp Factory Contract +- `pause()`: Pause Contract - `flip(bytes32 _ilk)`: Collateral Auction Module (per ilk) - `clip(bytes32 _ilk)`: Collateral Auction Module (per ilk) +- `calc(bytes32 _ilk)`: Pricing Function for Liquidation (per ilk) ### Changelog Management @@ -139,11 +142,13 @@ Below is an outline of all functions used in the library. - `increaseGlobalDebtCeiling(uint256 _amount)`: Increase the global debt ceiling. - `decreaseGlobalDebtCeiling(uint256 _amount)`: Decrease the global debt ceiling. - `setDSR(uint256 _rate, bool _doDrip)`: Set the Dai Savings Rate. +- `setSSR(uint256 _rate, bool _doDrip)`: Set the Sky Savings Rate. +- `setSurplusAuctionAmount(uint256 _amount)`: Set the amount for system surplus auctions. - `setSurplusAuctionMinPriceThreshold(uint256 _pct_bps)`: Set the relative multiplier of the reference price to insist in the swap. For example, `9_80` bps allows a 2% drop in the reference price. -- `setSurplusBuffer(uint256 _amount)`: Set the DAI amount for system surplus buffer, must be exceeded before surplus auctions start. +- `setSurplusBuffer(uint256 _amount)`: Set the amount for system surplus buffer, must be exceeded before surplus auctions start. - `setDebtAuctionDelay(uint256 _length)`: Set the number of seconds that pass before system debt is auctioned for MKR tokens. -- `setDebtAuctionDAIAmount(uint256 _amount)`: Set the DAI amount for system debt to be covered by each debt auction. -- `setDebtAuctionMKRAmount(uint256 _amount)`: Set the starting MKR amount to be auctioned off to cover system debt in debt auctions. +- `setDebtAuctionDebtAmount(uint256 _amount)`: Set the debt amount for system debt to be covered by each debt auction. +- `setDebtAuctionGovAmount(uint256 _amount)`: Set the starting governance token amount to be auctioned off to cover system debt in debt auctions. - `setMinDebtAuctionBidIncrease(uint256 _pct_bps)`: Set minimum bid increase for debt auctions. - `setDebtAuctionBidDuration(uint256 _length)`: Set bid duration for debt auctions. - `setDebtAuctionDuration(uint256 _length)`: Set total auction duration for debt auctions. @@ -218,7 +223,7 @@ Once these actions are done, add the following code (below is an example) to the - CALC: `MCD_CLIP_CALC_TOKEN` - PIP: `PIP_TOKEN` -```js +```solidity import "src/CollateralOpts.sol"; // Initialize the pricing function with the appropriate initializer @@ -226,24 +231,23 @@ address xmpl_calc = 0x1f206d7916Fd3B1b5B0Ce53d5Cab11FCebc124DA; DssExecLib.initStairstepExponentialDecrease(xmpl_calc, 60, 9900); CollateralOpts memory XMPL_A = CollateralOpts({ - ilk: "XMPL-A", - gem: 0xCE4F3774620764Ea881a8F8840Cbe0F701372283, - join: 0xa30925910067a2d9eB2a7358c017E6075F660842, - clip: 0x9daCc11dcD0aa13386D295eAeeBBd38130897E6f, - calc: xmpl_calc, - pip: 0x9eb923339c24c40Bef2f4AF4961742AA7C23EF3a, - isLiquidatable: true, - checkWhitelistedOSM: true, - whitelistOSM: true, - ilkDebtCeiling: 3 * MILLION, - minVaultAmount: 100, // 100 Dust - maxLiquidationAmount: 50000, // 50,000 Dai - liquidationPenalty: 1300, // 13% penalty - ilkStabilityFee: 1000000000705562181084137268, - startingPriceFactor: 13000, // 1.3x multiplier - auctionDuration: 6 hours, - permittedDrop: 4000, // 40% drop before reset - liquidationRatio: 15000 // 150% collateralization ratio + ilk: "XMPL-A", + gem: 0xCE4F3774620764Ea881a8F8840Cbe0F701372283, + join: 0xa30925910067a2d9eB2a7358c017E6075F660842, + clip: 0x9daCc11dcD0aa13386D295eAeeBBd38130897E6f, + calc: xmpl_calc, + pip: 0x9eb923339c24c40Bef2f4AF4961742AA7C23EF3a, + isLiquidatable: true, + checkWhitelistedOSM: true, + ilkDebtCeiling: 3 * MILLION, + minVaultAmount: 100, // 100 Dust + maxLiquidationAmount: 50000, // 50,000 Dai + liquidationPenalty: 1300, // 13% penalty + ilkStabilityFee: 1000000000705562181084137268, + startingPriceFactor: 13000, // 1.3x multiplier + auctionDuration: 6 hours, + permittedDrop: 4000, // 40% drop before reset + liquidationRatio: 15000 // 150% collateralization ratio }); DssExecLib.addNewCollateral(XMPL_A); @@ -262,7 +266,7 @@ DssExecLib.setChangelogAddress("MCD_CLIP_CALC_XMPL-A", xmpl_calc); - `calc`: Address of Abacus pricing contract - `pip`: Address of Pip contract - `isLiquidatable`: Boolean indicating whether liquidations are enabled for collateral -- `isOsm`: Boolean indicating whether pip address used is an OSM contract +- `isOSM`: Boolean indicating whether pip address used is an OSM contract - `checkWhitelistedOSM`: Boolean indicating whether to check if OSM is whitelisted by the underlying oracle - `ilkDebtCeiling`: Debt ceiling for new collateral - `minVaultAmount`: Minimum DAI vault amount required for new collateral diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index a6f4c6e..261051a 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -668,13 +668,13 @@ contract ActionTest is Test { assertEq(vow.wait(), 12 hours); } - function test_setDebtAuctionDAIAmount() public { - action.setDebtAuctionDAIAmount_test(100 * THOUSAND); + function test_setDebtAuctionDebtAmount() public { + action.setDebtAuctionDebtAmount_test(100 * THOUSAND); assertEq(vow.sump(), 100 * THOUSAND * RAD); } - function test_setDebtAuctionMKRAmount() public { - action.setDebtAuctionMKRAmount_test(100); + function test_setDebtAuctionGovAmount() public { + action.setDebtAuctionGovAmount_test(100); assertEq(vow.dump(), 100 * WAD); } diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index a4a10f0..8bdb7bd 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -579,16 +579,16 @@ library DssExecLib { setValue(vow(), "wait", _duration); } - /// @dev Set the DAI amount for system debt to be covered by each debt auction. Amount will be converted to the correct internal precision. - /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) - function setDebtAuctionDAIAmount(uint256 _amount) public { + /// @dev Set the debt amount for system debt to be covered by each debt auction. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set (ex. 10m debt amount == 10000000) + function setDebtAuctionDebtAmount(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-vow-sump-precision" setValue(vow(), "sump", _amount * RAD); } - /// @dev Set the starting MKR amount to be auctioned off to cover system debt in debt auctions. Amount will be converted to the correct internal precision. - /// @param _amount The amount to set in MKR (ex. 250 MKR amount == 250) - function setDebtAuctionMKRAmount(uint256 _amount) public { + /// @dev Set the starting governance token amount to be auctioned off to cover system debt in debt auctions. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set in governance tokens (ex. 250 governance token amount == 250) + function setDebtAuctionGovAmount(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-vow-dump-precision" setValue(vow(), "dump", _amount * WAD); } diff --git a/src/mocks/MockDssSpellAction.sol b/src/mocks/MockDssSpellAction.sol index 0eac2a3..649e4f5 100644 --- a/src/mocks/MockDssSpellAction.sol +++ b/src/mocks/MockDssSpellAction.sol @@ -152,12 +152,12 @@ contract MockDssSpellAction is DssAction { DssExecLib.setDebtAuctionDelay(duration); } - function setDebtAuctionDAIAmount_test(uint256 amount) public { - DssExecLib.setDebtAuctionDAIAmount(amount); + function setDebtAuctionDebtAmount_test(uint256 amount) public { + DssExecLib.setDebtAuctionDebtAmount(amount); } - function setDebtAuctionMKRAmount_test(uint256 amount) public { - DssExecLib.setDebtAuctionMKRAmount(amount); + function setDebtAuctionGovAmount_test(uint256 amount) public { + DssExecLib.setDebtAuctionGovAmount(amount); } function setMinDebtAuctionBidIncrease_test(uint256 pct_bps) public { From 37d3da914248ba935cea098ed321574585277e53 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 14:55:21 -0300 Subject: [PATCH 35/61] refactor: remove MCD_CAT related functions --- README.md | 3 +-- src/DssExecLib.sol | 10 ---------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/README.md b/README.md index cba0422..8268500 100644 --- a/README.md +++ b/README.md @@ -73,8 +73,7 @@ Below is an outline of all functions used in the library. - `susds()`: sUSDS ERC4626 Contract - `mkr()`: MKR ERC20 Contract - `vat()`: Core Accounting -- `cat()`: Liquidation Agent -- `dog()`: Liquidation 2.0 Agent +- `dog()`: Liquidation Agent - `jug()`: Rates Module - `pot()`: Savings Rates Module - `vow()`: System Stabilizer Module diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 8bdb7bd..87c47a4 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -207,10 +207,6 @@ library DssExecLib { return getChangelogAddress("MCD_VAT"); } - function cat() public view returns (address) { - return getChangelogAddress("MCD_CAT"); - } - function dog() public view returns (address) { return getChangelogAddress("MCD_DOG"); } @@ -631,12 +627,6 @@ library DssExecLib { setValue(dog(), "Hole", _amount * RAD); } - /// @dev (LIQ 1.2) Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. - /// @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) - function setMaxTotalDAILiquidationAmountLEGACY(uint256 _amount) public { - require(_amount < WAD); // "LibDssExec/incorrect-cat-box-amount" - setValue(cat(), "box", _amount * RAD); - } /// @dev Set the duration of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. /// @param _duration Time in seconds to set for ES processing time From 4b2ec84b666d075c82deb128394c7108dacd0b5d Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 15:06:56 -0300 Subject: [PATCH 36/61] refactor: rename setMaxTotalDAILiquidationAmount to setMaxTotalDebtLiquidationAmount - Use generic "debt" terminology instead of specific "DAI" references - Update function name in library, tests, and documentation - Update parameter descriptions to use "debt units" instead of "DAI" This change makes the library more token-agnostic by replacing specific token references with generic terms, improving flexibility for Sky Protocol. --- README.md | 2 +- src/DssAction.t.sol | 4 ++-- src/DssExecLib.sol | 6 +++--- src/mocks/MockDssSpellAction.sol | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 8268500..91eaa0c 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ Below is an outline of all functions used in the library. - `setDebtAuctionBidDuration(uint256 _length)`: Set bid duration for debt auctions. - `setDebtAuctionDuration(uint256 _length)`: Set total auction duration for debt auctions. - `setDebtAuctionMKRIncreaseRate(uint256 _pct_bps)`: Set the rate of increasing amount of MKR out for auction during debt auctions. MKR amount is increased by this rate every "tick" (if auction duration has passed and no one has bid on the MKR). -- `setMaxTotalDAILiquidationAmount(uint256 _amount)`: Set the maximum total DAI amount that can be out for liquidation in the system at any point. +- `setMaxTotalDebtLiquidationAmount(uint256 _amount)`: Set the maximum total debt amount that can be out for liquidation in the system at any point. - `setEmergencyShutdownProcessingTime(uint256 _length)`: Set the length of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. - `setGlobalStabilityFee(uint256 _rate)`: Set the global stability fee (not typically used, currently is 0). - `setDAIReferenceValue(uint256 _amount) `: Set the value of DAI in the reference asset (e.g. $1 per DAI). diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index 261051a..a544797 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -718,8 +718,8 @@ contract ActionTest is Test { action.setDebtAuctionMKRIncreaseRate_test(10000); // Fail on 100% } - function test_setMaxTotalDAILiquidationAmount() public { - action.setMaxTotalDAILiquidationAmount_test(50 * MILLION); + function test_setMaxTotalDebtLiquidationAmount() public { + action.setMaxTotalDebtLiquidationAmount_test(50 * MILLION); assertEq(dog.Hole(), 50 * MILLION * RAD); // WAD pct } diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 87c47a4..b59c07f 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -620,9 +620,9 @@ library DssExecLib { setValue(flop(), "pad", WAD + wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /// @dev Set the maximum total DAI amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. - /// @param _amount The amount to set in DAI (ex. 250,000 DAI amount == 250000) - function setMaxTotalDAILiquidationAmount(uint256 _amount) public { + /// @dev Set the maximum total debt amount that can be out for liquidation in the system at any point. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set (ex. 250,000 debt units == 250000) + function setMaxTotalDebtLiquidationAmount(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-dog-Hole-precision" setValue(dog(), "Hole", _amount * RAD); } diff --git a/src/mocks/MockDssSpellAction.sol b/src/mocks/MockDssSpellAction.sol index 649e4f5..66cf9d6 100644 --- a/src/mocks/MockDssSpellAction.sol +++ b/src/mocks/MockDssSpellAction.sol @@ -176,8 +176,8 @@ contract MockDssSpellAction is DssAction { DssExecLib.setDebtAuctionMKRIncreaseRate(pct_bps); } - function setMaxTotalDAILiquidationAmount_test(uint256 amount) public { - DssExecLib.setMaxTotalDAILiquidationAmount(amount); + function setMaxTotalDebtLiquidationAmount_test(uint256 amount) public { + DssExecLib.setMaxTotalDebtLiquidationAmount(amount); } function setEmergencyShutdownProcessingTime_test(uint256 duration) public { From bce0f81e83fc29a1709fad68ca451dd6530faebb Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 16:01:12 -0300 Subject: [PATCH 37/61] refactor: rename setDAIReferenceValue to setParity - Update function name in library, tests, and documentation - Update parameter descriptions to use generic terminology - Replace specific DAI references with generic stablecoin terminology This change makes the library more token-agnostic by using generic terminology, improving flexibility for Sky Protocol. --- README.md | 2 +- src/DssAction.t.sol | 4 ++-- src/DssExecLib.sol | 4 ++-- src/mocks/MockDssSpellAction.sol | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 91eaa0c..7488d34 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ Below is an outline of all functions used in the library. - `setMaxTotalDebtLiquidationAmount(uint256 _amount)`: Set the maximum total debt amount that can be out for liquidation in the system at any point. - `setEmergencyShutdownProcessingTime(uint256 _length)`: Set the length of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. - `setGlobalStabilityFee(uint256 _rate)`: Set the global stability fee (not typically used, currently is 0). -- `setDAIReferenceValue(uint256 _amount) `: Set the value of DAI in the reference asset (e.g. $1 per DAI). +- `setParity(uint256 _amount)`: Set the value of the stablecoin in the reference asset (e.g. $1 per unit). ### Collateral Management diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index a544797..f21b35c 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -734,8 +734,8 @@ contract ActionTest is Test { assertEq(jug.base(), rate); } - function test_setDAIReferenceValue() public { - action.setDAIReferenceValue_test(1005); // $1.005 + function test_setParity() public { + action.setParity_test(1005); // $1.005 assertEq(spot.par(), ray(1.005 ether)); } diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index b59c07f..817b632 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -649,10 +649,10 @@ library DssExecLib { setValue(jug(), "base", _rate); } - /// @dev Set the value of DAI in the reference asset (e.g. $1 per DAI). Value will be converted to the correct internal precision. + /// @dev Set the value of the stablecoin in the reference asset (e.g. $1 per unit). Value will be converted to the correct internal precision. /// @dev Equation used for conversion is value * RAY / 1000 /// @param _value The value to set as integer (x1000) (ex. $1.025 == 1025) - function setDAIReferenceValue(uint256 _value) public { + function setParity(uint256 _value) public { require(_value < WAD); // "LibDssExec/incorrect-par-precision" setValue(spotter(), "par", rdiv(_value, 1000)); } diff --git a/src/mocks/MockDssSpellAction.sol b/src/mocks/MockDssSpellAction.sol index 66cf9d6..a5d8e67 100644 --- a/src/mocks/MockDssSpellAction.sol +++ b/src/mocks/MockDssSpellAction.sol @@ -188,8 +188,8 @@ contract MockDssSpellAction is DssAction { DssExecLib.setGlobalStabilityFee(rate); } - function setDAIReferenceValue_test(uint256 value) public { - DssExecLib.setDAIReferenceValue(value); + function setParity_test(uint256 value) public { + DssExecLib.setParity(value); } function setIlkDebtCeiling_test(bytes32 ilk, uint256 amount) public { From 50102af0bd89f80711425a7473fb7a73989a93bc Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 16:11:48 -0300 Subject: [PATCH 38/61] refactor: remove specific DAI references from function documentation - Replace 'DAI' with generic terminology in parameter descriptions - Use generic 'amount' instead of 'DAI amount' throughout - Clarify RWA documentation with note about DAI support - Make documentation more token-agnostic This change continues the effort to make the library more generic and adaptable for different token implementations. --- src/DssExecLib.sol | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 817b632..e68f468 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -507,14 +507,14 @@ library DssExecLib { /* ----- System Risk Parameters ----- */ /// @dev Set the global debt ceiling. Amount will be converted to the correct internal precision. - /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + /// @param _amount The amount to set (ex. 10m amount == 10000000) function setGlobalDebtCeiling(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-global-Line-precision" setValue(vat(), "Line", _amount * RAD); } /// @dev Increase the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. - /// @param _amount The amount to add in DAI (ex. 10m DAI amount == 10000000) + /// @param _amount The amount to add (ex. 10m amount == 10000000) function increaseGlobalDebtCeiling(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-Line-increase-precision" address _vat = vat(); @@ -522,7 +522,7 @@ library DssExecLib { } /// @dev Decrease the global debt ceiling by a specific amount. Amount will be converted to the correct internal precision. - /// @param _amount The amount to reduce in DAI (ex. 10m DAI amount == 10000000) + /// @param _amount The amount to reduce (ex. 10m amount == 10000000) function decreaseGlobalDebtCeiling(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-Line-decrease-precision" address _vat = vat(); @@ -547,15 +547,15 @@ library DssExecLib { setValue(susds(), "ssr", _rate); } - /// @dev Set the DAI amount for system surplus auctions. Amount will be converted to the correct internal precision. - /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + /// @dev Set the amount for system surplus auctions. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set (ex. 10m amount == 10000000) function setSurplusAuctionAmount(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-vow-bump-precision" setValue(vow(), "bump", _amount * RAD); } - /// @dev Set the DAI amount for system surplus buffer, must be exceeded before surplus auctions start. Amount will be converted to the correct internal precision. - /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + /// @dev Set the amount for system surplus buffer, must be exceeded before surplus auctions start. Amount will be converted to the correct internal precision. + /// @param _amount The amount to set (ex. 10m amount == 10000000) function setSurplusBuffer(uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-vow-hump-precision" setValue(vow(), "hump", _amount * RAD); @@ -661,7 +661,7 @@ library DssExecLib { /// @dev Set a collateral debt ceiling. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + /// @param _amount The amount to set (ex. 10m amount == 10000000) function setIlkDebtCeiling(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" setValue(vat(), _ilk, "line", _amount * RAD); @@ -669,7 +669,7 @@ library DssExecLib { /// @dev Increase a collateral debt ceiling. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _amount The amount to increase in DAI (ex. 10m DAI amount == 10000000) + /// @param _amount The amount to increase (ex. 10m amount == 10000000) /// @param _global If true, increases the global debt ceiling by _amount function increaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" @@ -681,7 +681,7 @@ library DssExecLib { /// @dev Decrease a collateral debt ceiling. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _amount The amount to decrease in DAI (ex. 10m DAI amount == 10000000) + /// @param _amount The amount to decrease (ex. 10m amount == 10000000) /// @param _global If true, decreases the global debt ceiling by _amount function decreaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" @@ -693,8 +693,9 @@ library DssExecLib { /// @dev Set a RWA collateral debt ceiling by specifying its new oracle price. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _ceiling The new debt ceiling in natural units (e.g. set 10m DAI as 10_000_000) + /// @param _ceiling The new debt ceiling in natural units (e.g. set 10m as 10_000_000) /// @param _price The new oracle price in natural units + /// @dev note: currently only DAI is supported in RWA vaults. /// @dev note: _price should enable DAI to be drawn over the loan period while taking into /// account the configured ink amount, interest rate and liquidation ratio /// @dev note: _price * WAD should be greater than or equal to the current oracle price @@ -707,8 +708,8 @@ library DssExecLib { /// @dev Set the parameters for an ilk in the "MCD_IAM_AUTO_LINE" auto-line /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _amount The Maximum value (ex. 100m DAI amount == 100000000) - /// @param _gap The amount of Dai per step (ex. 5m Dai == 5000000) + /// @param _amount The Maximum value (ex. 100m amount == 100000000) + /// @param _gap The amount per step (ex. 5m gap == 5000000) /// @param _ttl The amount of time (in seconds) function setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap, uint256 _ttl) public { require(_amount < WAD); // "LibDssExec/incorrect-auto-line-amount-precision" @@ -718,7 +719,7 @@ library DssExecLib { /// @dev Set the debt ceiling for an ilk in the "MCD_IAM_AUTO_LINE" auto-line without updating the time values /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _amount The Maximum value (ex. 100m DAI amount == 100000000) + /// @param _amount The Maximum value (ex. 100m amount == 100000000) function setIlkAutoLineDebtCeiling(bytes32 _ilk, uint256 _amount) public { address _autoLine = autoLine(); (, uint256 gap, uint48 ttl,,) = IAMLike(_autoLine).ilks(_ilk); @@ -734,7 +735,7 @@ library DssExecLib { /// @dev Set a collateral minimum vault amount. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + /// @param _amount The amount to set (ex. 10m amount == 10000000) function setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-dust-precision" (,, uint256 _hole,) = DogLike(dog()).ilks(_ilk); @@ -753,9 +754,9 @@ library DssExecLib { clip(_ilk).call(abi.encodeWithSignature("upchost()")); } - /// @dev Set max DAI amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. + /// @dev Set max amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _amount The amount to set in DAI (ex. 10m DAI amount == 10000000) + /// @param _amount The amount to set (ex. 10m amount == 10000000) function setIlkMaxLiquidationAmount(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-hole-precision" setValue(dog(), _ilk, "hole", _amount * RAD); @@ -804,9 +805,9 @@ library DssExecLib { setValue(clip(_ilk), "chip", wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /// @dev Set max DAI amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. + /// @dev Set max amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) - /// @param _amount The amount to set in DAI (ex. 1000 DAI amount == 1000) + /// @param _amount The amount to set (ex. 1000 amount == 1000) function setKeeperIncentiveFlatRate(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-clip-tip-precision" setValue(clip(_ilk), "tip", _amount * RAD); @@ -895,7 +896,7 @@ library DssExecLib { /* ----- Direct Deposit Module ----- */ - /// @dev Sets the target rate threshold for a dai direct deposit module (ddm) + /// @dev Sets the target rate threshold for a direct deposit module (ddm) /// @dev Aave: Targets the variable borrow rate /// @param _ddm The address of the DDM contract /// @param _pct_bps Target rate in basis points. (ex. 4% == 400) @@ -1030,8 +1031,8 @@ library DssExecLib { /// @dev Send a payment in either ERC20 USDS or DAI from the surplus buffer. /// @param _join The join adapter to exit the payment from. - /// @param _target The target address to send the DAI to. - /// @param _amount The amount to send in DAI (ex. 10m DAI amount == 10000000) + /// @param _target The target address to send the payment to. + /// @param _amount The amount to send (ex. 10m amount == 10000000) function sendPaymentFromSurplusBuffer(address _join, address _target, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-line-precision" DssVat(vat()).suck(vow(), address(this), _amount * RAD); From 88608c95f1b7938818da1cc7f96c4f2792118c07 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 16:53:36 -0300 Subject: [PATCH 39/61] chore: fix formatting --- src/DssExecLib.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index e68f468..ced27e0 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -627,7 +627,6 @@ library DssExecLib { setValue(dog(), "Hole", _amount * RAD); } - /// @dev Set the duration of time that has to pass during emergency shutdown before collateral can start being claimed by DAI holders. /// @param _duration Time in seconds to set for ES processing time function setEmergencyShutdownProcessingTime(uint256 _duration) public { From 2fac7bfe9771f0286a037a8fc1db9b2f9c5945a4 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 16:55:35 -0300 Subject: [PATCH 40/61] feat: add overloaded setIlkAutoLineParameters function - Add overloaded function to set amount and gap while preserving TTL - Add test helper in MockDssSpellAction.sol - Add test case in DssAction.t.sol to verify TTL is preserved - Update README.md with documentation for the new function This change allows for more convenient parameter updates when only the amount and gap need to be modified without changing the TTL. --- README.md | 3 ++- src/DssAction.t.sol | 18 ++++++++++++++++++ src/mocks/MockDssSpellAction.sol | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7488d34..5d1e6f6 100644 --- a/README.md +++ b/README.md @@ -163,7 +163,8 @@ Below is an outline of all functions used in the library. - `increaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global)`: Raise the debt ceiling of a particular ilk. - `decreaseIlkDebtCeiling(bytes32 _ilk, uint256 _amount, bool _global)`: Lower the debt ceiling of a particular ilk. - `setRWAIlkDebtCeiling(bytes32 _ilk, uint256 _ceiling, uint256 _price)`: Set the debt ceiling for a RWA collateral. This requires also a new oracle price. -- `setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap, uint256 _ttl)`: Configure the parameters for the Debt Ceiling auto line module for a particluar ilk. +- `setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap, uint256 _ttl)`: Configure the parameters for the Debt Ceiling auto line module for a particular ilk. +- `setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap)`: Configure the amount and gap parameters for the Debt Ceiling auto line module while keeping the existing TTL value. - `setIlkAutoLineDebtCeiling(bytes32 _ilk, uint256 _amount)`: Adjust the debt ceiling in the auto line module. - `removeIlkFromAutoLine(bytes32 _ilk)`: Remove the management of an ilk by the debt ceiling auto line module. - `setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount)`: Set a collateral minimum vault amount. diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index f21b35c..b0febcb 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -804,6 +804,24 @@ contract ActionTest is Test { assertEq(line, 5 * MILLION * RAD); // Change to match the gap } + function test_setIlkAutoLineParametersKeepTtl() public { + // First set up with initial values including ttl + action.setIlkAutoLineParameters_test("gold", 150 * MILLION, 5 * MILLION, 10000); + + // Get the initial ttl value + (,, uint48 initialTtl,,) = autoLine.ilks("gold"); + assertEq(uint256(initialTtl), 10000); + + // Now use the overloaded function that should keep the ttl unchanged + action.setIlkAutoLineParameters_test("gold", 200 * MILLION, 10 * MILLION); + + // Verify line and gap were updated but ttl remains the same + (uint256 line, uint256 gap, uint48 ttl,,) = autoLine.ilks("gold"); + assertEq(line, 200 * MILLION * RAD); + assertEq(gap, 10 * MILLION * RAD); + assertEq(uint256(ttl), initialTtl); // ttl should remain unchanged + } + function test_setIlkAutoLineDebtCeiling() public { action.setIlkAutoLineParameters_test("gold", 1, 5 * MILLION, 10000); // gap and ttl must be configured already action.setIlkAutoLineDebtCeiling_test("gold", 150 * MILLION); // Setup diff --git a/src/mocks/MockDssSpellAction.sol b/src/mocks/MockDssSpellAction.sol index a5d8e67..ee5d201 100644 --- a/src/mocks/MockDssSpellAction.sol +++ b/src/mocks/MockDssSpellAction.sol @@ -212,6 +212,10 @@ contract MockDssSpellAction is DssAction { DssExecLib.setIlkAutoLineParameters(ilk, amount, gap, ttl); } + function setIlkAutoLineParameters_test(bytes32 ilk, uint256 amount, uint256 gap) public { + DssExecLib.setIlkAutoLineParameters(ilk, amount, gap); + } + function setIlkAutoLineDebtCeiling_test(bytes32 ilk, uint256 amount) public { DssExecLib.setIlkAutoLineDebtCeiling(ilk, amount); } From c2d8e0d450ac9678d7a28b4cb05d83ea7de792c5 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 17:31:19 -0300 Subject: [PATCH 41/61] refactor: update DssExecTest to work with the new Chief --- foundry.toml | 1 + src/DssExec.t.sol | 31 ++++++++++++++++++++++++------- src/DssExecLib.sol | 12 ++++++++++++ 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/foundry.toml b/foundry.toml index 0cac3a0..f7c9066 100644 --- a/foundry.toml +++ b/foundry.toml @@ -2,6 +2,7 @@ src = "src" out = "out" libs = ["lib"] +evm_version = "cancun" solc = "0.8.16" optimizer = true optimizer_runs = 200 diff --git a/src/DssExec.t.sol b/src/DssExec.t.sol index c90dd44..77ae20e 100644 --- a/src/DssExec.t.sol +++ b/src/DssExec.t.sol @@ -48,6 +48,14 @@ interface CalcFabLike { function newLinearDecrease(address owner) external returns (address calc); } +interface ChiefLike { + function hat() external view returns (address); + function live() external view returns (uint256); + function lock(uint256 wad) external; + function vote(address[] memory yays) external returns (bytes32 slate); + function lift(address whom) external; +} + contract DssLibSpellAction is DssAction // This could be changed to a library if the lib is hardcoded and the constructor removed { @@ -115,7 +123,9 @@ contract DssLibSpellAction is } } -contract DssLibExecTest is Test { +contract DssExecTest is Test { + using stdStorage for StdStorage; + struct CollateralValues { uint256 line; uint256 dust; @@ -155,7 +165,7 @@ contract DssLibExecTest is Test { // MAINNET ADDRESSES address pauseProxy; DSPauseAbstract pause; - DSChiefAbstract chief; + ChiefLike chief; VatAbstract vat; VowAbstract vow; DogAbstract dog; @@ -191,7 +201,7 @@ contract DssLibExecTest is Test { pauseProxy = LOG.getAddress("MCD_PAUSE_PROXY"); pause = DSPauseAbstract(LOG.getAddress("MCD_PAUSE")); - chief = DSChiefAbstract(LOG.getAddress("MCD_ADM")); + chief = ChiefLike(LOG.getAddress("MCD_ADM")); vat = VatAbstract(LOG.getAddress("MCD_VAT")); vow = VowAbstract(LOG.getAddress("MCD_VOW")); dog = DogAbstract(LOG.getAddress("MCD_DOG")); @@ -324,9 +334,12 @@ contract DssLibExecTest is Test { } function vote() private { + if (chief.live() != 1) { + stdstore.target(address(chief)).sig("live()").checked_write(bytes32(uint256(1))); + } if (chief.hat() != address(spell)) { - vm.store( - address(gov), keccak256(abi.encode(address(this), uint256(1))), bytes32(uint256(999999999999 ether)) + stdstore.target(address(gov)).sig("balanceOf(address)").with_key(address(this)).checked_write( + bytes32(uint256(999999999999 ether)) ); gov.approve(address(chief), type(uint256).max); chief.lock(gov.balanceOf(address(this)) - 1 ether); @@ -438,8 +451,12 @@ contract DssLibExecTest is Test { { // sump values in RAD uint256 normalizedSump = values.vow_sump * RAD; - assertEq(vow.sump(), normalizedSump); - assertTrue((vow.sump() >= RAD && vow.sump() < 500 * THOUSAND * RAD) || vow.sump() == 0); + // TODO: sump has been set to type(uint256).max during the Sky migration. + // Remove this check when the new Flopper contract is available. + if (vow.sump() != type(uint256).max) { + assertEq(vow.sump(), normalizedSump); + assertTrue((vow.sump() >= RAD && vow.sump() < 500 * THOUSAND * RAD) || vow.sump() == 0); + } } { // bump values in RAD diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index ced27e0..75f6bac 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -716,6 +716,18 @@ library DssExecLib { IAMLike(autoLine()).setIlk(_ilk, _amount * RAD, _gap * RAD, _ttl); } + /// @dev Set the parameters for an ilk in the "MCD_IAM_AUTO_LINE" auto-line. Keeps the ttl unchanged. + /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _amount The Maximum value (ex. 100m amount == 100000000) + /// @param _gap The amount per step (ex. 5m gap == 5000000) + function setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap) public { + address _autoLine = autoLine(); + (,, uint48 ttl,,) = IAMLike(_autoLine).ilks(_ilk); + require(_amount < WAD); // "LibDssExec/incorrect-auto-line-amount-precision" + require(_gap < WAD); // "LibDssExec/incorrect-auto-line-gap-precision" + IAMLike(_autoLine).setIlk(_ilk, _amount * RAD, _gap * RAD, uint256(ttl)); + } + /// @dev Set the debt ceiling for an ilk in the "MCD_IAM_AUTO_LINE" auto-line without updating the time values /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The Maximum value (ex. 100m amount == 100000000) From 3a885103d23abc205e1e01d122da20a422814681 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 May 2025 19:53:23 -0300 Subject: [PATCH 42/61] refactor: clean up `DssActionTest` --- src/DssAction.t.sol | 60 ++------------------------------------------- 1 file changed, 2 insertions(+), 58 deletions(-) diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index b0febcb..5c88b2d 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -102,7 +102,7 @@ interface ProxyLike { function exec(address, bytes calldata) external returns (bytes memory); } -contract ActionTest is Test { +contract DssActionTest is Test { using stdStorage for StdStorage; ChainlogLike LOG = ChainlogLike(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); @@ -294,68 +294,12 @@ contract ActionTest is Test { } } - function min(uint256 x, uint256 y) internal pure returns (uint256 z) { - (x >= y) ? z = y : z = x; - } - - function dai(address urn) internal view returns (uint256) { - return vat.dai(urn) / RAY; - } - - function ink(bytes32 ilk, address urn) internal view returns (uint256) { - (uint256 ink_, uint256 art_) = vat.urns(ilk, urn); - art_; - return ink_; - } - - function art(bytes32 ilk, address urn) internal view returns (uint256) { - (uint256 ink_, uint256 art_) = vat.urns(ilk, urn); - ink_; - return art_; - } - - function Art(bytes32 ilk) internal view returns (uint256) { - (uint256 Art_, uint256 rate_, uint256 spot_, uint256 line_, uint256 dust_) = vat.ilks(ilk); - rate_; - spot_; - line_; - dust_; - return Art_; - } - - function balanceOf(bytes32 ilk, address usr) internal view returns (uint256) { - return ilks[ilk].gem.balanceOf(usr); - } - function stringToBytes32(string memory source) public pure returns (bytes32 result) { assembly { result := mload(add(source, 32)) } } - /** - * @notice Test that two values are approximately equal within a certain tolerance range - * @param _a First value - * @param _b Second value - * @param _tolerance Maximum tolerated difference, in absolute terms - */ - function assertEqApprox(uint256 _a, uint256 _b, uint256 _tolerance) internal { - uint256 a = _a; - uint256 b = _b; - if (a < b) { - // if a < b, switch values so that a is always the biggest amount - uint256 tmp = a; - a = b; - b = tmp; - } - if (a - b > _tolerance) { - emit log_bytes32("Error: Wrong `uint' value"); - emit log_named_uint(" Expected", _b); - emit log_named_uint(" Actual", _a); - fail(); - } - } - function giveAuth(address _base, address target) internal { WardsAbstract base = WardsAbstract(_base); @@ -775,7 +719,7 @@ contract ActionTest is Test { function test_setRWAIlkDebtCeiling() public { (, address pip,,) = rwaOracle.ilks("6s"); uint256 price = uint256(PipLike(pip).read()); - assertEqApprox(price, 22_278_900 * WAD, WAD); // 20MM * 1.03^2 * 1.05 + assertApproxEqAbs(price, 22_278_900 * WAD, WAD); // 20MM * 1.03^2 * 1.05 action.setRWAIlkDebtCeiling_test("6s", 50 * MILLION, 55 * MILLION); // Increase (,,, uint256 line,) = vat.ilks("6s"); assertEq(line, 50 * MILLION * RAD); From da2d9b731ea6c4c1a262adbb4de360d84919fc9b Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 11 Jun 2025 21:03:01 +0300 Subject: [PATCH 43/61] Apply suggestions from code review Co-authored-by: oddaf <106770775+oddaf@users.noreply.github.com> --- .editorconfig | 2 +- src/DssAction.t.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.editorconfig b/.editorconfig index eefe7d8..0bccfac 100644 --- a/.editorconfig +++ b/.editorconfig @@ -29,7 +29,7 @@ indent_size = 2 indent_size = 4 [Makefile] -intent_style = tab +indent_style = tab indent_size = 4 # Special Cases diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index 5c88b2d..a4a7eee 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -524,7 +524,7 @@ contract DssActionTest is Test { assertEq(susds.ssr(), 1000000001243680656318820312); vm.warp(START_TIME + 1 days); action.accumulateSSR_test(); - uint256 afterChi = pot.chi(); + uint256 afterChi = susds.chi(); assertGt(afterChi, beforeChi); } From d5b028166e84817a971ea791d465b99b75cd0ea2 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:11:36 +0300 Subject: [PATCH 44/61] fix: apply suggestions from code review Co-authored-by: oddaf <106770775+oddaf@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5d1e6f6..51f781b 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ The `SpellAction.sol` file must always inherit `DssAction` from `lib/dss-exec-li The developer must override the `actions()` function and place all spell actions within. This is called by the `execute()` function in the pause, which is subject to an optional limiter for office hours. > [!NOTE] -> All variables within spell action MUST be defined as constants, or assigned at runtime inside of the `actions()` function. Variable memory storage is not available within a spell action due to the underlying `delegatcall` mechanisms. +> All variables within spell action MUST be defined as constants, or assigned at runtime inside of the `actions()` function. Variable memory storage is not available within a spell action due to the underlying `delegatecall` mechanisms. The spell itself is deployed as follows: @@ -54,7 +54,7 @@ new DssExec( Below is an outline of how all variables are accounted for for precision based on name. > [!NOTE] -> `DSSExecLib.sol` has NatSpec comments above every function definition that provides a comprehensive definition of the function, its parameters, and any precision calculations that are made. +> `DSSExecLib.sol` has NatSpec comments above every function definition that provide a comprehensive definition of the function, its parameters, and any precision calculations that are made. - `amount`: Integer amount, (e.g., 10m DAI amount == 10000000) - `rate`: Rate value expressed as value corresponding to percent from this [list](https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW) (e.g., 4% => 1000000001243680656318820312) From aa7c852b506df02d87765aab29783b90a27993e5 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 23 Jul 2025 12:30:51 -0300 Subject: [PATCH 45/61] refactor: add changes related to SKY being the new governance token --- README.md | 1 + src/DssExecLib.sol | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 51f781b..fe2b019 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ Below is an outline of all functions used in the library. - `usds()`: USDS ERC20 Contract - `susds()`: sUSDS ERC4626 Contract - `mkr()`: MKR ERC20 Contract +- `sky()`: SKY ERC20 Contract - `vat()`: Core Accounting - `dog()`: Liquidation Agent - `jug()`: Rates Module diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 75f6bac..07b92ec 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -200,7 +200,11 @@ library DssExecLib { } function mkr() public view returns (address) { - return getChangelogAddress("MCD_GOV"); + return getChangelogAddress("MKR"); + } + + function sky() public view returns (address) { + return getChangelogAddress("SKY"); } function vat() public view returns (address) { @@ -255,8 +259,8 @@ library DssExecLib { return getChangelogAddress("OSM_MOM"); } - function govGuard() public view returns (address) { - return getChangelogAddress("GOV_GUARD"); + function mkrGuard() public view returns (address) { + return getChangelogAddress("MKR_GUARD"); } function flipperMom() public view returns (address) { From 1b0dedb9435c32933c2b1bb579a6ed49b6f69bf7 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Wed, 10 Sep 2025 15:57:20 -0300 Subject: [PATCH 46/61] refactor: remove `flipperMom` getter --- README.md | 1 - src/DssExecLib.sol | 4 ---- 2 files changed, 5 deletions(-) diff --git a/README.md b/README.md index fe2b019..44fe7c2 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,6 @@ Below is an outline of all functions used in the library. - `flop()`: Debt Auction Module - `osmMom()`: OSM Circuit Breaker - `govGuard()`: MKR Authority -- `flipperMom()`: Flipper Governance Interface - `clipperMom()`: Clipper Governance Interface (Liquidations 2.0) - `pauseProxy()`: Governance Authority - `autoLine()`: Debt Ceiling Auto Adjustment diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 07b92ec..9704f08 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -263,10 +263,6 @@ library DssExecLib { return getChangelogAddress("MKR_GUARD"); } - function flipperMom() public view returns (address) { - return getChangelogAddress("FLIPPER_MOM"); - } - function clipperMom() public view returns (address) { return getChangelogAddress("CLIPPER_MOM"); } From e94ec06f0b5ff04c4cca986605a7ea81c1c8d2c5 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 12 Sep 2025 12:57:42 -0300 Subject: [PATCH 47/61] refactor: remove mkrGuard in favor of govGuard for SKY only --- README.md | 2 +- src/DssExecLib.sol | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 44fe7c2..1d6fcce 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Below is an outline of all functions used in the library. - `flap()`: Surplus Auction Module - `flop()`: Debt Auction Module - `osmMom()`: OSM Circuit Breaker -- `govGuard()`: MKR Authority +- `govGuard()`: SKY Authority - `clipperMom()`: Clipper Governance Interface (Liquidations 2.0) - `pauseProxy()`: Governance Authority - `autoLine()`: Debt Ceiling Auto Adjustment diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 9704f08..3aafeb8 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -259,8 +259,8 @@ library DssExecLib { return getChangelogAddress("OSM_MOM"); } - function mkrGuard() public view returns (address) { - return getChangelogAddress("MKR_GUARD"); + function govGuard() public view returns (address) { + return getChangelogAddress("GOV_GUARD"); } function clipperMom() public view returns (address) { From c3f4a340a0e009162207346d201d638a04a54f7b Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 12 Sep 2025 13:20:59 -0300 Subject: [PATCH 48/61] refactor: add sanity check for `setAutoLineIlkParameters(ilk, amount, gap)` Ensure this overload only works if the ilk has been properly configured before. --- src/DssAction.t.sol | 5 +++++ src/DssExecLib.sol | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index a4a7eee..fe2da9b 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -766,6 +766,11 @@ contract DssActionTest is Test { assertEq(uint256(ttl), initialTtl); // ttl should remain unchanged } + function test_RevertSetIlkAutoLineParametersKeepTtl_WhenNotConfigured() public { + vm.expectRevert(); + action.setIlkAutoLineParameters_test("gold", 200 * MILLION, 10 * MILLION); + } + function test_setIlkAutoLineDebtCeiling() public { action.setIlkAutoLineParameters_test("gold", 1, 5 * MILLION, 10000); // gap and ttl must be configured already action.setIlkAutoLineDebtCeiling_test("gold", 150 * MILLION); // Setup diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 3aafeb8..88360c9 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -717,14 +717,16 @@ library DssExecLib { } /// @dev Set the parameters for an ilk in the "MCD_IAM_AUTO_LINE" auto-line. Keeps the ttl unchanged. + /// Requires the auto-line to be already configured for the ilk. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The Maximum value (ex. 100m amount == 100000000) /// @param _gap The amount per step (ex. 5m gap == 5000000) function setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap) public { - address _autoLine = autoLine(); - (,, uint48 ttl,,) = IAMLike(_autoLine).ilks(_ilk); require(_amount < WAD); // "LibDssExec/incorrect-auto-line-amount-precision" require(_gap < WAD); // "LibDssExec/incorrect-auto-line-gap-precision" + address _autoLine = autoLine(); + (,, uint48 ttl,,) = IAMLike(_autoLine).ilks(_ilk); + require(ttl != 0); // "LibDssExec/auto-line-not-configured" IAMLike(_autoLine).setIlk(_ilk, _amount * RAD, _gap * RAD, uint256(ttl)); } From a29216308988683be76fb9320974c09fad1c9d2e Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 12 Sep 2025 18:43:22 -0300 Subject: [PATCH 49/61] docs: improve NatSpec --- src/DssExecLib.sol | 87 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 10 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 88360c9..c6552cd 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -183,7 +183,7 @@ library DssExecLib { /// @dev RAY division. The final result is rounded to the nearest integer. /// Examples: - /// rdiv(1, 2) = 0.5 * WAD = 500000000000000000000000000 + /// rdiv(1, 2) = 0.5 * RAY = 500000000000000000000000000 /// rdiv(2, 3) = 0.666... * RAY = 666666666666666666666666667 function rdiv(uint256 x, uint256 y) internal pure returns (uint256 z) { z = (x * RAY + y / 2) / y; @@ -191,114 +191,173 @@ library DssExecLib { /* ----- Core Address Helpers ----- */ + /// @notice Get the DAI token contract address from the changelog + /// @return The address of the DAI token contract function dai() public view returns (address) { return getChangelogAddress("MCD_DAI"); } + /// @notice Get the USDS token contract address from the changelog + /// @return The address of the USDS token contract function usds() public view returns (address) { return getChangelogAddress("USDS"); } + /// @notice Get the MKR token contract address from the changelog + /// @return The address of the MKR token contract function mkr() public view returns (address) { return getChangelogAddress("MKR"); } + /// @notice Get the SKY token contract address from the changelog + /// @return The address of the SKY token contract function sky() public view returns (address) { return getChangelogAddress("SKY"); } + /// @notice Get the VAT (accounting core) contract address from the changelog + /// @return The address of the VAT contract function vat() public view returns (address) { return getChangelogAddress("MCD_VAT"); } + /// @notice Get the DOG (liquidation module) contract address from the changelog + /// @return The address of the DOG contract function dog() public view returns (address) { return getChangelogAddress("MCD_DOG"); } + /// @notice Get the JUG (stability fee collector) contract address from the changelog + /// @return The address of the JUG contract function jug() public view returns (address) { return getChangelogAddress("MCD_JUG"); } + /// @notice Get the POT (DAI Savings Rate) contract address from the changelog + /// @return The address of the POT contract function pot() public view returns (address) { return getChangelogAddress("MCD_POT"); } + /// @notice Get the SUSDS (SKY Savings Rate) contract address from the changelog + /// @return The address of the SUSDS contract function susds() public view returns (address) { return getChangelogAddress("SUSDS"); } + /// @notice Get the VOW (system surplus and debt manager) contract address from the changelog + /// @return The address of the VOW contract function vow() public view returns (address) { return getChangelogAddress("MCD_VOW"); } + /// @notice Get the END (emergency shutdown) contract address from the changelog + /// @return The address of the END contract function end() public view returns (address) { return getChangelogAddress("MCD_END"); } + /// @notice Get the ESM (emergency shutdown module) contract address from the changelog + /// @return The address of the ESM contract function esm() public view returns (address) { return getChangelogAddress("MCD_ESM"); } + /// @notice Get the ILK_REGISTRY (collateral registry) contract address from the changelog + /// @return The address of the ILK_REGISTRY contract function reg() public view returns (address) { return getChangelogAddress("ILK_REGISTRY"); } + /// @notice Get the SPOTTER (price feed interface) contract address from the changelog + /// @return The address of the SPOTTER contract function spotter() public view returns (address) { return getChangelogAddress("MCD_SPOT"); } + /// @notice Get the FLAP (surplus auction) contract address from the changelog + /// @return The address of the FLAP contract function flap() public view returns (address) { return getChangelogAddress("MCD_FLAP"); } + /// @notice Get the FLOP (debt auction) contract address from the changelog + /// @return The address of the FLOP contract function flop() public view returns (address) { return getChangelogAddress("MCD_FLOP"); } + /// @notice Get the OSM_MOM (oracle security module mom) contract address from the changelog + /// @return The address of the OSM_MOM contract function osmMom() public view returns (address) { return getChangelogAddress("OSM_MOM"); } + /// @notice Get the GOV_GUARD (governance guard) contract address from the changelog + /// @return The address of the GOV_GUARD contract function govGuard() public view returns (address) { return getChangelogAddress("GOV_GUARD"); } + /// @notice Get the CLIPPER_MOM (liquidation circuit breaker) contract address from the changelog + /// @return The address of the CLIPPER_MOM contract function clipperMom() public view returns (address) { return getChangelogAddress("CLIPPER_MOM"); } + /// @notice Get the PAUSE_PROXY (governance proxy) contract address from the changelog + /// @return The address of the PAUSE_PROXY contract function pauseProxy() public view returns (address) { return getChangelogAddress("MCD_PAUSE_PROXY"); } + /// @notice Get the IAM_AUTO_LINE (auto debt ceiling adjuster) contract address from the changelog + /// @return The address of the IAM_AUTO_LINE contract function autoLine() public view returns (address) { return getChangelogAddress("MCD_IAM_AUTO_LINE"); } + /// @notice Get the DAI_JOIN (DAI token adapter) contract address from the changelog + /// @return The address of the DAI_JOIN contract function daiJoin() public view returns (address) { return getChangelogAddress("MCD_JOIN_DAI"); } + /// @notice Get the USDS_JOIN (USDS token adapter) contract address from the changelog + /// @return The address of the USDS_JOIN contract function usdsJoin() public view returns (address) { return getChangelogAddress("USDS_JOIN"); } + /// @notice Get the LERP_FAB (linear interpolation factory) contract address from the changelog + /// @return The address of the LERP_FAB contract function lerpFab() public view returns (address) { return getChangelogAddress("LERP_FAB"); } + /// @notice Get the PAUSE (governance delay) contract address from the changelog + /// @return The address of the PAUSE contract function pause() public view returns (address) { return getChangelogAddress("MCD_PAUSE"); } + /// @notice Get the collateral liquidation contract address for a given ilk + /// @param _ilk The collateral type identifier + /// @return _clip The address of the liquidation contract for the given ilk function clip(bytes32 _ilk) public view returns (address _clip) { _clip = RegistryLike(reg()).xlip(_ilk); } + /// @notice Get the collateral auction contract address for a given ilk (legacy) + /// @param _ilk The collateral type identifier + /// @return _flip The address of the auction contract for the given ilk function flip(bytes32 _ilk) public view returns (address _flip) { _flip = RegistryLike(reg()).xlip(_ilk); } + /// @notice Get the pricing calculator contract address for a given ilk + /// @param _ilk The collateral type identifier + /// @return _calc The address of the pricing calculator contract for the given ilk function calc(bytes32 _ilk) public view returns (address _calc) { _calc = ClipLike(clip(_ilk)).calc(); } @@ -374,9 +433,9 @@ library DssExecLib { Kissable(_target).diss(_usr); } - /// @dev Give an address authorization to perform auth actions on the contract. - /// @param _base The address of the contract with a `setAuthority` pattern - /// @param _authority Address to be authorized + /// @dev Set the authority contract that manages access control for the target contract. + /// @param _base The address of the contract where the authority will be set + /// @param _authority Address of the authority contract that will manage privileged access (e.g., Chief managing who can call the Pause contract) function setAuthority(address _base, address _authority) public { Authorizable(_base).setAuthority(_authority); } @@ -489,7 +548,7 @@ library DssExecLib { /// @dev Set a value in a contract, via a governance authorized File pattern. /// @param _base The address of the contract where the new contract address will be filed - /// @param _what Name of tag for the value (e.x. "Line") + /// @param _what Name of tag for the value (e.g. "Line") /// @param _amt The value to set or update function setValue(address _base, bytes32 _what, uint256 _amt) public { Fileable(_base).file(_what, _amt); @@ -498,7 +557,7 @@ library DssExecLib { /// @dev Set an ilk-specific value in a contract, via a governance authorized File pattern. /// @param _base The address of the contract where the new value will be filed /// @param _ilk Collateral type - /// @param _what Name of tag for the value (e.x. "Line") + /// @param _what Name of tag for the value (e.g. "Line") /// @param _amt The value to set or update function setValue(address _base, bytes32 _ilk, bytes32 _what, uint256 _amt) public { Fileable(_base).file(_ilk, _what, _amt); @@ -691,7 +750,7 @@ library DssExecLib { } /// @dev Set a RWA collateral debt ceiling by specifying its new oracle price. - /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) + /// @param _ilk The ilk to update (ex. bytes32("RWA001-A")) /// @param _ceiling The new debt ceiling in natural units (e.g. set 10m as 10_000_000) /// @param _price The new oracle price in natural units /// @dev note: currently only DAI is supported in RWA vaults. @@ -920,7 +979,10 @@ library DssExecLib { /* ----- Collateral Onboarding ----- */ - /// @dev Performs basic functions and sanity checks to add a new collateral type to the Sky Protocol + /// @dev Performs basic collateral setup with core contract integrations and authorizations. + /// @dev This function handles the fundamental integration of a new collateral type into the core Sky Protocol + /// contracts (VAT, DOG, JUG, etc.) without setting risk parameters. Use this when you need basic setup + /// without full parameter configuration, or as a building block for more complex onboarding. /// @param _ilk Collateral type key code [Ex. "ETH-A"] /// @param _gem Address of token contract /// @param _join Address of join adapter @@ -976,7 +1038,10 @@ library DssExecLib { RegistryLike(reg()).add(_join); } - // Complete collateral onboarding logic. + /// @dev Complete collateral onboarding with all necessary configurations and authorizations. + /// @dev This function performs comprehensive collateral setup including debt ceilings, liquidation parameters, + /// stability fees, and oracle configurations. Use this for complete collateral onboarding. + /// @param co Struct containing all collateral configuration options and parameters function addNewCollateral(CollateralOpts memory co) public { // Add the collateral to the system. addCollateralBase(co.ilk, co.gem, co.join, co.clip, co.calc, co.pip); @@ -1062,6 +1127,7 @@ library DssExecLib { /// @param _start The start value for the target parameter /// @param _end The end value for the target parameter /// @param _duration The duration of the interpolation + /// @return The address of the created lerp contract function linearInterpolation( bytes32 _name, address _target, @@ -1086,6 +1152,7 @@ library DssExecLib { /// @param _start The start value for the target parameter /// @param _end The end value for the target parameter /// @param _duration The duration of the interpolation + /// @return The address of the created lerp contract function linearInterpolation( bytes32 _name, address _target, @@ -1105,7 +1172,7 @@ library DssExecLib { /* ----- SubDAO/Star Spells ----- */ - /// @dev Execute a start spell through its star proxy. + /// @dev Execute a star spell through its star proxy. /// @param _starProxy The proxy to execute the spell through. /// @param _starSpell The spell to execute. /// @return The return data from the spell execution. From 110f73e8e1f550fd91c1b159c575c0790c700fcc Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 12 Sep 2025 18:54:00 -0300 Subject: [PATCH 50/61] docs: improve README --- README.md | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 1d6fcce..a0651fe 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ Below is an outline of all functions used in the library. - `pot()`: Savings Rates Module - `vow()`: System Stabilizer Module - `end()`: Shutdown Coordinator +- `esm()`: Emergency Shutdown Module - `reg()`: Ilk Registry - `spotter()`: Oracle Liason - `flap()`: Surplus Auction Module @@ -95,10 +96,10 @@ Below is an outline of all functions used in the library. - `flip(bytes32 _ilk)`: Collateral Auction Module (per ilk) - `clip(bytes32 _ilk)`: Collateral Auction Module (per ilk) - `calc(bytes32 _ilk)`: Pricing Function for Liquidation (per ilk) +- `getChangelogAddress(bytes32 _key)`: Get address from key from on-chain changelog ### Changelog Management -- `getChangelogAddress(bytes32 _key)`: Get address from key from on-chain changelog. - `removeChangelogAddress(bytes32 _key)`: Remove key from on-chain changelog. - `setChangelogAddress(bytes32 _key, address _val)`: Set an address in the on-chain changelog. - `setChangelogVersion(string memory _version)`: Set version in the on-chain changelog. @@ -134,6 +135,8 @@ Below is an outline of all functions used in the library. - `setContract(address _base, bytes32 _what, address _addr)`: Set a contract in another contract, defining the relationship (ex. set a new Vow contract in the Dog) - `setContract(address _base, bytes32 _ilk, bytes32 _what, address _addr)`: Set a contract in another contract, defining the relationship for a given ilk. +- `setValue(address _base, bytes32 _what, uint256 _amt)`: Set a value in a contract via a governance authorized File pattern. +- `setValue(address _base, bytes32 _ilk, bytes32 _what, uint256 _amt)`: Set an ilk-specific value in a contract via a governance authorized File pattern. ### System Risk Parameters @@ -143,7 +146,7 @@ Below is an outline of all functions used in the library. - `setDSR(uint256 _rate, bool _doDrip)`: Set the Dai Savings Rate. - `setSSR(uint256 _rate, bool _doDrip)`: Set the Sky Savings Rate. - `setSurplusAuctionAmount(uint256 _amount)`: Set the amount for system surplus auctions. -- `setSurplusAuctionMinPriceThreshold(uint256 _pct_bps)`: Set the relative multiplier of the reference price to insist in the swap. For example, `9_80` bps allows a 2% drop in the reference price. +- `setSurplusAuctionMinPriceThreshold(uint256 _pct_bps)`: Set the relative multiplier of the reference price to insist in the swap. For example, `98_00` bps allows a 2% drop in the reference price. - `setSurplusBuffer(uint256 _amount)`: Set the amount for system surplus buffer, must be exceeded before surplus auctions start. - `setDebtAuctionDelay(uint256 _length)`: Set the number of seconds that pass before system debt is auctioned for MKR tokens. - `setDebtAuctionDebtAmount(uint256 _amount)`: Set the debt amount for system debt to be covered by each debt auction. @@ -181,9 +184,9 @@ Below is an outline of all functions used in the library. ### Abacus Management -- `initLinearDecrease(address _calc, uint256 _duration)`: Initialize the variables in a LinearDecrease calculator. -- `initStairstepExponentialDecrease(address _calc, uint256 _duration, uint256 _pct_bps)`: Initialize the variables in a StairstepExponentialDecrease calculator. -- `initExponentialDecrease(address _calc, uint256 _pct_bps)`: Initialize the variables in an ExponentialDecrease calculator. +- `setLinearDecrease(address _calc, uint256 _duration)`: Set the variables in a LinearDecrease calculator. +- `setStairstepExponentialDecrease(address _calc, uint256 _duration, uint256 _pct_bps)`: Set the variables in a StairstepExponentialDecrease calculator. +- `setExponentialDecrease(address _calc, uint256 _pct_bps)`: Set the variables in an ExponentialDecrease calculator. ### Oracle Management @@ -226,9 +229,9 @@ Once these actions are done, add the following code (below is an example) to the ```solidity import "src/CollateralOpts.sol"; -// Initialize the pricing function with the appropriate initializer +// Set the pricing function with the appropriate setter address xmpl_calc = 0x1f206d7916Fd3B1b5B0Ce53d5Cab11FCebc124DA; -DssExecLib.initStairstepExponentialDecrease(xmpl_calc, 60, 9900); +DssExecLib.setStairstepExponentialDecrease(xmpl_calc, 60, 9900); CollateralOpts memory XMPL_A = CollateralOpts({ ilk: "XMPL-A", @@ -245,9 +248,12 @@ CollateralOpts memory XMPL_A = CollateralOpts({ liquidationPenalty: 1300, // 13% penalty ilkStabilityFee: 1000000000705562181084137268, startingPriceFactor: 13000, // 1.3x multiplier + breakerTolerance: 9500, // 95% price tolerance auctionDuration: 6 hours, permittedDrop: 4000, // 40% drop before reset - liquidationRatio: 15000 // 150% collateralization ratio + liquidationRatio: 15000, // 150% collateralization ratio + kprFlatReward: 300, // 300 Dai flat reward + kprPctReward: 10 // 0.1% percentage reward }); DssExecLib.addNewCollateral(XMPL_A); @@ -274,14 +280,22 @@ DssExecLib.setChangelogAddress("MCD_CLIP_CALC_XMPL-A", xmpl_calc); - `liquidationPenalty`: Percent liquidation penalty for new collateral [ex. 13.5% == 1350] - `ilkStabilityFee`: Percent stability fee for new collateral [ex. 4% == 1000000001243680656318820312] - `startingPriceFactor`: Percentage to multiply for initial auction price. [ex. 1.3x == 130% == 13000 bps] +- `breakerTolerance`: Percentage tolerance for liquidation circuit breaker [ex. 95% == 9500 bps] - `auctionDuration`: Total auction duration before reset for new collateral - `permittedDrop`: Percent an auction can drop before it can be reset. - `liquidationRatio`: Percent liquidation ratio for new collateral [ex. 150% == 15000] +- `kprFlatReward`: Flat DAI reward paid to keepers for liquidation actions [ex. 300 DAI == 300] +- `kprPctReward`: Percentage of liquidation amount paid to keepers [ex. 0.1% == 10 bps] ### Payments - `sendPaymentFromSurplusBuffer(address _join, address _target, uint256 _amount)`: Send a payment in either ERC20 USDS or DAI from the surplus buffer. +### SubDAO/Star Spells + +- `executeStarSpell(address _starProxy, address _starSpell)`: Execute a star spell through its star proxy. Returns the return data from the spell execution. +- `tryExecuteStarSpell(address _starProxy, address _starSpell)`: Tries to execute a star spell through its star proxy using low-level call to avoid reverts in case of error. Returns a boolean indicating success and the return data or error message. + ### Misc - `function linearInterpolation(bytes32 _name, address _target, bytes32 _what, uint256 _startTime, uint256 _start, uint256 _end, uint256 _duration)`: Deploys a new general lerp contract with the associated parameters and returns the `address` of the contract. From 3996d7083f66bf449fd55ccca88cf20963dac1b4 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 12 Sep 2025 19:43:20 -0300 Subject: [PATCH 51/61] refactor: fix tests Update tests to stop using ilks and pips that have been off-boarded --- src/DssExec.t.sol | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/DssExec.t.sol b/src/DssExec.t.sol index 77ae20e..84edc91 100644 --- a/src/DssExec.t.sol +++ b/src/DssExec.t.sol @@ -112,13 +112,13 @@ contract DssLibSpellAction is DssExecLib.addNewCollateral(XMPL_A); - DssExecLib.setIlkDebtCeiling("LINK-A", 10 * MILLION); - DssExecLib.setIlkMinVaultAmount("LINK-A", 800); - DssExecLib.setIlkLiquidationRatio("LINK-A", 16000); - DssExecLib.setIlkLiquidationPenalty("LINK-A", 1400); - DssExecLib.setIlkMaxLiquidationAmount("LINK-A", 100000); - DssExecLib.setAuctionTimeBeforeReset("LINK-A", 2 hours); - DssExecLib.setKeeperIncentivePercent("LINK-A", 2); // 0.02% keeper incentive + DssExecLib.setIlkDebtCeiling("ETH-A", 10 * MILLION); + DssExecLib.setIlkMinVaultAmount("ETH-A", 800); + DssExecLib.setIlkLiquidationRatio("ETH-A", 16000); + DssExecLib.setIlkLiquidationPenalty("ETH-A", 1400); + DssExecLib.setIlkMaxLiquidationAmount("ETH-A", 100000); + DssExecLib.setAuctionTimeBeforeReset("ETH-A", 2 hours); + DssExecLib.setKeeperIncentivePercent("ETH-A", 2); // 0.02% keeper incentive DssExecLib.setGlobalDebtCeiling(10000 * MILLION); } } @@ -214,7 +214,7 @@ contract DssExecTest is Test { osmMom = OsmMomAbstract(LOG.getAddress("OSM_MOM")); clipMom = ClipperMomAbstract(LOG.getAddress("CLIPPER_MOM")); xmpl = GemAbstract(0xCE4F3774620764Ea881a8F8840Cbe0F701372283); - pipXMPL = OsmAbstract(LOG.getAddress("PIP_USDT")); + pipXMPL = OsmAbstract(LOG.getAddress("PIP_ETH")); rates = new MockRates(); @@ -237,10 +237,10 @@ contract DssExecTest is Test { afterSpell.ilk_count = reg.count() + 1; // Num expected in system // Test for all collateral based changes here - (uint256 _duty,) = jug.ilks("LINK-A"); - (address _clip,,,) = dog.ilks("LINK-A"); + (uint256 _duty,) = jug.ilks("ETH-A"); + (address _clip,,,) = dog.ilks("ETH-A"); ClipAbstract clip = ClipAbstract(_clip); - afterSpell.collaterals["LINK-A"] = CollateralValues({ + afterSpell.collaterals["ETH-A"] = CollateralValues({ line: 10 * MILLION, // In whole Dai units dust: 800, // In whole Dai units pct: _duty, // In basis points @@ -579,7 +579,7 @@ contract DssExecTest is Test { assertTrue(spell.done()); checkSystemValues(afterSpell); - checkCollateralValues("LINK-A", afterSpell); + checkCollateralValues("ETH-A", afterSpell); checkCollateralValues("XMPL-A", afterSpell); assertTrue(spell.officeHours()); From 1fb220254b8772da8f8e6002ccff70a45f5331d9 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 Jan 2026 19:57:31 -0300 Subject: [PATCH 52/61] Fix dust/hole ordering in tests and docs --- src/DssAction.t.sol | 11 +++++++++-- src/DssExecLib.sol | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index fe2da9b..ef88f06 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -157,7 +157,7 @@ contract DssActionTest is Test { address constant UNIV2ORACLE_FAB = 0xc968B955BCA6c2a3c828d699cCaCbFDC02402D89; function setUp() public { - vm.createSelectFork("apr_15_0"); + vm.createSelectFork("mainnet"); START_TIME = block.timestamp; @@ -803,8 +803,8 @@ contract DssActionTest is Test { (,,,, uint256 dust) = vat.ilks("gold"); assertEq(dust, 100 * RAD); - action.setIlkMaxLiquidationAmount_test("gold", 0); action.setIlkMinVaultAmount_test("gold", 0); + action.setIlkMaxLiquidationAmount_test("gold", 0); (,,,, dust) = vat.ilks("gold"); assertEq(dust, 0); } @@ -827,6 +827,13 @@ contract DssActionTest is Test { assertEq(hole, 50 * THOUSAND * RAD); } + function test_setIlkMaxLiquidationAmountLtReverts() public { + action.setIlkMaxLiquidationAmount_test("gold", 100); + action.setIlkMinVaultAmount_test("gold", 100); + vm.expectRevert(); + action.setIlkMaxLiquidationAmount_test("gold", 99); + } + function test_setIlkLiquidationRatio() public { action.setIlkLiquidationRatio_test("gold", 15000); // 150% in bp (, uint256 mat) = spot.ilks("gold"); diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index c6552cd..3264fcf 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -806,6 +806,7 @@ library DssExecLib { } /// @dev Set a collateral minimum vault amount. Amount will be converted to the correct internal precision. + /// @dev Ordering: if initializing an ilk or increasing dust above current hole, call setIlkMaxLiquidationAmount first. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set (ex. 10m amount == 10000000) function setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount) public { @@ -827,10 +828,13 @@ library DssExecLib { } /// @dev Set max amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. + /// @dev Ordering: if decreasing hole below current dust, call setIlkMinVaultAmount first. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set (ex. 10m amount == 10000000) function setIlkMaxLiquidationAmount(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-hole-precision" + (,,,, uint256 _dust) = DssVat(vat()).ilks(_ilk); + require(_amount >= _dust / RAD); // Ensure hole >= ilk.dust setValue(dog(), _ilk, "hole", _amount * RAD); } From beab6b52e1496f8ab44cfc430eccdb9e18b14338 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 Jan 2026 20:00:07 -0300 Subject: [PATCH 53/61] chore: re-apply `forge fmt` according to the latest rules --- src/DssAction.t.sol | 15 ++++++--------- src/DssExec.t.sol | 14 ++++++-------- src/DssExecLib.sol | 4 ++-- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/DssAction.t.sol b/src/DssAction.t.sol index ef88f06..136028c 100644 --- a/src/DssAction.t.sol +++ b/src/DssAction.t.sol @@ -348,9 +348,8 @@ contract DssActionTest is Test { vat.rely(address(join)); ClipAbstract clip = ClipAbstract( - ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip( - address(this), address(vat), address(spot), address(dog), name - ) + ClipFabLike(LOG.getAddress("CLIP_FAB")) + .newClip(address(this), address(vat), address(spot), address(dog), name) ); vat.hope(address(clip)); clip.rely(address(end)); @@ -972,9 +971,8 @@ contract DssActionTest is Test { GemJoinAbstract tokenJoin = GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), ilk, address(token))); ClipAbstract tokenClip = ClipAbstract( - ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip( - address(this), address(vat), address(spot), address(dog), ilk - ) + ClipFabLike(LOG.getAddress("CLIP_FAB")) + .newClip(address(this), address(vat), address(spot), address(dog), ilk) ); LinearDecreaseAbstract tokenCalc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); @@ -1016,9 +1014,8 @@ contract DssActionTest is Test { GemJoinAbstract tokenJoin = GemJoinAbstract(GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), ilk, address(token))); ClipAbstract tokenClip = ClipAbstract( - ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip( - address(this), address(vat), address(spot), address(dog), ilk - ) + ClipFabLike(LOG.getAddress("CLIP_FAB")) + .newClip(address(this), address(vat), address(spot), address(dog), ilk) ); LinearDecreaseAbstract tokenCalc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); diff --git a/src/DssExec.t.sol b/src/DssExec.t.sol index 84edc91..ca65ac1 100644 --- a/src/DssExec.t.sol +++ b/src/DssExec.t.sol @@ -71,9 +71,8 @@ contract DssLibSpellAction is // Basic cob setup DSTokenAbstract xmpl_gem = DSTokenAbstract(0xCE4F3774620764Ea881a8F8840Cbe0F701372283); ClipAbstract xmpl_clip = ClipAbstract( - ClipFabLike(LOG.getAddress("CLIP_FAB")).newClip( - DssExecLib.pauseProxy(), DssExecLib.vat(), DssExecLib.spotter(), DssExecLib.dog(), "XMPL-A" - ) + ClipFabLike(LOG.getAddress("CLIP_FAB")) + .newClip(DssExecLib.pauseProxy(), DssExecLib.vat(), DssExecLib.spotter(), DssExecLib.dog(), "XMPL-A") ); GemJoinAbstract xmpl_join = GemJoinAbstract( GemJoinFabLike(LOG.getAddress("JOIN_FAB")).newGemJoin(address(this), "XMPL-A", address(xmpl_gem)) @@ -338,9 +337,8 @@ contract DssExecTest is Test { stdstore.target(address(chief)).sig("live()").checked_write(bytes32(uint256(1))); } if (chief.hat() != address(spell)) { - stdstore.target(address(gov)).sig("balanceOf(address)").with_key(address(this)).checked_write( - bytes32(uint256(999999999999 ether)) - ); + stdstore.target(address(gov)).sig("balanceOf(address)").with_key(address(this)) + .checked_write(bytes32(uint256(999999999999 ether))); gov.approve(address(chief), type(uint256).max); chief.lock(gov.balanceOf(address(this)) - 1 ether); @@ -496,8 +494,8 @@ contract DssExecTest is Test { normRate = rates.rates(values.collaterals[ilk].pct); assertTrue( diffCalc( - expectedRate(values.collaterals[ilk].pct), yearlyYield(rates.rates(values.collaterals[ilk].pct)) - ) <= TOLERANCE + expectedRate(values.collaterals[ilk].pct), yearlyYield(rates.rates(values.collaterals[ilk].pct)) + ) <= TOLERANCE ); } diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 3264fcf..a16f86a 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -1167,8 +1167,8 @@ library DssExecLib { uint256 _end, uint256 _duration ) public returns (address) { - address lerp = - LerpFactoryLike(lerpFab()).newIlkLerp(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); + address lerp = LerpFactoryLike(lerpFab()) + .newIlkLerp(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); Authorizable(_target).rely(lerp); LerpLike(lerp).tick(); return lerp; From 878c6642bcf4859673b0d315c4f91e5d715a10e1 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 19 Jan 2026 20:23:42 -0300 Subject: [PATCH 54/61] Update mainnet Line expectations --- src/DssExec.t.sol | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/DssExec.t.sol b/src/DssExec.t.sol index ca65ac1..f075644 100644 --- a/src/DssExec.t.sol +++ b/src/DssExec.t.sol @@ -118,7 +118,7 @@ contract DssLibSpellAction is DssExecLib.setIlkMaxLiquidationAmount("ETH-A", 100000); DssExecLib.setAuctionTimeBeforeReset("ETH-A", 2 hours); DssExecLib.setKeeperIncentivePercent("ETH-A", 2); // 0.02% keeper incentive - DssExecLib.setGlobalDebtCeiling(10000 * MILLION); + DssExecLib.increaseGlobalDebtCeiling(10000 * MILLION); } } @@ -225,7 +225,7 @@ contract DssExecTest is Test { // Test for all system configuration changes afterSpell.dsr_rate = 0; // In basis points - afterSpell.vat_Line = 10000 * MILLION; // In whole Dai units + afterSpell.vat_Line = vat.Line() / RAD + 10000 * MILLION + 3 * MILLION; // In whole Dai units afterSpell.pause_delay = pause.delay(); // In seconds afterSpell.vow_wait = vow.wait(); // In seconds afterSpell.vow_dump = vow.dump() / WAD; // In whole Dai units @@ -430,7 +430,7 @@ contract DssExecTest is Test { { // Line values in RAD uint256 normalizedLine = values.vat_Line * RAD; - assertEq(vat.Line(), normalizedLine); + assertApproxEqAbs(vat.Line(), normalizedLine, RAD - 1); assertTrue((vat.Line() >= RAD && vat.Line() < 100 * BILLION * RAD) || vat.Line() == 0); } @@ -456,20 +456,21 @@ contract DssExecTest is Test { assertTrue((vow.sump() >= RAD && vow.sump() < 500 * THOUSAND * RAD) || vow.sump() == 0); } } - { - // bump values in RAD - uint256 normalizedBump = values.vow_bump * RAD; - assertEq(vow.bump(), normalizedBump); - assertTrue((vow.bump() >= RAD && vow.bump() < HUNDRED * THOUSAND * RAD) || vow.bump() == 0); - } - { - // hump values in RAD - assertEq(vow.hump() / RAD, values.vow_hump); - assertTrue( - (vow.hump() >= RAD && vow.hump() < THOUSAND * MILLION * RAD) || vow.hump() == 0, - "DssExec.t.sol/hump-sanity-check-fail" - ); - } + // Flapper auctions have been disabled in favor of the Kicker + // { + // // bump values in RAD + // uint256 normalizedBump = values.vow_bump * RAD; + // assertEq(vow.bump(), normalizedBump); + // assertTrue((vow.bump() >= RAD && vow.bump() < HUNDRED * THOUSAND * RAD) || vow.bump() == 0); + // } + // { + // // hump values in RAD + // assertEq(vow.hump() / RAD, values.vow_hump); + // assertTrue( + // (vow.hump() >= RAD && vow.hump() < THOUSAND * MILLION * RAD) || vow.hump() == 0, + // "DssExec.t.sol/hump-sanity-check-fail" + // ); + // } // Hole values in RAD { From 3bedd216dbf718ced64a63e263c407cbae32dc1a Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 20 Jan 2026 11:33:16 -0300 Subject: [PATCH 55/61] docs: fix confusing natspec on `setKeeperIncentiveFeeFlatRate` --- src/DssExecLib.sol | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index a16f86a..94a54af 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -806,7 +806,6 @@ library DssExecLib { } /// @dev Set a collateral minimum vault amount. Amount will be converted to the correct internal precision. - /// @dev Ordering: if initializing an ilk or increasing dust above current hole, call setIlkMaxLiquidationAmount first. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set (ex. 10m amount == 10000000) function setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount) public { @@ -828,7 +827,6 @@ library DssExecLib { } /// @dev Set max amount for liquidation per vault for collateral. Amount will be converted to the correct internal precision. - /// @dev Ordering: if decreasing hole below current dust, call setIlkMinVaultAmount first. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set (ex. 10m amount == 10000000) function setIlkMaxLiquidationAmount(bytes32 _ilk, uint256 _amount) public { @@ -881,7 +879,7 @@ library DssExecLib { setValue(clip(_ilk), "chip", wdiv(_pct_bps, BPS_ONE_HUNDRED_PCT)); } - /// @dev Set max amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. + /// @dev Sets the amount for flat rate keeper incentive. Amount will be converted to the correct internal precision. /// @param _ilk The ilk to update (ex. bytes32("ETH-A")) /// @param _amount The amount to set (ex. 1000 amount == 1000) function setKeeperIncentiveFlatRate(bytes32 _ilk, uint256 _amount) public { @@ -1167,8 +1165,8 @@ library DssExecLib { uint256 _end, uint256 _duration ) public returns (address) { - address lerp = LerpFactoryLike(lerpFab()) - .newIlkLerp(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); + address lerp = + LerpFactoryLike(lerpFab()).newIlkLerp(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); Authorizable(_target).rely(lerp); LerpLike(lerp).tick(); return lerp; From 2c88b268be799870ac87d11a87679651ff248bb3 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 20 Jan 2026 11:38:17 -0300 Subject: [PATCH 56/61] refactor: add sanity check in `setKeeperIncentiveFlatFee` --- src/DssExecLib.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 94a54af..3c3aa0b 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -884,6 +884,7 @@ library DssExecLib { /// @param _amount The amount to set (ex. 1000 amount == 1000) function setKeeperIncentiveFlatRate(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-clip-tip-precision" + require(_amount * RAD <= type(uint192).max); // "LibDssExec/clip-tip-precision-overflow" setValue(clip(_ilk), "tip", _amount * RAD); } From 859823a003c508a9f3868974e648910f3d65cc00 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Tue, 20 Jan 2026 11:39:52 -0300 Subject: [PATCH 57/61] chore: re-run `forge fmt` --- src/DssExecLib.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 3c3aa0b..16887cb 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -1166,8 +1166,8 @@ library DssExecLib { uint256 _end, uint256 _duration ) public returns (address) { - address lerp = - LerpFactoryLike(lerpFab()).newIlkLerp(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); + address lerp = LerpFactoryLike(lerpFab()) + .newIlkLerp(_name, _target, _ilk, _what, _startTime, _start, _end, _duration); Authorizable(_target).rely(lerp); LerpLike(lerp).tick(); return lerp; From fbb6cb73a5b76ff91adf98455a893ace025d5488 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Sat, 24 Jan 2026 12:54:07 -0300 Subject: [PATCH 58/61] fix: enforce stricted sanity check on `setIlkMaxLiquidationAmount` --- src/DssExecLib.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DssExecLib.sol b/src/DssExecLib.sol index 16887cb..12cb5b6 100644 --- a/src/DssExecLib.sol +++ b/src/DssExecLib.sol @@ -832,7 +832,7 @@ library DssExecLib { function setIlkMaxLiquidationAmount(bytes32 _ilk, uint256 _amount) public { require(_amount < WAD); // "LibDssExec/incorrect-ilk-hole-precision" (,,,, uint256 _dust) = DssVat(vat()).ilks(_ilk); - require(_amount >= _dust / RAD); // Ensure hole >= ilk.dust + require(_amount * RAD >= _dust); // Ensure hole >= ilk.dust setValue(dog(), _ilk, "hole", _amount * RAD); } From f68b450f3b67b3ad2de329ecd6eb8a2b0ba540ce Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:05:07 -0300 Subject: [PATCH 59/61] test: expand XMPL-A integration assertions --- src/DssExec.t.sol | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/DssExec.t.sol b/src/DssExec.t.sol index f075644..f0db17f 100644 --- a/src/DssExec.t.sol +++ b/src/DssExec.t.sol @@ -83,7 +83,7 @@ contract DssLibSpellAction is LinearDecreaseAbstract xmpl_calc = LinearDecreaseAbstract(CalcFabLike(LOG.getAddress("CALC_FAB")).newLinearDecrease(address(this))); - DssExecLib.setLinearDecrease(address(xmpl_calc), 1); + DssExecLib.setLinearDecrease(address(xmpl_calc), 6 hours); CollateralOpts memory XMPL_A = CollateralOpts({ ilk: "XMPL-A", @@ -213,7 +213,7 @@ contract DssExecTest is Test { osmMom = OsmMomAbstract(LOG.getAddress("OSM_MOM")); clipMom = ClipperMomAbstract(LOG.getAddress("CLIPPER_MOM")); xmpl = GemAbstract(0xCE4F3774620764Ea881a8F8840Cbe0F701372283); - pipXMPL = OsmAbstract(LOG.getAddress("PIP_ETH")); + pipXMPL = OsmAbstract(0x7a5918670B0C390aD25f7beE908c1ACc2d314A3C); rates = new MockRates(); @@ -601,6 +601,18 @@ contract DssExecTest is Test { clipXMPLA = ClipAbstract(clip); joinXMPLA = GemJoinAbstract(reg.join("XMPL-A")); + // Wiring + (address spotPip,) = spot.ilks("XMPL-A"); + assertEq(spotPip, address(pipXMPL)); + assertEq(reg.class("XMPL-A"), 1); + assertEq(reg.gem("XMPL-A"), address(xmpl)); + assertEq(reg.pip("XMPL-A"), address(pipXMPL)); + assertEq(reg.xlip("XMPL-A"), address(clipXMPLA)); + assertEq(reg.dec("XMPL-A"), uint256(xmpl.decimals())); + assertEq(clipXMPLA.vow(), address(vow)); + assertTrue(clipXMPLA.calc() != address(0)); + assertEq(LinearDecreaseAbstract(clipXMPLA.calc()).tau(), afterSpell.collaterals["XMPL-A"].tau); + // Authorization assertEq(joinXMPLA.wards(pauseProxy), 1); assertEq(vat.wards(address(joinXMPLA)), 1); @@ -611,6 +623,8 @@ contract DssExecTest is Test { assertEq(clipXMPLA.wards(address(clipMom)), 1); assertEq(pipXMPL.wards(address(osmMom)), 1); assertEq(pipXMPL.bud(address(spot)), 1); + assertEq(pipXMPL.bud(address(clipXMPLA)), 1); + assertEq(pipXMPL.bud(address(clipMom)), 1); assertEq(pipXMPL.bud(address(end)), 1); assertEq(MedianAbstract(pipXMPL.src()).bud(address(pipXMPL)), 1); From 74f7115dfc3de8b23c49888184d426f87804e911 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Mon, 26 Jan 2026 16:17:48 -0300 Subject: [PATCH 60/61] test: use approx assertions for rates --- src/DssExec.t.sol | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/DssExec.t.sol b/src/DssExec.t.sol index f0db17f..184a096 100644 --- a/src/DssExec.t.sol +++ b/src/DssExec.t.sol @@ -320,10 +320,6 @@ contract DssExecTest is Test { return (10000 + percentValue) * (10 ** 23); } - function diffCalc(uint256 expectedRate_, uint256 yearlyYield_) public pure returns (uint256) { - return (expectedRate_ > yearlyYield_) ? expectedRate_ - yearlyYield_ : yearlyYield_ - expectedRate_; - } - function ray(uint256 wad) internal pure returns (uint256) { return wad * 10 ** 9; } @@ -425,7 +421,7 @@ contract DssExecTest is Test { // bc -l <<< 'scale=27; e( l(2.00)/(60 * 60 * 24 * 365) )' // 1000000021979553151239153027 assertTrue(pot.dsr() >= RAY && pot.dsr() < 1000000021979553151239153027); - assertTrue(diffCalc(expectedRate(values.dsr_rate), yearlyYield(expectedDSRRate)) <= TOLERANCE); + assertApproxEqAbs(expectedRate(values.dsr_rate), yearlyYield(expectedDSRRate), TOLERANCE); { // Line values in RAD @@ -493,10 +489,10 @@ contract DssExecTest is Test { // basis points used assertTrue(values.collaterals[ilk].pct < THOUSAND * THOUSAND); // check value lt 1000% normRate = rates.rates(values.collaterals[ilk].pct); - assertTrue( - diffCalc( - expectedRate(values.collaterals[ilk].pct), yearlyYield(rates.rates(values.collaterals[ilk].pct)) - ) <= TOLERANCE + assertApproxEqAbs( + expectedRate(values.collaterals[ilk].pct), + yearlyYield(rates.rates(values.collaterals[ilk].pct)), + TOLERANCE ); } From 27f476b4ef0443febd41c94a13f451cabe80c0a0 Mon Sep 17 00:00:00 2001 From: amusingaxl <112016538+amusingaxl@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:19:59 -0300 Subject: [PATCH 61/61] chore: add audit reports --- ...rity_Sky_DSS_Exec_Lib_audit_2025-09-12.pdf | Bin 0 -> 1187987 bytes ...antina_sky_dss_exec_lib_jan_2026-01-29.pdf | Bin 0 -> 454467 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 audits/ChainSecurity_Sky_DSS_Exec_Lib_audit_2025-09-12.pdf create mode 100644 audits/cantina_sky_dss_exec_lib_jan_2026-01-29.pdf diff --git a/audits/ChainSecurity_Sky_DSS_Exec_Lib_audit_2025-09-12.pdf b/audits/ChainSecurity_Sky_DSS_Exec_Lib_audit_2025-09-12.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2b71e170635b28062e6d40d4771d042c154e1423 GIT binary patch literal 1187987 zcmcG$XS5X6wgw7FHlcz7qVDRPbI!3k=UAOnbyw#MxD`x*k`!bkf`W=5qGAFQh=K$` zJfeV@4k`jF!Gs7(&{y4na__nCj{D=iF&HN!W*RRg?J2h!OL-f;Z9Su>aP zxZzs0(Xu8}JqEY}HHes-eip4a-rSWhppHB8L^_6rrldt4@n1OsnU1{e3 zX|N~DFgh)}hv{jjTDR8F7ccq~eee8({sx`vlBKwpE~TkX>=p<2_ys0`f+8|CiQ=n_`Al4~J7JYf&h4L7UpMjCGRT-f;E z;(*mgxu>)D^8y7OsREqt%G7K%;ADCD#Qs$8P%p{L>ZkEoJaTN4JLvN3wDQX>Q9eDXyhOLcbYCvpt+!w9`w-o;*K^r|0h)#8r62KyNK4)!_>j!^J!RXgDgEvQ%|eW zMipo2$tFup^a1_7w~?$gYsm&&N#BYJ^0y}00v_*DT?$ai++F4US9Sg`x_sr~?e|Cc zBd47@MSlOP>km!5`BmM0qh>xG{-(cKHD%Xa4fFWv+uz;v%CmiTO}|(6w2!`ha^auc zPk&RdciqzG!Uv?x#KB-=6J#VDzSw zQz9$=JiSW&!sN-X9(f?Q2mY@8K6#}@eZyCeN^aS^Zc)p$d>}k~r)2Me)5~J=H(xpO z2OXTSdc`WoroFt zKR($d`eF0ozzcuee(v#Ef{%`Wbzs3q{OoT(hpsne?!S6Q;4IXB>6P!lUK-dk==v`( zGY;*W_n!E$SHAP7J)6c%|DtxwPai8kzKZF&?S1`sxIZ6%^YMu0tNAy!r|&%)nRfi! zPktK{FSXB3c#|y|yJE=;Q#?a%d2_}``5S&t?izV+e+q1k6l4GOW@F2dPhV;l?_c|# zA2@Mp{}{JCeB=~m6w9$PY0aJpwp zV&uZbv%NE>SW15m)b9TGsC8!^?HRv1RMJGj-urwj=KOn%jx}TyJ7DK}RgEPJA z$8~!LKX^-FGjpDIYdbJy%Jdm`^ivi2_L#q!HdvCnF*^o@TPuy?eHFM@2@)#S_oNtI; zdvpUkbNj}7zC6YJX24DI55M{u&~4j#{P5- z{>`@do~;Y+{`B6nKO8%qsy;aENP_5OEepMqzZrLCs$^aAewRO`z1#kf@5XP2-o9LZ zZ1j~wS6bZ54)kum=ZZ;0%o*gaYu}%K)AN$XVBA8_uIa5w=97y*&3`3aS$T!_lyfw<& zzZt_^Umhxd;l%KI?h*=`95E9Oc3LLZ=DuyybM-{yccsO?yTZ#&YoV zWk>JX|H^RwzGpnUejaQ(_2;ln<911APJG8T`}CX1`WKt)%FpWSGUTe#-e(Xz)sBi*)?iX7cN_?mb6#+*Otx?fw2czS=M@e`@6b8Dl+?+xRcFzUY7ksAiT zbN1VA5rWM~#l|76vv}NS}@y&57>P zJoMI7+p|w^09M|%`sj^+{&sWt;d!@&@xvckc=W1IUXTie;X|)xmW^;o7E(tpCvFdC zF1u!Q{Per+$%kglBSrQ;YmpAdq+~q7Czn6*()42Z+Xdvxc?)|`jLIe!XF~z zTnifWZ><8mvp?R|ze*hZ&FgK!ln;oq>QMM0r0_(_}Io|ITp9(D6d+f@UEEvTQAIv=U=H7G9&J4&_VCH15du(IQzA5=Hp+_f_5HU6H)(uc*9D=<4*pMPI>`p^bn* zkrnTL5xx0F`X~J-r}p=39d&SG@{>p2?!WQajvfDzh&$QpVjk62OVx&_mQ2IvlVX$8 zBkUxzZno1;Y#BT)6jXG7XK1of?9|P4Oat1li>|u;xH!b#>8IxBb6md8QYh z*y?0y50dP{q|Oizg3fv#c%jee@Qcf%Gh75-ou-b!C|WRSwH@e{=@E4WiC*l|dA+zN zbq5YrI$~c)@NR?V{{z^o72Oz_i#Il{tb5)KQzJX`Rw|8cdi$%|L|H&5B|j1 z-eEnvq{dMLUDHi>ItNUfLKv?b1dhCh?9X^N^f%m#N$W>me$U;hPlg>I;oQ2>rPCkU zH>)`8r&au4zg%?gUFfUNzI*MH&vHLa`ebcC=h?dlzS9c!zmxYwaO96iH%6|#ZpY?R z14fVNe^s#mhW**>K*R640ejA_moHrSv~la|lRq-<%&hx@_O_GI-22xZb1_0KZg9Wh z`i}*&$%GpY4e0Z%-ZF;s*TDBq%qMfEu{qa2F>L8`m;;+%D4ksKEp^@YhZhhIJ~0;h zV9cAmC9~E!zg&dh|KzNJPedNZf1P{s_95_kuW3=gL#If)cmMvVwI6Hb!ub2&5uPYb z=jca{`EmO30sV&dZ5F@TxN7DfVq{6biBIJY&KNk|lzQr#Pae)6`hHvX^e?MDf27#d zzD>6M_f53!JhA4A`&l>K`9k#}eSbVuUWm;7Vb!=Fet`CVi~RBSXJ6es*>g_5t@n)Y z7s9cfOVqQLKwp)PJ;z*seZP~q&?7gkervw3-&??j zu?IJQa|QA8na7Tmn*ARuGN|7R&pdW_^}V;JiBB!u@#7i4^r;(^cVSJVxUl}vQ!Adb z=-z+-imMjv%$z$l;;#c6#QA@1-$Z-#u?;u;GWC0(>-)Z8Q>G*9rpoRL&S7MRPr2jc z{dbHO5QmJJytp_LX~+9bnksg_ZW^+!D(|PoUWThEdk0K98XmzOzU{3ykyUeFXgor~QVj*`M|we@~&-Z_i!59}cwNEvOBS3=C|zvUd3u zcN$c~r){*b`hR&>e(2plj~KO7{mh)}mtDP3vvW>cz zPmiYD^UM=kr~CxAHFoXL=sl+&AM#-jZ}7SPlcrqr@POUPD?jb`>YbmxC>=M{@Xn5} zbrVNDI^>28U+g!(e!b$V*WS5d|BXNQqfL#!GjFJB+tABC0)s+U?d>B{|tUnagu`Euk>cVE4+`E%-a;H}|zjJxCJuO7H%>)XUR!$Jd# zcV7)W)PpPGyd%aA{ch;FDc8KibKUi{qlK9^;?~WP6#1q5KUKeJ8b`3t8)=$`yTOek zFI;n%*Hpkn339@EVBU5~#?TlIsbY@jagX)H@mD{nboP-5BOT^(dd+8cvH1ywd0^)kf*10!zuqLz|ASJY+&&*OKRdtw{0E+~ z`l=s~{CM#* z`H^{J7ma;u?3l5>u?u)x`C}GU7Hwa2Xwi4Pch?}H%U>B7Iu!cul^ARO!XMxFX7Q_M zil12Z{0}SWA1RjYdsePI#{{lttX-cBw_KDj@QeP-^nA5oqRJt^HPO21m4@r&X> znDFBC#ij>Mv$xwkpYHk6n^?PZ&CV-|-y#Iwv;1}ME`9Oe5cC|l_i^zi*|yuCy!DYk zsF%xU24^n5e&6+R+7C1j{V44ghzt!1me(A4@${z8H!mti)05tvRydGe{lQcFzI|oY zO8Qsh-~M5ebW!xheb=wEuiJU@s*{*Agfr|R@_Q%VyZ)+EpSH%6)=io8@ij-k-~ajt zzsx!?gm@eArQN0#UoD0{Ab)V>2Txvp#SK5-u!lan@lk#M>*E@885zc`_{7>1dwgHa zKM*>4`hD9cv%ed^xx9Jbr}EFvy?%yzwdLx$hMDj7t(f=S*qxWh?pyFeU~b@r*B(5T z`l;~K3WY>5T`^m6-CN_|dUg`?_vE<&=f8lZcO~3A) zm4~d)pNPLP;n2WO=B>N;%!A);rG7X2m+0^C*|`H3OnG_AN4f=@qtnx-=S`zb2L?FQ zuYBEpIez@EgDd;y^gT)DuKZ}_zw%So{Jv(l2A`bqA~njD6W230@t$O9*S?qk_($J$ zOI07uwUU}pcHP7G|7rcrI1Bd({vPP^)rFV8%o*Uv-gCWw&9^5GE;?A*antr+x1X8J z&+;dID4KL}q{+EN--`e9#o^{T=b3ox;deoO86X2v%T{J$SO z`V}-O@W;OQPfqz^{qmE`&rJAw{Ll&i-gkKIufc^WDE8Th&wm|Vb?E)$OOL;{E^zEE ze==N8T%CU)^S~O;(=V?#zfdrIyyD2RBX^B`V9~ehkKFd!4~sv4_lr;7{;GV(?*6kc z+cHFP^T=^;-m&eJv$#rK-je+H{^vIBJi7GA+P8Ce#P87kVEkq7PQz5g@^{~Pp#8CQ z&nLpCg?)l|Wx@ay z944N7?BuH-hGvAG*!%Cj(_dXC$lqqY?W@Cg?p}P;2RG4`kNkD}iCHHXE?WIw&a!jv z2csT+MEux<$;UNYr~Wc?`VIF=0xiYbH3xSse*VShzua-xf)`@HywO0<|$5{Ek|OP*1#I`{GK zpJZ3AKXL5wPZB#<-wW3OmY;Xb zTCn@T)VIlhzItl@N6$VsdBU0XxzzT}KNmkbx=?BU^69t4r}v&Lf0z0G;O+_epPpJV z+Bu=wWJ;H6xtQA*~(}ht+}Z z=X=t5TydA%%yl@+uJjkkKe`a@M;EYoJsdU{tsGb=$s6sma2qT46 zbFlxZ9#bn>%BR(pTnR=yGi}L<=cVFs&>i$=JICKO2$f8+!CxnkL?W9oeqf^|`dzklU=M!&63@cHhhFQK zpFL~O=8;1m+kf>O!H#~zRflYMt}%lZ)1bav`Y#hVj?YUT=c^RqN@~!a+owrYZ)sww z3dMVFY|p9zNspbw(fq65N7h-DD+bIucEy`ljBqg?A92|ixSoweuTN%bGZ?cx_kZ`= zAMXL%`|q82_UJ5T&(@C%3%`z!fBTg|e{A^XQRj7|RlGA(l`7@14^G3UHW}tz&A4pu z)wqX)M@N?)Rz147rp#oq?&}9^Qwy%R;YReAc>B*^-EiMLv;5dy3vXr7loNhhJYm@H^Y1>)-uV5S_{clv!O0EVZ{52l zvDkEGWg)wF?k`uI`r^Ubk7q}#%!4<)&3zg7`PV;ZH{JQ}(n)jmjmdX!I`{9u@_72} z#xauyZ0s8_GyT?&+IJmt?9VfnNFJHA;8o94e_s0<9di&|h}=Bi`r_-l@|-n~%`pLe zZ$?IHtA9aK)~wrJF89%}I%?t1!z0(+{)=z>bGkQd`?U1XaM1%V__mDLaZh`4{|c{m z?SHE2QWpJ^>c3ldqfS_@HZmP2?iBi+_=1+}x@tL@uXNkkop&@Aq0^%8UBbNk18oJ{ zm2@j#t@NP2+;zDNReslPIF~xcrTl{?-)cJHh9_CBq24F@&&B@7lf1ZAcW%@*FJ5p6 zP)~9vD>=9$ECaph5ev{gFwpqJV6%k+^a2EZ5eYa#R0-Wyo>;^}!^`=o;mP-Q2C}&V z{`vUzw->@2J)e#k+)wq9@(cPGJ609RZhTd~R6yl+k1AKjE@4{z{zGny@uN?ewU&#B&5o7cj!*9#`^Ou3U z9$w`1ZCz&KK~H_?T?p>ZPkVnE#0!7>VPp~U*L;6^ zpMK554{dXYz#Z_QRef(GqgFk{U-Qu3?Y*C?ZiKHpXZvg0+iMp7Iq$Fh<>mS1HH*h@ zvwx0Xm%sXl`IFW>cGWhuM0f9@p*Jm0Hy*WrXcFsJ9G>;)@@8WR<3s%$x&?=4M3xs@ z(aMLmwfNT#U$t-kZLP;{-lpxhq z_T|+R(aC2|UU%a!r;h!nOI+laI(*dsKQ3{et-45j{ijP@N?-kd>=OJ-U4q3C^7tK> zVDVX~>7!S247QlV=64)}E8=lGL6pH0akzXmdojd(fe3Y}|ATk*L%pNlN2QK8ywdqu z{cL7f@M`Dj&pq$9f132ypSy*BnB(8CzJ2KfC)8i=miAJs-}Bc$xZuRyOLlO3&5na? z`GfbKxbw#y^0k%;2L=0qYmh!w+Yo-cz5I#5Fn31n~@|BmT`FB$w z6BT*mtmUr{Igr_sVbhmRJuaj_{s-rQZ+DGbXj_du_5S0BdA6r^jXZ7nbJ=#zbi%HI zV;l#N=Vm?e5zh?n8akG-2_aoMcO&nMrmJRmCkGP`GU|(5z{l|S{y^EhQ z`JTbdUwN&sPxAGvkcTZVS8|iHk3SqBODE zqcxdC{J$^5FS!{yfQSwsP4H-~l5-QN`t0RsX+i33Z^^BY;1g>}XJQDw7b;W46w2o0m42%A7s z;BE$}DjgyZYN~9RGK^DN1eu6bk%$>9b&?)uA(_eT8Y0u>oCYn%s5Q}+UVtPNYW-GPTAm0HXgO;*0JS9= zwyJiayV@5p6d<7xjJpyE*p20x%py*Apol`Z`LlRL9)V+C5UB=(o^Cs_P$~MGq9z85 zb4x9rC?{m=wv)tg7Pe}zxHwscU~o)@Bid=_d!z|pDWua^s%8((9q5J<=Sypw!^y8Pu>!0b|rju_cALoz_Ie8DwiEHHX9yk%3BLcQy_K&k2S6L@e4j zO({hwL9dzAgdt@FE6VyfIz=5T;3Y_%g#oMxhDkQL&18&31?q}cnuSCD60;U;L)v^& z6q80}B_mOXv*K0V{s2~Jtoz^`fhy*Z!)%4NnsH&RaRbzjdz2i1v35yUAelCbTcNy3 z;%<{7JV!8~VRF5V5`m)&*JyOASkKPnx)O5{SvuRIQ80DB(5scRU3o*$rP4JM1gS#p zvs4>(ZX+v*bS1#s3p$=VQ^>VwIYvmP&pGLYD8dRLSv;Gs%Yq#_dnx3g$!E~IwfIW7 z60xUQmKMqEbBalc0LiFi@kkXA#zA3rIO+Fix+2i1t++yyac5(=nm>w21LB~~gHJ?Y zP^2&;uDoBH3uScWZeN1WM~HY5-nzjQ6jjTSpcmidM$`$vl>o#NMmjGUsR6REyc%&3 z&;bB|cS$)6z|ab*bcVJT$ zIFhuKRmqxVx4M|F0WlfdE&?33f4qg1O#~=L7*@(exs<`=_uy+H3X>Pa>BCY=LZg&% z(pi!&=LPdnqOAa+u0Q~$6b^~3E`M2K5V`z*C<6-^B7oBZ7{nZ(XG?Ykk`|e~h$kg> zmHh=_HE(LN)nJ7bP38bcqZy%>?PkAIBm}{#->T_OOU!DD6sIng5C`LhNInW9XzmE& zb*L(sh%Foguzqqg5X&)RY=a@nAZm$@xct08*kXVfp<9*uAe#cy7)~ghEnx#JbzCOO zdx{N;IVEk{ZP|*>TV}ecoijt#>hS64NvVY>O9gnrOsr8;GAd0;!y9W+mDD(uDDlDe zOw8o5u?>#6j^D7$TaY{^r)2&yCjwMgSd@e)YENQS6wBf3lSL9sR>~5UCP&B^bJpSk zTO?8zf_zfg0&{Z&Kda;9XqW;jq_iT)^c!J$Ef(c6B`LPtnbBA<(l*k_;Zg=_lO9I9 z_QnAqBF?gbJXsx9+J*IegJ$$s8!8=GuZK`b&G%; zDCI**q<4}@NozD& zY3gW|r>qerL^sJJ(xMK50i;2i0p}A(Gc6#TGRV{tIm_Wd2lX1Ie$+|;Nh!lH5DP3g z3$lt3qpoNua6yq+gY|{7oLrDpsYtSk@f(5iW1 zOrRigMM>qR!ea2r1z`e)pyc3ri~=s_Q87s^%=vH*07;=PC?I31A#6ECs9Py$EGgTg zO@D@#k5g%2DN800d7(fmq$9WkIgcQLh!8>0jsqJuUQ)sUeW`!;g3~(UY!Xji2`3el zNGmOm1XV?AEnf*)n;|49rb94>mV!_$07kVQqf1JmCWGhqf@P)zu zGzlp)!jNR$s+LES6v29t% z?{5gC?qmtcgN!jrR-{a21r2N^EKG!SzCbYM z!qr73PMBb%F|*ZNJ&B{ZH5H#ZE+*IuDMTuS3F@f2l(aGJfjaNP7BoH{s~8R#2&J-(cxCJ0Mm9$+}V+uT*CBkoBqCmvxE2RCbuKvpjE5=jD7x*f; zNR`E7SeXg5+nfznSyH71@gcsUYBd_1k_$WF%feDjL@E-C)rPQ;YLjCfVp`|;&@7s7 zgm|WwEG3ewNOiv)Xhp+-Lnd>D!}@M6<@+Np9GJA=+hMV{WDE(Y9tfAGJ1lN5#pMmg zNm5oRovIO(_z)%|5LOX2TkrC8ARX$iSQ{f*wB^ZyFyc_c;*IzAT7RlVObB%Z&Ur8dkYp7|NKlK7MlcSQ1cqJeZ;GRzp7>v&9@DSYwB=5pU5NSJgK3^fGRwM^2 z@Kzt7Zc$2UMoM9{2rG;zmF@-NLp(=!(kpNC#r`wQ%iYQ2m6Nl?J75GcvIw&g@j28)@93nGZe zW2#xg7+A>-h;%wbvl62tjq}+Tz!F7R8mucaLm5LE^d)hMfDktE_-Y0SvS7N5nJt!N z9Z_gf*?Aoeo;O-%D^HKvLfM4Qp{Ou@TuV!6@-a(% z6oqB6#ylRYH3j4aL`j8nct&2tEfWjuDil@n^hJbHO8`Z#&*sJ1txQ^1s{o$|BJmtG zt}Td_?mUdha$>&NrsNyMMw7w8%tWjLVT(&~bEH9yGD9^X$*Lh|*Qp~Vw<{ik@IjVX zX_pYG-PtfPn~lvAqd+C9$ABf1laE>l&Xf){sJv{w84lQ85dmzpYOExZFM@Y#d`d&d zqI&@Xs~D_Xcs>tU)!{L9t%Phzv4uXID^ZnbgRF=WMT{OIUPo+_G*SrzqtB9^nNBP~ z4MS@r>S>k?j#{vaOFm;daUKIOs4f{_meiM_9LJB%2PwR!rUe#Z1J0SVrX>uz#pMXJ z>)km3AO}UXg}g)>WYtZnLd}RsbWX8W`1Ucl2lI;|y$$Oss(CJaNOP#sJb(Rq6TG19_Yd}WV0 zOO|mk1#&IO2BQ(N3}VDxa&=3Bq;t9qUr926)^dg9W)!r7Hq?PwX!$9mGwNAaqii53 zoAQL%E8}Nn6qbR9P!g`BQzgv?qhz)#NwMb$Wi^=4F-2-&NehuHN@g9C?O^|2uc4_j zl?j%lUY!dS3nhlAR?Kp3U|1na`fA-M2q{A@EL8-G6CoEImw{F{o`LXrgs9pPPsL zvtcENTZAZvq}0v{NSPFwfT-wb2>=iSmnxRBm0p%o6~U;fUW?XcH>WfrJfVj7uvA__ zlgv$9T8c29CX1KC9G{VHP^n7}lSo|Dou30!;#xHz*`}$xP*TVr0=tDviTIOhkBs^K;aKfuyF%P>ID17AKa#Ys1YlBUlN? zjW{rslGlA!j@}lP2c!(0Dh_#5>;k@1!GxJnG90uPbq>3k+iYVy>86u2DjJK}3Wj}L za$cpPi#cgR%)}^z-ZGfgCh&SRo}tLE#?En=WhM@m!o`9>Q5R*Bu&WAFGbWO=#;oHr zYIL?q0__X(XmnR!I*fJ zR2V`M<`6@NL(?GFjq!Ty-NKm>Gl&`vuS^})IMOzcpDo2U9R6G_(k>R9aDtRj>nn}0 z9`W!%v@ENWOM$W|sc4jQny`)x#jQGXCL@;@aojB4Vl;Q^D}X8~7{vI5Htb@#nh>#R zY%nfFZJ9q*#Ix(sT(D^LM)FK-ByUT(^FD>Z6N}PhTwc{4hb}~Zj5Sb*(@_xUhh+QWPIY%8+1Mc8H=dRS=i6 zn!kwr0|p}v8)CC%v=$^|@`F6SpviC=6EHvKb+izKp@@cDY^g!oDWd2>B{#)ahmfp^ zZ#4UYMSE3cDGO>!HEL|m5IN*6$U33|m>OD9m_@X>IaEi3SOT9`anK7TaT%9^Ezsja z4ys7fa5&oaC>NsCNiv$JRLnJUwJaxS^rBE8=B@|C=@>U`Q6UCo z%_hdYR+?TSl|itA5&TTE59pk+A}!B{l=yOjUr2F`xrW1)5=1JMI!KNcH5z{s z&*}p1*ePc(G>wkEF{sDNd<4! ziLtU!!z9P+hAc)=j(P23osvdZS|v)l1!apNpMoAYWVld-2qu*jy&E=It2~*`PO@Vv z5U&sour-)MFCelbRx;`;P6msm2PKiFIgRF5*wcxL7+MU>lUNdbIO(KYRRJ0pm#R5+ z3o59R*)nC^DTO$1GURhC6W^!cm8^9nBo;sdJL*Cz5=o_MR}5T>+Sm(lbqX;_#TVe> zp&AFHuSwWZJ5HZcbd933l9g8m4J1y39dglwa09gn)LE5e7hLCwpbEa;WXb%9(IklY zYl13$wxXeRPWdb>e4id|hEDt3K2n7v1f~%`D7dMLrLWd>8m7?rHPD4|1Sc& zkWr>nB1{QrHDgRjrn(YVZAH!^=OZi^RanrW5Ee@)dtpJSX(Vym5EcV+MCwsxrA1qV zAB0FDWyl?h0Z~;mY+`dfT6YAGqoVjHUd44*ia3%fJW43rS~~Pit}a(~bi&2xhF8=D zhD<=HOd>GQ2@Yzn%&O-?pf(ZCncEm@DU^}>kHU^}^s!AY6*)o%k7K<^P1&J9oL8ISI_x#{-iFx3K!qB^6m{hC zafm|(Y*8^2;UvtS0x>15QoJ}O#o+EnzF38!WaeQ9u}P)!=n6~`XTp$RxjuBB+~%d* z4S!AP%V)}Dvq%-@&|2J3Q<%+~$&osGK|>9Dv>slrDG~AG480j!)R;ZBT*?+Hrtl)2 zipk2UA`Xv2gnmA#OlW~Dry)1QDLHPQ+tIu=M5e2_SiMf=W$C44qbNaxRTOct8tIr6 zw&=r|G+B4hW4Ga`Wv3?643s2@JjW6yylo+-LkBl`o`Qy|Zb=DViXj)VDVpRGM--Q7 zc(6#Hlqnk2TC@t4qF@=4kdabeh)Dxf5y{VK#S{EYTnS+Si3^*c@E!iRKTC|YH1JvBQIHM`#YN&mSbIN$o5U!YlPFhr-%edQ7ztC4zizsy>y$lk) z5-m3&&q-tss;RRFwkzy|1@sD^>H-3Bce$=JTO=ZR(_BTjNC>q+zo@`zsEY#QKMtb? z(zax&;mzbT5*8>#3=$I?F1D1xtgKlhX<3YXfD@CENHJEkoN=T>bW*oA0_Yldh8v@! z;(8hxW!4uD)3Fv^DW58-;<{dbLQwVOlo^9q6xV}7rI(Z7=}a}TK5aG&SbSbM6Ovn5 z0f&H6qE}5RxKf00y1Xh%4F|xgMNJj+`5-aR+++mX;>8?jD1eEEqNFZzypHCSGQhC^|OP2)7u%_Ib!Q!>-nh~<$`3fDk3g!GX z?IkuFEY+hlHjCR9VyFLwxBT=i{mX- zG1V7zv>CQ+*_MZhpFpA*r03$}R1hte8WY!~`P@>V9R z;mhhkn;)kmbWM}bx8>UiTT6hu7X}tSC-2De^d_Od=r&h!^s*-*2m_W%Zw3=*ach!# z4&bYrCvne5ft1m4F*>0rLZxLH&cABOjJ&j*HCtuPD9I8HqDM_w>f2U z#o+HXi%}XSolg*RjVOs6b)z@T*;rbfR-O;90ZsxDpt;d!b?WdbK@9zp!CUrQfq*x%IR!dR07nLXd5C2)3SzCh(~H+cD9HOMbp$Y zS7YL;0DuJf>+U*>%rIf&5r9KhNlNyHwRRB*h9hhVCcxp9LTzC{LIB!gS|P#ie9|q%y%E!+5 zGFmF&!Vv|Eut}e;>(R?rqJUIaV_8x__M|1`q?(OZ7%oW!VG?luG)4lJEE z3fJK2q9iur$H~-I9i@X~utGbM!^yBHdt~=%8AP0ufyO(oP#)EEavWfSOj)xIWt{^; zOC&)ypa9A&1#Mu<8aMk=mv2tNCJy3g{Fu&P#H1ZzkK4l4YQw}BR5t0(0a&W>_gu^i8F1Q34?}$YRT#CWnNeV>l>o6<7A|nb9xT`b z9hMZ&l{I_nZH3jFE>dGvFA?Q7)7A)uz%_(r&UU&>nA8n^Kd&K|YXia<6|GMSVF=8& z(jW!Bv(!rscoT>wNXQtmXTy%lg+PRhuQ+jXxp z*Rm%R8g`NEEI7)vu$7NmHijovcybvt`psG}-*AN0nE+Jd|6K-Q0!*hI%F85#QoU4` zb14dO!x^hvL?Ta_KnxL3U{tDtMH>dZNNmZ~C<0+8vn{ed$y8~?1-TdRr^};aBUvge zlGz5Xqe>#TO(lF3V;3{Px-@n^m1i)LGD?|-amGeD&PTuBQ7TNAq;jT;BTj~kb(>Qv zNXwBZL#4?n(f{T_&Pl~eu)a{#dSiBVQNasI18Kid7)mt>=_HS)*6<}!el8uUMhq4R z;d=>juS8kJcidVoQtRbGC=#$hs3xL-Nt6nS|E|#DWKt}QpdWi-5vL2#>DljI6kyx18iiM&aL78rn^L-*Y z4k58Yil`<8+f+`x7s^m__EKIRPS;&NESADDHG-G;K9{W0RRd-s+1gEg5a6v)Rb*wh zYVxsE=qEc=EP88c013icQtgOS${ufufT7wPaw4f;ZUH& zKzNKmRFQ28a^`OBpls@jo-8?>_cg3ZS^=>ai=|6Ma5eZG^phw70(6*C1hTQqnofNM zcyN4xd7-{ic<@qTTW&$CRYDk%Xrlm=<{@%pF3>|4#mUxO!YNV`{Y@t)P1gWKZlLW{ zdMOSGPVHqD?DB%ER4}6Y*JB#4uz{2^NRn27ks{?V`LLMJ)(ExUUOm~C^C99|n0hHz1GZ~(GwpGQtw$W<=1BhbIf}kLXIZHMn zpn?eM$#?a;>zu1;+cxL6*18|-Jy&mi&@pW%*VGs^U?PGT9eu)Y1*X)zOGb=?DmwduUq;fCnoH3B8}|3a%tiW7=gAD zvfJ%>oAZ)-=$X40D(ISI=ti>LHR#_q*;J|iaWZ&JH{~_9%*!0@5#E7L|EzC{;gxsa zFKWc$D-D!fJ-CW?e9(Js70$EnNJXikudHtkg10Xbg?eqb8Y%aMbL(FslI`;H3G@lK z{@4Y`K2!9CSn^$5v^xt@=_v;|jg5(AP28dt7bqd--SUC7qvrA-geOr@jhc;Q_u`7r zd`4$a+6C_?bGRNXXdH!2Mgxt@w{6Xx3D+T}=(*9p!D{{3Af6h*~jR6Inc3 zch+yhQlGsFTgg+~QsdV6UY~i6A6dYwZ9`b4_WY@wca})H(YN^O?Hwa!FVAIc;QAGD~etxmy##4Wl?R>w3i=dHP(IfbCP6J?j zwH}`$JLiLpe|KUbyoW$=i(i3IcSdIrTlR`VCi zd%iHD=E$ZVCNOot_yBo6XfvyVdQ+0-o9@N2NqR#z^+>A(?l9WcT9lY-MM$`iO#=4Z zfVs{CdFb7%y-IF{6?XQ%h0PHlSZl(5G0V*pXzNtDG?7zJ32E+UPcy?sp{*QtE8Z{f zo&ZF)<+yS<;^pOxJ;m*|w#}c733|Myo_bN(SIuO){KjnWD#enXo$=a^yk2dcqdz>S z%%p#3&GURzRbShc7mY^RZvjQhmUI}Br)sLQY5+^Utf5GZ=6>%>$*MnKQePeT0rMi( zh2kCqk}3sfbZY=CHW*v15M26ow+7_?{h3d)gZ#$G7n;g2eSW&>+bl(JMu*kc;xQlqlB(&&@%jXC9W|e@?K3K^1V;SlejcI)*0A16m?C%>E1x&mF!wVh zXnXbFzS@)>D5!7kO8^1tlb3iuBX`?RGDR(Jg2uOn3Ci2p{J|Ssm?6mB@jQ$#&@v)# zq0g4O!wM{Q0NYhE61k7D^L%LwQkc)-YEU%~IM3640-NCpZJe^T%lXDKOHrDMN)e??p z03S?afd{6F>@d?V4qEwZ=h(czhCi^^pdOubHpqV;o5UhKVgM&q{B*&2XiISb;-uAT zX%9BNGe~(Zj_yyB=BKH7A7OWR?ObEqlpWk?zc3{Q!*Sv0uZhV}eTH)7)N7bVle*HQ z&sjL$?rw)=<7V%S5$VBBny3@|&sjh!U}oM5ho#>$X2ts+ZGK@4VK@2*kx|qH~c-9?Xug{0|$3{o0w6CgpA9FDJVa zPw#NQZ4720{G+?OH9cJZPhmt353Y9AHsM!p>7_IfVP0EVXOvwUM^1O zfI7Z9iwqKvRjHmy7pyxAE!K?EUPQ<&ILo zF`KgiL$>jV-LD?PUVo#h+wR>EJy^Qpf|KT)q_nA#9oQ}(buX)&xi1zqtqjkRj#u(E zg%rl~`!+&kt?%FN0Lt`l(jpx$G*u;3#2h>-n_VfG|3Xv6)C&}RW&;yZB!0$+-F@Fj zGqbf9KRsf@X|n6-&pm_na2H&lf6&L$A!;R zcIrhWJ2TGjh*ZRGr?U#~-N(G(pFU;#K>LjtfsDmsJ4m}UTQBY6@qah~^itwGc(lFO zY3qBd>N_@Gwa3L6-i{Hw*&WX{2ll8ft7!2#DFP1@Oq^#uyKG=o;V9YzgyFleMLPL0 z1^!0s8I6bQaZh+<)nvap3q5kRJd-)SwU@toT_o|GLZ?W!la0J~#6LR>m)kZU$sep@ zCElILk2eiEB@Qf^YP|es9?#P0`mPqx=TW<2=iBwJo-3b5nJD&q+41n@WvTrvO>4DW4BxsS z#95~bzbkxJt8W{6J80Nq7Ac@g`5-rRx?KHAPtNhgBnIl;cJUwe?zU(!9eq#xXe%Tc4>d3xk@rFo8Aac!t0=T@^6$f(38#s@cRlM+EdN0> zzHQ+Qz$D(x#}yWa<^WgQF=HdRD0@)k-{&wXvzx%+6meOVzrvxEH+m zXkMZ4ZY{>ON7+7J_o!l1dk<5ae5WR2PJO%gj;_#})?qHj`AciXSfgr7@gK#1ni5)esCG5I9T<}|;B1>?JIvQRt?Irs_)bqB0a4}V z1h1(OKCjVdrfz}UaY;hi5>!|KN61|}#Z~=fo=dW5?i&wWZh-N^sh7q__}&FyJ-(cL zzjYvn%f}>Nf2?e+Svw@YWt$(c{DGc08Sd0dO?~*bV%rVMU+s_MY^2UEu2nA?Pwn4x zuatIr;rZ{m|9~Zud}|b%_5}2dv%WcnsT~GAjmfT;&T2u_0E+V!yX4h^>%LLwMhkf+ zGuT)fb(tZBF4pZAXHi!jyiDEx7L;PE@-|=RnjZE}ROXaxKaI|9kov)mvbziz&j2NE z%Gx505Zq~;Yt>Wjrnq@c{tqcvd()lVF^O8YcfJ>{7t%x% z2%B1i`qv(3m{OAns*9|Q_#>zxnY34(?Z+MxnI|M8#o`hPgN#UiJfP+1(+oV%ZA=r8+iOV(^A!4 zW#rAv%{Z~v^?q>gD{NrLSI^1x*}>{*RIK^}zDJI+@HAdTRo_`Mo;Xse$pSsc8_6|% zG5Je0Y^2(g_<7WhaSsmc8RPx)7m2{!BKcGFONM=fc6}QFFfZg_0e%jDFnPDUq02RV zz9FtOwE~0Q5{Vir33s^{d*^3SVWxpMur0OIgYa3a9_glB@2-!XaiZ<7ScUvqoEzX|ccm-O^L+Dx4^fx4r2Q1tN+H)m4Lgx__F1DFm>J zr6)!!ruTkljL&AaEGSAXg|nS+%{acQix|&y57-dHB`=M3H(lP1usLNjt)-0DBUlW~L$K3$UeOpCu4;0+ zkQO0b|7R-23Ru->>_xOxaz8Vn_C0gIC`+f9v72q#k^O^becI{jkHqJr8N8V5w&mTi z;*G`1PPjE?xt_&y)xnN*rH40OIy3LRk+EJZ<(l1xRXP^(fSUKmNw{f)k#I$3#CK-J zZD25XCbz+Y<;9&$%y(z~*RZH{OYu1@57Z7Qu~^gYBL)rs*&f5hc-`7-MLxs!GDxnF zvN`)(zqE?LvNw7gll_{^VGx--Pkr$DSSGBwDhC;5`V zg!uS^C<}h5(W_*158G*GkxES`$$U7Omp7^A{uor%b$JjMOkdjaXCqbY1>5^rlZ=~{ z3fx70mXw;YIm;tU8momlo z55rS(UNJ?Yr@O4cVKP#dhf8usGw^A@+Pid(2$Byjooh$^w7M-#dZxqUt2!L}zIEo@}~@u#lx`E~5vlY?51v2ZXs?;XkDE|yx( z>}*07$9r zEp}2%XOi8E>ug5>XjpIO#Qc<9f$Z{o8-hfZWWTr*iJk);3J=%+B16`;%?!XP~g_QPe5W0j>MwV zXZi7{deAfgsKFR{W$043+}DYzXqM6KIQUpfTI-rx!jM94BiC#ooGc!%Sd&LOjD5kN z%wiQE)?f_HPsD;dU2X+IB3S6E-DYcjZx3}1t?JJ+m7R|jI~cFuWKBuOsq*5nr8Ea! ztnQgCK8)4Od#=1NFZS61QGUy>EH5T=m>q}?j_eh7DxNPkHGjB1RxhtM({;!k+a&#+ z@1{fJUJ?+@l^0?SZ5Oh+@ie_xkgffX;xv<#DXq2{>ni#EDvu3sG5FGun}m*@KyY7` z#Du9oKyQidqUoB9-17CNevLcXBUhEZd6V_#Xn!$sN&jf=@4F*s)Jxp$wCh&5q1nn$ zN!q1e$7x}@XHq-9CrlFwr!$|w(pTdYq?T24ZpqI(YW$qk99fjtcq0A4r-%6a0^teR zV}!n)-@D%0A6~Y$=`^l6bb-TKhY?FWQ9P3}DX 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

6qSJ0YS2DD2e=cOABrZQnSyhMyM9qU!+wJphgb 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 BU_-P{U_$b{wmNHKS^sET1>5LR0BL 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∾Upa9|iR2UnX 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 z

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 z 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 z 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[td;;V&l6={h|YLw26FcwvaCf;E;RLg(hvGR<|=`899baFu{(mBP|{bDxxRc zc}I28DasZb0WsJR{^I445JEQ7#S(PqdY*`tR<79YYU|A`X23b4`F#C^P_1Ea4Dgv* zX`$?!6Y}53qfW)g?|d5a8%yrKans9`Yl4(3#^%*-#Av!IhVJ0BS{DJkhypv;O(Zl7^R&_-X!QuO6tO*}w(>xA9k1L-4`nG9nnc^H5qas(r(2QaLivlQ(d(-wc}jx zYx5Aa`6P_$Z4-w=cDK$Z-LJx;*&F(pSMT)h9b@|>*~wf*EIQt5c-wm-xuV51%} zUP><}qnS6ByYz==spH9$7vmptF-D2&$TXgGAO(geJTu?zOo4oAbvl)&Ha}kWI+CRj zSe#wZ>`*?# z>}X8y^3i<&0X_uCt$<1;oARyYI~~8|;lv2H$YwR$f!pcsHVA)TSOsYzlEk9H`|-F` z2VG>$O+&RcBg=D>M=KN7lsw*3q2i;~C_`kqLF2vUoX{1rjIMkhV#t|Y8@&T<`}GD- zEAD|v*>_g`t(aY?+{0PTm0^QYoH*Kt0((PKf7OVk9{gt=vO6ClDLNSCwzd-{;?D4VZVNUCPi0%7v<=|vnG7(5@ zcT=7!lw_$`e9uW^(^MTnf+|fMg}W3pZGaDp_%@kF{9Vn30-^E%Tk6Zhk0DVhQ;%k~ zksQjIGDvte7FOE4Z7s=b^P+_zs|MT2FPd#wg|sS+UiAVSqVlMdQ8_A~=k@vP_EC6n&ET|79R zXlzyafY8Z&o==O3^m){2SgVc8Ldo)SMw?h;(uv26%Na;vX>NNke05O%X1>YJuy+$5 z)W$jOXARaC00xu58IaO|&=&2c;C1YbifX^G2HMe}td{VliUj$#5oJLlm>g%Nf?l(k zox^$#ZG>Rz>M%8#Z)R57d1EN!>W2tUS&;0k#u zw$O{>QBStprQW_G<$1*?Q3)mM%9)itJdC05CN-BHi-+uJY<}njf1E5xoh{5%lavt` z1;(AUF)8v8BH~uR5I3r3kQ!7uCBB%vpsac@SzACY9motxe=0`q^FL+b^}fr!A%e(I z7_mV$BfZvhP=D9pzr}zyAmeQ$bDS*B;W}D>Zcu6(2wtr7ULo3sy z1S6TRT+5MJmhbLo=p6{=%ca>fta@}#V=5KiS7YeZslt5Yq-Dv)`$2ES;t6`9)@&y) zRZF`1&j!?-cvEe*pGu_bs<kgB?<0tlp(_olQ5?jl<`2W~@>#(|-L|+pR9^BpC-3jg%+&y@3 zmjFS71PSi$?(V_e-GjT^>?EJ$JKeWWch8w;ZqJ=R*w025RjaC2)mqPfe{WIv7071y z9N9wMY+QzOIuU(Aog^9Y$htEepkZp*(MZ@MqJ&Ssd4D2g5nc!IVezF5Ny*GaA!DLh zJ`!I6A>MsqUh@ExI1h zD4PJE0GnqU%+LTS+$YF;-5(F+(`f_!D*DpQXb>1(yE~Wm-paNwra|#@^4y0@U3##= zHwfuQ{T1)T(W$hZU43y#7>VUm9P;9-E$lKI1^=w7WSLc z0c~?n$?_=e2ttAv#gt@usRw-N8G!@vna~3|5Db7wuMkjjRiS5CT=re0IuFFN zX?)q9lV>|r2E&w~4dXYt^|_F>Bj7dHt`o?9WN5Dp&z;TSCu8zhe;R&@sSg(j2is4w z&EK1e5>Upeig(bf=j+Sz3b;|cxP?7s>awA?y559+C)~=J{Sd`N(Z_?Ue}%bnf~t3# zM2^ioADjq}D!&4IzobMktL}~eATmlOGl0PCmS}6~(uYakIdXH5;UBpIOv-4}pXoiz zFpsFQZ)Lq$R8;aXiM#Bmv7PZrxSE4#;Y!4IN-z#jshZbu+d&283w4mt2icyr4}wKB z&BxM2G2XkqH}qsd&r@YeN8^_Yo1ZpvJSWSeMZza;u7ot`qQu)WNkJCpBT*mDcL+Ow z^I9Y#Llkd9bNrg`G0wQbDUiB$)PW`E`DPfUb#&w1#W7yUd-N6fJ|l3#ht*}i-*&&+ z;oaM!>xsMyEr(F?O8G=R;eH-!Dvd_r2uwxEej`?hHsAMp-o+nu#%oJ0(`|)p&{I+_ zg%7nLKKeZOM8kh*V1T(W*+VA5HZ}}xaAI+o9_vxzc6sA2js#uMSwcOS_w17-sEt^$ zYHU66Iv!$}#juvJE@tI1)%8%2u5ps<^)h0^4@jc15^J&NB;f=a06l*;Au@Hg9o!Oe&)`>|6@=t*Kq zt`ABTXb@#*>P}Xb>Bng8o*uada$mS=T5b^-v9eU7FDe2{;8>IO4yKG!NnTINz4Nu4 z8sr&$whlCLaz+!;B+|@VJWMCO#QgvY0=zp|AJMl*D!5<8s#nuR&MR%fq?;{Xe%H2! z62zo)ipAAYgtG6bEAplZ%bm&-tR~xIV6NaysDy?u85hCS>wT43C46bfqgM02-EMhe z3iIqP_<8f$!^&#YN z8HJQd^l#y&-!=0FrSptDx&}vLshZKF5;r{9CfIR#b-+629QDK8nX#ffyR2Wms~TG_ z&!bmNPIL8uZYI#fyK+*83baAdzvHwnd{n=3Nr~*M8=e^|qM80kOJ{WVYD`&IdG%E| z1aj+<`Poe7u$AcX(%>vd5@54~Dyc!e2x^-!>ivtO8yk-b%3GBBFWS4~nGk;ZCavc6 zAbUesF7B7^D-VlL3p-PO$?l@%+t?RP8|QaN5Q^s|hyt5;_yqKJlPY}wH6_TqZLx!vs7IE&DK4B+5ICl>D#OayTQrYz2UewK-+MU zPOm6?x#bR%OW3}bUQzhPG#-l+`SQ59BAaAL;<#GQM~7$pWW3{yF&MP529R& zeK=kOlT!F%%ck!hGs#}Q%;O9v#LYA)e4Af5_ZjU`LkZKuh={11^Q*={k_LUdzJfZK zJlpr?X23M(?VCc2RX6ZvXkJsZ)DPQX)W_x%Fjy)vO&n7x^jjR3t$IEB0{G9qt=yjOR|nh1pHNfXhQJzB8xq26Kih z*+y1sb7sWeaHJI54wMN|?(3vAq;}d|C2WWR)k{;;Wakpt?SS4@)`(+0`vXvET@Jk~ zLPLl`91dA!`)SPg@oOsKI7j3jEA-H8@l{`>NOE}eKe-{FUJQbY~9p8^aN9`bJ3a$GJ*VbF=T8d`Z%rq@& z%&V-p%>Z3o&2Mbn9no2A&p}-`02=B}UMzTdGkV~;KAO^iPgPqmiYUxBxs$cgEA zekQe%Vl=m;h(rBk31Tqu)lO!kk|USE7mWa8pT>7*ljwrDb=ZMl`?FIxw4<0RsJq*Zf$8yirvx3i>A$Q-BJ^*OCA)`Fb7 z$gbc4g`9_EJHgKTsFojZ_dH}AQ@`pl(v}`wn#d=~aS8oOk0;mxdzl525R4Fn9nVqu1T>gprQK|s;&bZ%EG|`__x1V<$e&hf8SpBx9U2;!T&6w`UjiJ$oLn8 z>u=!FKS)oCpRC7s(v*?$H!w;~T?0V8(gC^zz%z0%u>6GceuYy1_$?y`pb@@fY>cdo zbO1t-od9sqPrUD+h4~m6e}%sOX`1i^5dIMeSi5+5G`x%(GMRz}9}blC5$`X^5H8{tU%F93)C zke~V$mIC0v|ES3CoZ~+OI068}|241mm-2og$>{$>#`>?2+aF_{5#Xx(POSm1@;~Mh zrr$~G|JYIe?+@L-KzIKMSpY`Hzd+Q#hXEKFe@%TX=lApYnXRbFl89v{OoUX}KQl(Ys5))#V|%%lba zH9$-W;a4+01~<*_A4!~D9}?M8w2n@+M1uV!K4TVe#hH527%SSxH*KgC?FUR%0sH`| zK_W9DlP(XRGEppOc=WXhMB(dt}ki}o_h$oPlHrvYN zjQuG362kf*>ad0L1vGFyuIq1~@PD-M@3YmfAr3(D@JC+ZmkbV+VMr8mo~5Is`ya$K!n;wo;yB^yy+;d zW8*A8pjCzge#PTx59H$lOaP1+nGT5nxdsgK5fI=Y5CO8&bB<>f2!lCA0S;_jV;Uq% zZjNNoi42MM!oz{ZTr!F zgc*^GDK{I>2SG>ckgqxRZ7f0kG#4MudlrU+HDANqJNZ!!KJ_=Ut^;BK9~(h#0TB)a zc_1K12mxL~r=>Qu@hdyuXD45;1e=Fb5l+HnAhx;^0Z)ClvBlSP1K@}7;Pphy>8<(R zT+db*_dScR;f+v}(VI(dM}+BFeGN6OUlTT?N??6{P2(ft2U3rBi15!5A!u9Q5+RQ+*2ne^jt&5y~bE`U} zbaexdN4_iJ<85&)Tyb+0@_Z-FVsj`TEyc)cw!+lRr$>Q@4Q ztdlOl=LjO}+hmmm5ZY-U1~0Lf2mG+l(Lt8?!?Ew#o0ZYnAMsCTLT_Jffxahx0louX zqI>ZH0kWQ5J=NV7T8jL-X!}fCxw!J|=e>$6pHGhB%gr3@69mCq1ZB=s6qS3nriG8v zwIIdGytR%)!_aoHK*?`jfs+@Vz*wZ1$uJ45$lyIwOtCD ze^3vV+11{c4=;i%$2gg!SZt70JSqd-HSAD$G8=~6yn)=zYO$b8`dgRcBp>d{S^Qy` z@7m;==vD5QLUznTl(*^pD=2-<2guFy3oJL)aB4o^TWjLh4YcL$2`LWCzHHHF!ODH;kN zficH&>AI5!x>Ud)UFqbe;y^-Kr&O2TZ>lp>Yd05Y@Nx~=rxf5TNr``c);QLNo4XPe z+|Tz3tt5ywgo&26NAOH+VR?FM+2ed4(`O$(gE2FaMm&T(i@=Z){E1Y4>L8vHoK|A9c3e6-Z|zh&b5slk{xuJ6(mPNaeXhe|Sg$bVn+7T0 z^=cla)EP65e65Y5B!lqNUYTfL4L)UI>e}G<><#imivyMtMa;^fqGlbvc}90*_Zc01 zVINH@(0efAwh>@T(0gNsTs%J}j*g^wLCP&%_3aM#!WD&3s9;%Me(|8)iHW*SwYjaD z%XAgegfs}|(WA%$acN_*DanPS7bN*O#0&=+s@EO5Cj-yT-{tyDXyILENsqZpQ^O+= zJWsEzUpf2^6Y+fkPG2uge9MD*SjSk~^Ko>gGx4w-+Ii3uT}Sou3{}wD2vZRrV)$fwQ%xwhqg8AGFY*3>s|iqi@sFE;Y} zM)407;9uFYF7IuWE~$WBWr;>jppK*>Xhv*7gNsk1YN`60#y%l*At(9*fbBX4h z>G&}?Q66Oj@%|!bwQv*r!oH;#gX6Wk3^_%9D~|kB$e9pd_wl?HTbmoZ8JYjF{d z$imMW1ih;r?&$ALqTSkHCRaJl+{yQc8E6c)#^roPrL3L^(T1{*9KvXxxfrQFtl5)@ zy5}*&2KgxR0#lkyt;#sR>7REm315#;%W|-?(0J% zF<^fih?$m9K)hMUbh|W=b*sfPZRy|lIV)!obyQHeI_MqDC5e@2hX~^~yNm)E$L{vt zXi-H_CYOKrlOTBo(+96aK|6>mc1b9rvK(OyvH~L3E{w2b>8dc6D31gokP}J>8r`;5 zppP+1#Ah_baFvW3r7VFgMwPo35Dfwo^#OZqS8wpTI2aDJ$r!sKl>l@>zra%UFR)wk!B%WT(o zhzG6(=wPQ-ypui*ymzUYf>||M#+N7XM8g=WOFE|_xR12}Iq==+@;|2h4Ea(nmLN=; z@-DMk2YdU2yV^(kk%OH5wsQywV+)fEZ|s?Ri7XrXBX62<=%ShCXmkW>C5d~9ViwE^ zNTRDvfDqbj=L3z-xHnHh+%p^7qf`agijusEx&a)Io9<|6r@h02FG&0@s=kiqOlyaB zum1D4;Zi9FM|d`BjvX*)UeAr)?s8ALC|p)_opMlSku<-WZ?nwdDePX}lE(>6^@BE$ z^2`^dc4B0>x=h_#eL}+5YW!O;`*<}C@AT%Gs2CocZd%?97AGzksk(g571~Rt0N(?H zm`8G-bwhT@el~}1B3^ITAu=r%Jl^YIk%E%#27LIfhDKdUcl%!SqKi$)+HyfsDt8^% zBO05pK0M&-y+0Vd^{9M9-ln+MJ0XITxo{+4#*av#;Ud z)uWlGdGc^DYTzIrB4mPHy6d)GW2f4Mp9nu@*GkCZ@H^j+fyt7QjGA+%@hUTnG6d}( zL2ez;QUu3cax6b;DAYBXKwm=Bn`dAy8HkBGz8^u{595){3_qYp@8O7xj&>njb^P+B z;UnH!kPXTyn*&mofLBw16H$ue?vvUF42eQ_Xt$@FO`--Y&Ck1FR6+YdOXXPIY+Iin z4`Ft3o5gfWWiSufK=nT`-#$3?l2KMSgbvB6;nl`YljmkXYYjB>4<-tiWBJKqilMvD zI=Ez3^=9Q)^gn*X{6wMmB9CRL--oCa2z;)B3o8{e;>~sH%HK%>?Q9<9ef3dX?tZ%V zOk^xv_Wl#FiJ}g*xlO*CX^c3~V7K5w`KHj8zniEXUkl~_!KQ_oGqA2M_o$M29xHiY zjKm?NC3+z3v?Z=KsKBl{cvn@P9i9{CtANGN4*6YjsXD<8GR89pUur*vj>i>#oJBQ) z54@8!3SOBvfJo>oYa6f8$JGmux$zG`!41>$z*OArZn>!^BE~F5W7eR`fDr=h^Kemi z#HsMgbAY?il8gNtuSs?3xczq8T=a zNo^?R@CEDCS@x#n#1yfGu%zZwOay#@I3+VnSn+G3k=(NEejPzgr4>tRAFj3`=WOX* zvhiMU&(YXu6X;nfK=6pcm0EVMDx7?XZiR{ z46pe2*64Oy5*XP|;`$v%pIR}gigJ*bqu@!@Sb1QT66kvpb1SM;-g#VzR2Masc(>VX z_fhBdMdoEe^^oSr9Hxe^sil5iuU^4$#4Js{9GG0$l1mK4YECZ~e(W&5RyB*27EvM6 znOFr2*&IkSGC6*?8{FL&_qlMGFy&(p4hFIYi}2#ec2Oq!e42x*5FmxnvL;ZazAm8i%2hNxVyi4P7+=vryLy|nyj7+ z8K9f)y}d;z$XPG&Q=?A85P2nQhQ05YhnIaSOs$lL^E`tu6r2<%*fccd1-}>m?(RMr zek_EM4^&*U;x6`VO=+5w97~t+#eb_sj|qnra}Ssgei7@lDBRW`${p* znJ9Lu&=8|xt11ESM7{%WjaDy88{va_Roxhib$rF5wi9fXVf53Y!igy39sPuO*{7@t zB^`=1icdlY4tXa03G*=H_F1!{n8&2(;m7D`Tb3x_Xdy&d$S8vAR6ZV$dP1`8XwbUf zo%;2{EX7SBHp|v1x>HX=~=#IP;`sgE1tf|1CR*eP*~(Jek_gt2KNLf z;rw~lV&rOwD$xv76ncL=8>#?QH(waOTy*ztXgb}(nSI&I&3ax@D4M-^i(EVh_tAOV zP@sWU+Rg`eGMI_1C?gD}-s@WDxU#lj7MZkOQ{_=;b!x#H3^CqTA|D>o+Vq_k!yDvU z5;+S;OibzAi1rh!?c5&!%V1~sLl_$2H=D8~18_5?BY=HJ8zv#AcQ?`P5N5b-lgyLX zrDPEf?M?BADscAp14eADpIsW?*<ed8H$cUDN zf3qYdbraL-Mti9p+M_=~O?M%~lA?&SpwW{JCVyU1{y{mttV4|XAS51cXmngaMKVhY zr0jA)ZT0x9G?#kgo)eXaSa*5B-P3m4Tr)qjlc`)yL>G%j_AQ2dKRfl z9^vIt3H&!JsYJWmxi!MKx<<4bKWF-03O3hRRFxY(C6CbFWZ8#RIRuM7nfLqazpKwv zp&o!mJw|1~%wSy%X7FO5+|r6!sOa{WdQs+Iw=Eqxr<8!mFtRV1)A|6(Jm#4_JMrnR zWi7VSlzdquI^onIkul3g{t9tFrn^*<**JUm6wkC6HPnsz2x{Lh-8lNO(c2E@;pwt` zC}4fA%9K!U{}99+m4ES4c}^&iz#T$8+d=@GwR?$?kQOMCpWc&2DE3YLvGerDyw%Kk zG<(S?TBK);<+S}lRA(~;oEQooM5w(txrJqN$RGUC>dlexu8|yui>oIGG-UDCPmFeJ zu=bWaLfDe$B2pRluj@-~7NQWsdaj1p7UDeW;hDpw@*SZjo`4LGCK2g*YFIj>7EK-r zL;B8YKCWpziUyxxskVpvpilK8>Vu{TdXqUGW%c6vKAlUOEmns3ySF)%51JyZ>u54d zp`p4ta@MZPf$Q=Q9#{^)9Ggh0OZw5ZmS|Dlg)<1qSq^9_!rVBzzwVY2v=3Ryt+t$) zsV`b}Rn-M$Gwa>kc!@e2p%PyYpJMkki&++bV{$x`I2ll~d|H=1eDD=|u+jeIs;5{w zT#8#NNv`!upsoVqBx7v$Vbd1eYf7Pet1L0Ia$lVU2#z;fg@U_-%oOfgU(w@X?pxh- zU&mxX8nLOakM{7#>JW8UBPe#&DxAjHy(S77!|g<<$;}5e9km$OZPLo9`?G|%1kA~9 z=0l%EtqxR@TM3<5=af9l$OD-5WA*)SYqnbRKWFv5Mt&-YOxkz#Fz)jrbKGiSds0}> zpvFJJCF^mxW$ydD94a_cgZ4nJhasE;BE$*^q!;jq&=@Ll$C!_{G4g*JC)!P_lep?+ zrx9wwF+RoNJlxK_)*(wCdq8AFA0n;8Wmt(OpI4{<@Z4yc#A6meVi;~>u+_(0%s^d6 z-}i83j zle?EeR-PT`1GqjWAzOl`w_fq-7YWzki|GXgSE!@FseNIZcYk+ zdjS*wG(URrDD^wuHov84x2)8+L=Qw?ca+6JLGv^g;5v{CreQP;vyspXf}*P;d~J6M zNQtq_R(q|#KvnK~W^M_XpD%Ih-bDp*E6-9HDQJa=J|9X=_-46e3k39fS$B+CKRa)B z7J#{1o9f$UfOb?v(>iNb4?qu%%g2@XhMAx((NAGU7`dT=m6_m*OFMBuo(65$!$vuM ztrkjCO8h!$tt8)irqV&0`5=KqbRZq^BB?i)LiUkkyM$&FyMb($>tHH4507-UTKTZo zXR;nFE}P>@H!S}SN}9i(cp_#aEvn6})?XqmglKOJpTsnY^lX)#{kZaKHC!o--}PD# zRAYx^LjcP1f~8P9<3L@0s%))9&|P@Xl+jX!ltXd<)=;hE6XEKcUNmGBLBFR7m4UDA zK|Fn3rQgUy^Nuz>AKHzcqhWHs?!B51Bc%m4(O8fO<9nxKEcSGWADt{DlJ80XR->EP z39yxgm~5hUnirm?ZvY*_L0XW!T?$OKe3J|vQvni$Lmd!Fxml>z-T}&M13$2@j#Q>! zvLZCGSNI^3NXaWn>%YBrSu-M9-KxKKUSwhBoE%hJ)0pGc11WLk+2ZP4cXPtMxMQi| z5HLHVRXe*Cd3_Wx7X!)1wTmK($3KkPRGT6c>(Jt6%u!ubk=GfmDbigP6Aa5eH+4JN zgQ#;)PJTgF)n0gdmT7bSI>I6z&(ytDG#LdW$Lg?$E||snQwh$ZQPXFO=GJ!ln+Rx5 zmDrw3l7$XKIeHiP;C6Y3F(|`KdGIKVB1BY1UOP>2+LPx7ccwl*Q{9GOCElZGy`m0eEI zoJ-biMwf42%Pu#iElQ~OF;~IEo<9?GFW-dhKR28h$WTXrU0``83Y$#+KsM}j(9&8h zZbm$vl$ZWiKc%+XgJmqKacX|LM5#w?j_Gw6>#({Zjv zD}P48M~SFaTB;l(6rXy11u9AYBeElgi!xr>0=_QKX1Bmki6h*~WsGl$PTSvHT09PI z)Ad?NuB5=_+P4BkO^41~Q7SR={X<1bq$iatLg1-XsjD~lfL zDa9bLd8<87$S)IT5MH+AQG1b6<9^=>&bdcs+Ci-)ig+?>%*fHZMz+aVWn5-XcHpA5 zQ>Qs;!-S&Zq=sOeCcy5g?3osieaUfc4yFlHd-G1Ms;r2y_Vr~U+U!gR9sBVByHT7w z{;F#Rvb}g!F*lw2sRi6e3>QiRyPSz>LtJ^>di>+7BCOAFynJIHN>s0cVsW+6jx$=L|`FEbjON}+S2#!LuAC~-uztAzxic#Au^sNp^o5Vz|ekU z+w9EB)3YptGxS+%RTKP9L&_Vp$%>)p>epAZ)UuCbayP6PcBHq}A%3nSlya%G)YRs6 zESsgrTr(3Z5##TsXB_bE(1w><`czbsx~Wy;j`-0O&G$!%}9t>x6 znBmtocaN#>L`@B%qx%q+d&_vi3tH{jS;*pEtyD6h37VCr$qST{-tA1Z53NL%EO~fBu z30!waAyJ2pA(Id^a=>Z1Qb@g|HAmR{U_BeDkUL5keLF%7ZP@f=NNG}4VA5=FSKrNc zNGFbQ+qA*@J87}xi}kaIgPc* zjpFD(Q6pTx*7k)7&E>$8iot23R$W6IrjK~Z<}!gMG_p0Z<1ZcubFM|UIGw&EYbLKw z43_V)rZj?+jAiD6uan_%Rpha287Y`w+{drxZnf5OI+@m~B;ymgC^E`qyYw^mmm48T z58vw}M^)q+mPp_TgIlOdp7{_kwKPgYUspke)>(J^%D_`K^UXb2Za||_V8FRbK?vzQ zb=9ig>&nHjq9XyMV3qrOQODOGM+5H%N?4;R(umV*ePw*MGVbHLc04x zXkyEHZ`R~JZY5d&br_;e`l7u-9&*zPOQ}MESBzXYdL%F#317ZWieIPp%;*XfhrBfb zE-WGWj@y>m#xVFP5rPiSJrm7jOKIj)Z=3E!%C3$?FqhO|QkO|EFg7gLJ+jM;6DE$I zC6)XWdt?qvLL4+IYJk4d8z(PjoT$*6tHUK~){<+MRv9F|eAf%Rh`ka9hnELcOmh-m zi4P4!Dks`})84MKB$YgZqPD^Wp4%V^O;ddmIr{2299z|Q=^as@WaFc{3~7*9S{r0(h3c^CkiS6;0(@wc{Vn8?Aalc# z47}%I9Tn_&MS^YRO8@MkGEmiree2DrRQQA&=nQ9=E5@U{<(!4RorCHdEb#j9Lcx0U zu+JC=bmZ;Mo}PJY^wZJ1-BabeismJeiss)w}{=ey3+E*4z?pScU- z^l7D?$a<}A-(d2~gxRi4elxeYn2~TVSEkz^Mcf`ayL#e%waU&>2AidJ^fgvDL-QU9 zPp>{fuQiBRMw8b9X!WEMOPJG3W8AK!YrsZX3pdZz8Dc18bcP!CV9}S0H8J=Kv`6$X zUY@*y|G{P-eA~h18#O0zD0K6L+HC0u zB44~59^0=q%h_aSWl|Q19oDb)mSvQ48xBZ{YL*|CcWL2F%%Z(|D?K_bR36svl=Z~a zPhz?py>$!4i`pnZxmxkFb2WpKt?GtlkTWFg#;S>~;e745;1?+Vob$K9#t(|%`zPrC zztsERmwGe)uvq`jA^c}RdVsCL|762{f%Ja*Qh%P&e!2rKV;_rbgTYI{`^tZzbdW)GGsb7j(^8-%?ywT|LVB@J&Ey0Pycgxq>Uc{kG!Dv z@E2;1M+ns7wu*HU+N?d29}ianxz3Pycwny1*2kgxfXwUNygP@bF;*^f85Z4bPEZaZ z0}R+4_}%>$42c1Zl3M2Y?L;U2r}wP$;}Hu7TIb{CPC3b2c7vzOD-P&*{gpm6vPDwg z2o)T)I<~RN+$}C%fYcq6TmN)RXuI0<@1X-Pprk-rN~0#a~)W4;EEz(3~ee+!yq`GKMSrLuon2mcxKwGh1$y*|Am zy%E5GZDK}mO8<`D><2^n{(p?11WdiZtx3O2u>Yo!{)Y(4A0_?X_y35X z%KnEEn+Xv2qPbMEr)HlN%)-IlhLF1MH-CzzU~y5oHb#9GjbQlWsU$AJ#s z@qO=?Az-F#Wkm@Ji2(_5VdvMu1B8Z#3$}pw9Pz3>^OducV0z@3w{3RHI>Tj&3`9U{ zPGM%G0I8}wfj>GVqR$(!3_XU(SFmW$uMxLl!3Wxx5L5(|t<#a9p`3xs#j|jDQxMr| zzb!^TU!Z@r?g#dVgn_YpMud-X@Zlz=(HBprg0+HiuIC*`GI>2Es!p`_ZuCX6<9P}# z%*o$Z0I>D-62mKW>zJxAj927ixF2f4%{#Q$My%gcubtF>FlTsmyE<$Os^-I03mM0+ zy+C16%{_z(-^@BkOtUT?w@9Fxjk<*C;?5_psQ{jT3@P?3p>h}94)tikBLK<1b>iSH z@*?Xm@QessRV~cP(HWTvnGH9FrT_X>;b6i0EZ(tX0gQ=#c0`jC-^Q@Oh7N>lhEUB; z{GKi!yQoBgIjab7$8QFEpWX{My>B8o^mc~2PuX!As}!d;i}3@+33dX0ER};;hplT) zX(s=6LhThU+(6v&(lG;>9eZ`6Qmln5*eLEFO|7M{LqAgjbs8}Y5e{+g*P%yP4uo(F z=I^ey;Om8-xw!}V(gk&A)q2!5yNI|AS>0*{ejHjJu=)(ttgUDLo?u}f_4we)rq7!g z2n?k9jaudhwD;IxNT+hwn#@c0avnt>rv9(SFg&Q=Kq5RoT-@+aYNn`XL|&)9jJ?#q zi~JH2m7RSU-InycNK5+h9LUWc>Wz;U&!Zjz7!3_93JM6Q=L>f<1nikA=}U;Rutt_o zr#G4h_jiQyIu2>>MFRzX&3ji-XqgHF-snZ_luXa7eESG}>qYb0+yAj`>Y01+C2;Mf zj*L^){ed6j5WrCC!p4Jku3XTMlmuvx*FB_%G%iB}Xv?d0@6rmCft7u4&yaU>M=Ih( zR);Tmq@5!0>%esr0_n6?FDS!lPRpy*rV#?2tnze0tD~@yFdz^w5hqTgG-<1RKN!j` z@HXwN7d}Nav*61678{;N5P|qA<{{+w?&Ebq_}}0fw56%*`|vd&eCt00_`1Lw9nXTD0+HLR-<(Sbio69O5x`zvodXHZ1bMsK zTr51ooC6EizW6>0jJ18O1A!oX0k>h!dIq;q;(msK1`_ z@cMaE#s+OUah@ELf>pP$izUNreGBM*X05^I62A<56jN!)dJ1So?rKJVF(2o`{PKB}>L z2TPUHl)fY4-y~b6Q1I!Z$C{Xp4s#9uE&gKusI*Rr?j(8~5oH z3iAg8m&~DS-+J})4zSMfZ$p_8`Kcpkop;^cdN4+*?2Yzt`rc6Wv^Eax!q_ZVe=R^$ z5Ubn7g1J$E>}e|)L9V+kFj%3XoGTXA0kgru)wl98OMI^o;;3$BR*LyfxW||ORUu=kmM_Po^Nv{K*Y5JYQ5YMzvd46c5@aY*|3A=T;AdFNFl{G-u3 zt_CqO48&o7eEvu@+vf}G_J<|Er;w-WCVplrKNPh`rmb9VSXFt!xR78R8ei8{;#o|% zN9;2^)n;59&t^684QHsVgDS;THORzPLnfWIN-8du*b3gSh!@I08T?Dp4@Qwj3A|%a z7Y~Ys_ZgSybi4t})(9mT9}>c(*Cq+~_s2(Tk!Y@=1#RBbv$m5(RoySD;m0{&4 z$UunuMLxArs>`8xtLIQr549xiG&aK(3|E-DGX>hx&$$Lbqb$$$7f?>rO`naJ;AlSR zwHt**-47BPKPh<)-atLnE|z?@As<01!1TeSaA#6xvY*PU`}(1$$-V$|)gSXX*{K=z z%mBv^tMT<`gRyb77C9eA3r-#GIIomM1fes|NLSOhG`fxhoo*?(xRh+{2JRxqDx2P1 zA8Zuehn0)Np>Ge);IPXW3yzb`RO6jo5tBR;wNRwy6fq4enU(Ej7y5VXOFnJekIUDf zJ#X<{=Vgt-54I z!g`Vd8z<+6j|b^7Ik5CIzm>Z(hJtA&$FH_~+6O^Wk=Xq7LLuk?XxHlWZ%8|r5u-Si0ERn|)ch7wl<&bWN1W9hwVuf%?RqrWfM{7mbla?O3 z?2Mc`GCWo%iTyT+#`_OL&tFGB@Cju-5#wzm#5o!Uow`{oL!4|j!}8d~yn7tL#)-=N z9NNH{>lNKUrq0(*H4~mcU9W@@L!c~keP-sGXw2+C6mju<$E@VMJE6=wW42t(4yB+g zIei*Sz==xf__ZEXTTU_}co|0WeTHeZx~Ir4TE6e(;b36*NoKk5gpXcw8PMCH zK;v!R0Eux0Qr`le3%&Vs8Ob=YIfQ8^zv!_W8;})L+`AqgMO$&008|S$#gOzc;?~Gk zsDn_lTHG#!NttGdhFVVL>AjVFB)ErjS47E5N}BU+@)m5`)3e?p*QL^}u3dw>Xc;ES zKxRv0=PXr<rYf> zS-A7A8#s$Sta91h&lIs_w)u)+2U?<{H1f4KrY0lsCXt{Y^v9A;&58}?m$@1XXs%lV z`Zw~jF|GIF!{XqjPzrHK@sw5wrvl4!YY@T}ZdjV=wVY4!T{AT+)6`yzfsG>J%wb{X zO`_6N@R+#IDU8QQrJh-E?mpwVQ>|<8kSP;+f~5A(y>(7;m#`0=ufX-?__ijFWMMlB zteG@^9)<<`8A~;rWyv1F3J2zvXSfXw@@TYifwd8GesUynx=)tY@@56UWI2fdt(~!U zmS^7$pE>7Cib}WM##8K-#)M4!?Ci|ur(WCTaY9clcC6VRFELU%O)>nr7L}fNc_f?G zN#5_uv4u`NFUPx>bJBA<%{LR^CKZ=*1_lqP>>jd+z|T?2n)B{C$;;UGxZlH9^ie-_ zbxDTz(YJmov;{t{P%+LURNf>X=y5<8xu}ADJa`CaA;gD?pw}F^dL93#qCzU7i^=C+1U!okN9zNDgrM+T?op&TjSBg+7&qL~fOG z&e7LTupZak^wE9s-5&Q@u$58A#5E1?XY@!6{6v!x(IgPt%w8pGBBaP^4Zd32mBU)I zxlq~eZvi2OH~_QF!CYOdVmDmY7Ib;-2#X6_`W)n7RP#1boR0QFcJ$x`T4oIse-I}~ zHG1QCw2%*5{2|{qdjuv}oDf6Z6)8b|SjzzTDrO0VLZ;XwIl3xO8B#{FkU%NL*$K(Z zd^Bb$mu|wAP7}HAa?4hic9>AVZ(<)44Rc2`S0V-qx;=~`f=IiF;->cuoPPv$7BYM|F6MZ>^OZX@ck zQ=6h#n+7${!fn$~blnljbO3*na1dyh9eFT*11W#|wN73GPHhuYj_)~}^z*UqVc~te zk@i_%3xqBYUuXEt%z^5wG9?fEyjO4Ijm_<1-f9)fo}bZcd=WGLv{r0w7>mPYVqMU} zZBH(gs}_H|by4?%Av50!dpGiC(==_{Mcfqgz{?}hg*9i=OO>ue#qLuOFhrBi?BAga)2Wg96jP%XGy(IMFb% za-i&!@}{RGQ(L5^9*ehOQ#YV0pY7z?9M;b8i;8rv@v%b92~DXNxA$eg8yo#j+5^@Ota{_$Ky1 z=H35A-djf1v89XJKyVGg9fCt}cemi~?(XhRa1HJj+}$leAh^4`yK`4$pWfZQ&pq8e z&Y$~zW3Xz$teR3)Z_QeR_0;nY4Xeso9j8SnfM~>-c0W@>56c_9FmGERNKqt ze9@ILoLFjku;OstKiieG`d|l%t+!TJ$W6VwQT}fG)Tm=bWdJsoP4e3&0TtN?dc}vU zGX~G2mZLP)lnA#c%(aBaI#s;<{Ot(uF}vowC4?n7DF$*-ngJd=Z?!s+$3On(3NBIzNq3NvYjGPAoO0762-_(WjquDnC;xBNxZkrAw57cEV3D!k9e=4m8!q!D#=!J~EchclM;59V?`zhj)|3VJUXa>f{z!ClP+pgWG z1z{H|x72``Ci0}APyRT@TJWTSzOC5m zHS0mXRiY?#h`#bBQu_b`nxu`xr|o1kML1uPNebasn=Gr_1y0b3y6GXsk2!}}&D#&P zp#Gtx!RE~;iV&MY&0s&I0OxSZp|tXus7ow;Fg#RtB$GO7+qh78dMVdkgdn!S09!cm zh)es6z>pd;=Cj2iPAkTvQG72gy(UkTncji?6jy;e6}@A>kpWfTRM>;PEkfgX`JZNjGqdvhHH6A zdBNMgLq%an9xk15sOkDr-kkyI{K;g+%sBiZC$-!SBAVZAO3CgjPtK&YQV zi+tfiY3%8#^h#*=mer~VZGhiIOvt=XGL2YsY3hlhW0U{--ku!GLX?r}1O^LAz*8X9 z!+9}Q+X9!l6k^nW@=lrtSpuDb89x8KO~wi-VkOMA z7K_2s&2xsK2^K+{Xq+QZ&NdUKcDzxFhOXo-*mWInpUwWqG1${B1SEb?vf2`3;W`QS9tA*V9*wK5uL!b_DdDaFJb zZm;{Dbam*P54lxa$905Bf89tE#Pkl$ED0%1_3GcOu3XG; zjH7C3?hh)ygKWYm#dsQ+$Qx?XCY{r2ZIK?zaMlc~bN`}VQ`-(~-()M_O3<k=tLQMp=Md;Q+En~ z?Qpv}y;#SX_LXH*<>7{n;y~WjaAn)o@v#P)yBr^}zF~V$J=Qe6@&d z+Lnk#jA=^#E5l+1D9ftosm{w>eU7!=)NQpRtFV+3O%ya5S5EI`6&#CHo=K6@3&DOo zhWwB#=?OtS4fu6~2&)RXzwE{nPe+|A%l$kq%j}eWcw8>3|B5za;^(0G&`bn7c^DE` zO>Y@qbGPx`MbX96Iy0M((RI$61syh+#=dtkEYPu0{ecz^mP@CKaYyx4>J8SbXU__^ zDPl4eyLqjoN?t)$>p``J@~`d2yR0OZ>NyZhj8WEgU`AW$pjTgMo*5BhUX7ZB9qC6} zvMWx#U`3`JimAsa_6=n@wm2{PIZt6Rbe%Ufb}V!N|0=5SRl3VcORaPxro~r2%{Bh4 zDQ6-hmBUa!fQ{{&wJ|s7T_v1)-Zw^aaI!`z#20aP|4bL-s)BUBeS>rkq=w106W=$S zB@u2*zis@Ladm3=`^3Rq))LN&m}B|mQ+1J2Tq6A3iT{NlCp{&ON1lLL#tKL@#?DsJ zr`uz9-)YrR%$zghly5MtXKbqApu*B=Y2j5*o?3ttH489p#V8>H-x`iX@VfNt5 zAupL33ieKje*k7acN5e!S3{W9QXwi$869VOwO})o2sNQjMdK3zWZAUm$9~X|XSZd1(oJt>@O+d8sGNN*jsvmgO;LTb5jZE@h;pfk2q-KOGXa*t9r##MNqM zGjzLoD+RvUoPu|1$4rvLWWKbgg?FC}wjn0V+0kD*V9FlazoeG-PA$~*COJ>*vo}|( z+JU>Bn9rn;V;0=0fk9#Q!vnYoxcRgLI-;!FVFmJFaBr`IeJAbpm#~9(;VvDQEr;+> zamev)L{A}!>!3ueo+lJOYjMJ9)({T*B<9ShrA?Wq5L?y$-0l2!7BtuyTg}#Ynu#r0 znL-uyyE78P?K&UIV8sXv6+;%qu%I(mHhtk8bg*ZeCLm?pm6#$rFDbVcq#AsscX>f& z26M);A^Ui76@Uy1!kM zJuxW2D)>bn(qryRu48Dvl))e!O|wdor&l2I5BjmPUOoq+V0Irf9UOlmPUklE=5~4? z0~L(K6vC?&5Cjk5kD;$-%Oe7-fX1mQk6z%6WajQKMJGJiI2$N9M1@v2WCE)c9k}D3 z)63T;pPNs?LOSuR=BS>iy?2RttOCn#q{J}Yfr+^*G?%Oix>B# zIlC+i2XiEnLpMp=wURKw$eNcSg%jlE00V9;ykT|NBD38)&oF&$auFBs)!L>@)3cL# zuXyMpIjH3Y<_6W>ocG4{@PWTo`Wo1WNJoNkA!LIOT6u+|-o!P#DADWB=qq+pq=wmRdV~0EbSD8OukVt;XqzFek?-0^RE^}X z5~D3Q{qA%d`izm#3`OM&_Pv1?s+&`yUCsr;`b=#Ve4T(v!+F1(9`1Y@YCRmElZT}K z>N_N&_I72(Xa9zDk}!0t>ne+L;^Hr;@*O9tUq`^{yK3|Ex?)dZj`xIHgjh`X9|^w} z-4gIC_qO)kFQ7)G(+{qKND0qIpvOjZaIf?|#KT`Ne$@TMbi1fxmR~AtBzp89NkKYg z@thJBbaq9tQ&!U#Stt_wUPMv61lDrPuCj{3`O1BEgnk&-4(`!y-#J*leLi^E@WDkF z58|vC7Ž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%0Du@RMoA*g{ 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 literal 0 HcmV?d00001 diff --git a/audits/cantina_sky_dss_exec_lib_jan_2026-01-29.pdf b/audits/cantina_sky_dss_exec_lib_jan_2026-01-29.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4d8aaf896e260da1241d41c696a9178e77d44b7f GIT binary patch literal 454467 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

S9-!%jaVtY25cE+}Y` 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℘MnfSO_7KvX(}9ghgXy?s4wsqtcmfhA2F^{ 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