Closed SidestreamColdMelon closed 10 months ago
Good to deploy
Spell Actions (Per Exec Doc):
block.timestamp + 30 days
)Executive vote - Month DD, YYYY.md
< >
) for the latest commitmake exec-hash $URL
cast keccak -- "$(curl '$URL' -o - 2>/dev/null)"
0x1b764f7d01469324cbac1379bcd238e56ed26cc4df05380fd154c68a3c265461
TARGET_DATE MakerDAO Executive Spell | Hash: EXEC_DOC_HASH)
description
// Hash: cast keccak -- "$(wget 'EXEC_DOC_URL' -q -O - 2>/dev/null)"
foundryup
lib
foldergit submodule update --init --recursive
Submodule path 'lib/dss-exec-lib': checked out '69b658f35d8618272cd139dfc18c5713caf6b96b'
Submodule path 'lib/dss-exec-lib/lib/dss-interfaces': checked out '9bfd7afadd1f8c217ef05850b2555691786286cb'
Submodule path 'lib/dss-exec-lib/lib/forge-std': checked out '0aa99eb8456693c015350c5e6c4f442ebe912f77'
Submodule path 'lib/dss-exec-lib/lib/forge-std/lib/ds-test': checked out 'cd98eff28324bfac652e63a239a60632a761790b'
Submodule path 'lib/dss-test': checked out '4ad127cf53eeaddfb7b8ad56dd4b13e57d6a0067'
Submodule path 'lib/dss-test/lib/dss-interfaces': checked out '9bfd7afadd1f8c217ef05850b2555691786286cb'
Submodule path 'lib/dss-test/lib/forge-std': checked out 'aea0b2685bebc883c09f5554d7fb481e85d0564d'
Submodule path 'lib/dss-test/lib/forge-std/lib/ds-test': checked out 'cd98eff28324bfac652e63a239a60632a761790b'
dss-exec-lib
dss-exec-lib
is synced as wellgit submodule status
) matches the latest release version or newer (NOTE: dss-exec-lib
as installed locally will use GitHub code more recent than the 0.0.9 release)dss-test
dss-interfaces
dss-test
(Non-critical)forge-std
dss-test
(Non-critical)dss-interfaces
import "dss-interfaces/dss/VatAbstract.sol";
)dss-interfaces
(Where there is a mismatch, use cast interface
as the source of truth)cast interface <contract_address>
to ensure correctnessLike
suffix (e.g. VatLike
), with some exceptionsmake rates pct=<pct>
(e.g. pct=0.75, for 0.75%)
X_PT_Y_Z_PCT_RATE
(e.g. ZERO_PT_SEVEN_FIVE_PCT_RATE
for 0.75%)internal
constant
RAY = 10 ** 27
RAD = 10 ** 45
internal
constant
THOUSAND = 10 ** 3
MILLION = 10 ** 6
BILLION = 10 ** 9
internal
constant
jug.ilk.duty
(setIlkStabilityFee)// Increase ETH-A SF by 0.14% from 3.44% to 3.58%
// Increase ETH-B SF by 0.14% from 3.94%% to 4.08%
// Increase ETH-C SF by 0.14% from 3.19% to 3.33%
// Increase WSTETH-A SF by 1.81% from 3.44% to 5.25%
// Increase WSTETH-B SF by 1.81% from 3.19% to 5.00%
// Increase RETH-A SF by 1.81% from 3.44% to 5.25%
// Increase WBTC-A SF by 0.11% from 5.69% to 5.80%
// Increase WBTC-B SF by 0.11% from 6.19% to 6.30%
// Increase WBTC-C SF by 0.11% from 5.44% to 5.55%
pot.dsr
(setDSR)PCT_RATE
is correct
make rates pct=<pct>
(e.g. pct=0.75, for 0.75%)
WSTETH-A
-> 750 * MILLION
// Increase WSTETH-A line by 250 million DAI from 500 million DAI to 750 million DAI (no change to gap or ttl)
RETH-A
-> 75 * MILLION
// Increase RETH-A line by 25 million DAI from 50 million DAI to 75 million DAI
ilk: STETH-B
line: 1 * BILLION
// Increase WSTETH-B line by 500 million DAi from 500 million DAI to 1 billion DAI
gap: 45 * MILLION
// Increase WSTETH-B gap by 15 million DAI from 30 million DAI to 45 million DAI
ttl: 12 hours
// Reduce WSTETH-B ttl by 14,400 seconds from 57,600 seconds to 43,200 seconds
VOW.bump
-> 20_000 DAI (RAD precision used) // Increase vow.bump by 15,000 DAI from 5,000 DAI to 20,000 DAI
FLAP.hop
-> 6_308// Increase hop by 4,731 seconds from 1,577 seconds to 6,308 seconds
CRVV1ETHSTETH-A
)
chop
to 0
tip
to 0
chip
is required to be adjusted as well
Set chip to 0
mat
) to 10,000%RWA002-A
)
line
) + Liquidation Oracle Price Bump (val
)jug.ilk.duty
// Increase RWA002-A Stability Fee by 3.5% from 3.5% to 7%
spotter.ilk.mat
// Reduce Liquidation Ratio by 5% from 105% to 100%
line
) + Liquidation Oracle Price Bump (val
)
// Increase RWA002-A Debt Ceiling by 30 million DAI from 20 million DAI to 50 million DAI
bump
RwaLiquidationOracle
with new computed increased price (val
)
val
should enable DAI to be drawn over the loan period while taking into account the configured ink
amount, interest rate and liquidation ratio (see below)val
is calculated with line * [(1 + duty) ** years] * mat
- rounded up - and makes sense in context of the rate mechanism. Minimum duration is usually in the Exec Doc of the spell with the RWAXXX ilk onboarding.val
formula (Debt ceiling * [ (1 + RWA stability fee ) ^ (minimum deal duration in years) ] * liquidation ratio
) is presentbump
line in format // XXM * 1.XX^X * X.XX as a WAD
corresponding to the val
calculation formula (e.g. // 15M * 1.03^2 * 1.00 as a WAD
) is present along with the calculation formula on the line aboveval
of multiple RWA ilks being combined, val
calculation is done once per ilk and added to make the total, with workings provided in code comments. The existing val
value can be retrieved by calling read()
on PIP_RWAXX
and converting the result into decimal.
We use only one ilk
spotter
to pull in the new priceaddresses_deployers.sol
as a commentProxyLike(SUBDAO_PROXY).exec(SUBDAO_SPELL, abi.encodeWithSignature("execute()"));
cast
execution. (Also note that low level call gas estimation is not done by our scripts)DelegateCall
context)addresses_mainnet.sol
matches spell codeimmutable
visibility is only used when fetching addresses from the ChainLog
via DssExecLib.getChangelogAddress
and constant
is used instead for static addresses
address
and wrap with Like
suffix interfaces inline (when making calls) unless archive patterns permit otherwise (Such as MKR
)DssExecLib.vat()
)ChainLog
, the variable name must match the value of the ChainLog key for that address (e.g. MCD_VAT
rather than vat
), except where the archive pattern differs from this pattern (e.g. MKR)DssExecLib.address
file is not being modified by the spell PRmake test
ETH_RPC_URL
is being used from env (i.e. no match
, block
or similar are active in your env)Running 2 tests for src/test/starknet.t.sol:StarknetTests
[PASS] testStarknet() (gas: 2153208)
[PASS] testStarknetSpell() (gas: 2346)
Test result: ok. 2 passed; 0 failed; finished in 58.60s
Running 21 tests for src/DssSpell.t.sol:DssSpellTest
[PASS] testAuth() (gas: 9223371487105614665)
[PASS] testAuthInSources() (gas: 9223371487099402314)
[PASS] testBytecodeMatches() (gas: 4234210)
[PASS] testCastCost() (gas: 1998557)
[PASS] testChainlogValues() (gas: 10835077)
[PASS] testChainlogVersionBump() (gas: 5611276)
[PASS] testContractSize() (gas: 8984)
[PASS] testDeployCost() (gas: 4214698)
[PASS] testFailNotScheduled() (gas: 14375)
[PASS] testFailTooEarly() (gas: 13607)
[PASS] testFailTooLate() (gas: 13584)
[PASS] testFailWrongDay() (gas: 13629)
[PASS] testGeneral() (gas: 39113710)
[PASS] testMKRPayments() (gas: 2131782)
[PASS] testNextCastTime() (gas: 353659)
[PASS] testOnTime() (gas: 1994262)
[PASS] testPSMs() (gas: 3357915)
[PASS] testSparkAdminTransfer() (gas: 2034842)
[PASS] testSparkSpellIsExecuted() (gas: 1997865)
[PASS] testUseEta() (gas: 352346)
[PASS] test_RWA002_Update() (gas: 2196746)
Test result: ok. 21 passed; 0 failed; finished in 963.16s
The spell is deployed at https://etherscan.io/address/0x2f34BB0FE10BCb5652390FD0bA3Af7879BcA4b62#code
Here is the simulation of casting it https://dashboard.tenderly.co/shared/fork/simulation/1977ded7-a885-46fd-a40e-1525ca5f3e4e
Good to submit
make diff-deployed-spell
)make check-deployed-spell
DssExecLib.address
file
DssExecLib.address
file (e.g. look under the 'Files Changed' PR tab, etc.)deployed_spell_created
matches deployment timestampdeployed_spell_block
matches deployment block numbermake deploy-info tx=<tx>
matches configdeployed_spell_created
timestampdeployed_spell_block
block numberLibraries Used
matches DssExecLib Latest Releasesrc
make diff-archive-spell
for current date or or date="YYYY-MM-DD" make diff-archive-spell
(date as per target Exec Doc date)DssExecLib.address
file is not being modified by the spell PRmake test
ETH_RPC_URL
is being used from env (i.e. no match
, block
or similar are active in your env)
Description
This PR implements executive spell planned for 2023-08-18. Relevant goerli spell: https://github.com/makerdao/spells-goerli/pull/222
Contribution Checklist
Checklist
officeHours
modifier override30 days
unless otherwise specified)Validate all addresses used are in changelog or knownETH_GAS_LIMIT="XXX" ETH_GAS_PRICE="YYY" make deploy
mainnet
contract on etherscanmake archive-spell
ormake date="YYYY-MM-DD" archive-spell
to make an archive directory and copyDssSpell.sol
,DssSpell.t.sol
,DssSpell.t.base.sol
, andDssSpellCollateralOnboarding.sol
squash and merge
this PR