-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2023-05-17: Final offboarding of YFI-A, LINK-A, MATIC-A and UNIV2USDCETH-A; MKR payments, DAI streams #343
Conversation
Checklist
tests' output
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
If by 'exec doc' you mean the spell copy and/or the contents sheet, you should likely check this anyway. We're not going to have any idea if this is an issue on our side when the copy + sheet is created. Apologies if I've misunderstood you here. |
Explainer
that is what meant by the exec doc. for comparison, the previous spell raises cap and it's mentioned in the doc From this above and the tests passing without
Check manually
Thanks for your comment! 🥇 |
The cap is only changed via file, so it can't be spent like, for example, allowance. Then, the generic test is not needed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Content ValidationOffboarding Parameter Changes
PaymentsPrime Constitutional Delegates
Reserve Constitutional Delegates
Dai Budget Streams
MKR Transfer
|
|
||
assertTrue(vest.valid(26)); // check for valid contract | ||
// Check the first stream | ||
uint256 govSecurityEngineeringStreamId = prevStreamCount + 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
++ on this... way better than hardcoded IDs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Checklist
- Office Hours
- matches exec doc
- Exec Hash
- Run
make exec-hash
for current date, ordate=YYYY-MM-DD
- Executive vote file name and date is correct
- community repo commit hash corresponds to latest change
- Raw GitHub URL is correct
- Exec hash is correct
-
description
date inDssSpell.sol
matches exec copy date
- Run
- 30 Days Expiry
- Static Interfaces
- ensure they match
dss-interfaces
- check on-chain interface of deployed contract via
cast interfaces <contract_address>
to ensure correctness - interface naming style should match with
Like
suffix (e.g.VatLike
) - ensure they only list used functions in spell code
- ensure they match
- Math matches
- Internal Precision
-
WAD = 10**18
-
RAY = 10**27
- Ensure they match with ds-math and the Numerical Ranges
- Variable visibility declared as internal
-
- Internal Precision
- Risk Parameters Changes
-
dog.ilk.chop
(liquidationPenalty) -
spotter.ilk.mat
(liquidationRatio) -
clip.chip
(kprPctReward) -
clip.tip
(kprFlatReward)
-
- Offboarding (Lerp
mat
)- 2nd Stage Spell Actions
- Set Ilk Liquidation Penalty
chop
to0
- Set Keeper Incentive Flat Rate
tip
to0
- Check IF
chip
is required to be adjusted as well - Use
DssExecLib.linearInterpolation
Not required ✔️
- Set Ilk Liquidation Penalty
- 2nd Stage Spell Actions
- Payments
- Streams (
DssVest
)-
DssVest
Interface is correct - Ensure that
cap
> max new vesttot
/tau
otherwise file cap as well - Timestampts match Doc (
bgn
,fin
) - CUs Addresses match Doc (
usr
) - Amount matches Doc (
tot
, if decimals are present consider usingether
) - Vesting Duration matches Doc (
tau
) - Cliff Duration matches Doc (
eta
) - Restricted (by default)
- Manager match Doc (
mgr
, set to zero for DAI streams by default) - IF DssVestTransferrable is used | ✔️ Not applicable
- Ensure
DssVestTransferrable
allowance is increased by new vesting delta (by approving thetransferrable
vest contract to allowance + new total amount streamed)
- Ensure
-
- CUs MKR Transfers
- Recipient Addresses match Doc
- Transfers Amounts match Doc
- Follows Previous Patterns
- Ensure Recipient Addresses match
addresses_wallets.sol
- Streams (
-
addresses_mainnet.sol
matches spell code - Ensure every spell variable is declared as public/internal
- Ensure
immutable
visibility is only used when fetching addresses from theChainLog
viaDssExecLib.getChangelogAddress
andconstant
is used instead for static addresses - Spell actions match GovAlpha Spell Content Sheet and hashed exec doc
- Tests PASS
- Ensure Good Coverage
- Ensure every test function is declared as public if enabled or private if disabled
- Local Tests and CI PASS
Using DssExecLib at: 0x8De6DDbCd5053d32292AAA0D2105A32d108484a6 [⠒] Compiling... [⠘] Compiling 104 files with 0.8.16 [⠒] Solc 0.8.16 finished in 3.57s Compiler run successful! Running 2 tests for src/test/starknet.t.sol:StarknetTests [PASS] testStarknet() (gas: 1405623) [PASS] testStarknetSpell() (gas: 2346) Test result: ok. 2 passed; 0 failed; finished in 74.03s Running 20 tests for src/DssSpell.t.sol:DssSpellTest [PASS] testAuthInSources() (gas: 9223371487099056011) [PASS] testBytecodeMatches() (gas: 2720125) [PASS] testCastCost() (gas: 1259107) [PASS] testChainlogValues() (gas: 9554910) [PASS] testChainlogVersionBump() (gas: 4651351) [PASS] testContractSize() (gas: 8962) [PASS] testDeployCost() (gas: 2704785) [PASS] testFailNotScheduled() (gas: 14406) [PASS] testFailTooEarly() (gas: 417614) [PASS] testFailTooLate() (gas: 417527) [PASS] testFailWrongDay() (gas: 417617) [PASS] testGeneral() (gas: 36768834) [PASS] testIlkClipper() (gas: 3654384) [PASS] testMKRPayments() (gas: 1352679) [PASS] testNewChainlogValues() (gas: 1256243) [PASS] testNextCastTime() (gas: 446343) [PASS] testOnTime() (gas: 1246700) [PASS] testPSMs() (gas: 2788471) [PASS] testUseEta() (gas: 352470) [PASS] testVestDAI() (gas: 1495339) Test result: ok. 20 passed; 0 failed; finished in 1075.84s
Good to deploy
402700e
The spell has been deployed https://etherscan.io/address/0xa1c423ee0bbc927ef5809c7ebb24c86d4284e431#code |
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Checklist
- Deployed Spell is Verified
- Optimization Enabled: No
- Other Settings: default evmVersion, GNU AGPLv3 license
- Deployed Spell Code matches GitHub
- diffcheck etherscan source against spell PR (via
make diff-deployed-spell
)
- diffcheck etherscan source against spell PR (via
- Deployed Spell Etherscan Checks
- automated checks via
make check-deployed-spell
- verified
- license type matches
- solc version matches
- optimizations are disabled
- dss-exec-lib library address matches hardcoded local
DssExecLib.address
-
deployed_spell_created
matches deployment timestamp -
deployed_spell_block
matches deployment block number
- manual checks
- Ensure
make deploy-info tx=<tx>
matches config-
deployed_spell_created
timestamp -
deployed_spell_block
block number
-
- Ensure Etherscan
Libraries Used
matches DssExecLib Latest Release ❗ Ignored for now - git submodule hash matches dss-exec-lib latest release's tag commit and inspect diffs if doesn't match to ensure expected behaviour ❗ Ignored for now
- Ensure
- automated checks via
- Archive matches
src
-
make diff-archive-spell
for current date or ordate="YYYY-MM-DD" make diff-archive-spell
(date as per target exec date) - ensure date corresponds to target exec date
-
- Local Tests and CI PASS
Using DssExecLib at: 0x8De6DDbCd5053d32292AAA0D2105A32d108484a6 [⠊] Compiling... [⠘] Compiling 104 files with 0.8.16 [⠃] Solc 0.8.16 finished in 3.67s Compiler run successful! Running 2 tests for src/test/starknet.t.sol:StarknetTests [PASS] testStarknet() (gas: 1405623) [PASS] testStarknetSpell() (gas: 2346) Test result: ok. 2 passed; 0 failed; finished in 86.54s Running 21 tests for src/DssSpell.t.sol:DssSpellTest [PASS] testAuth() (gas: 9223371487102701143) [PASS] testAuthInSources() (gas: 9223371487099056011) [PASS] testBytecodeMatches() (gas: 2720125) [PASS] testCastCost() (gas: 1259107) [PASS] testChainlogValues() (gas: 9554910) [PASS] testChainlogVersionBump() (gas: 4651351) [PASS] testContractSize() (gas: 8962) [PASS] testDeployCost() (gas: 2704785) [PASS] testFailNotScheduled() (gas: 14406) [PASS] testFailTooEarly() (gas: 417614) [PASS] testFailTooLate() (gas: 417527) [PASS] testFailWrongDay() (gas: 417617) [PASS] testGeneral() (gas: 36770931) [PASS] testIlkClipper() (gas: 3654384) [PASS] testMKRPayments() (gas: 1352679) [PASS] testNewChainlogValues() (gas: 1256243) [PASS] testNextCastTime() (gas: 446343) [PASS] testOnTime() (gas: 1246700) [PASS] testPSMs() (gas: 2788471) [PASS] testUseEta() (gas: 352470) [PASS] testVestDAI() (gas: 1495339) Test result: ok. 21 passed; 0 failed; finished in 1997.66s
Good to handover.
I have a couple of notes. Be aware that I'm not super familiar with this process, so apologies in advance if I'm misunderstanding things here.
I'm seeing one of you ignored these, and one didn't? My understanding from speaking to Arbiter was that the latest version of dss-exec-lib in the repo has not been deployed on chain. Is this related to why you skipped these @amusingaxl?
@SidestreamSweatyPumpkin, I believe it's customary to post the test output as part of these comments as @amusingaxl did. Do you mind posting your outputs here as well? |
That's correct. The latest version of |
|
I see, thank you for the explanation @SidestreamColdMelon. I did confirm that we were using the correct version of ExecLib on the deployed spell via etherscan. Given it's been used for over a year, and that you guys have checked it manually, I'm comfortable not checking it myself. I really appreciate the links and the step-by-step instructions though. |
Description
This PR implements 2023-05-17 mainnet spell based on the executive vote summary, adds tests for the offboarded collaterals, DAI vesting and MKR transfers.
Since there are no proper crafter checklist for offboarding collaterals (only a reviewer one, for lerp-based offboardings), we did our own analysis of all previous offboardings in the spell archive and compiled a list of all possible actions. This way, everyone can easily follow and validate our decisions in the code. More information about it is in the 2023-05-17 goerli spell.
Superset of all offboarding actions, based on the archive
-> ✅ Done in this PR
-> ☑️ Clipper contracts already exist for all offboarded collaterals, checked via chainlog
-> ☑️ Dept is already 0, confirmed on etherscan via VAT.ilks().line being 0 for every collateral
-> ☑️ Was previously done in the 2023-04-26 and 2023-03-16 spells
-> ☑️ Was previously done, confirmed on etherscan via DssAutoLine.ilks() outputting all 0s
-> ✅ Done in this PR
-> ✅ Done in this PR
-> ☑️ It's already enabled for all collaterals, confirmed via
clipper.stopped()
being0
for each collateral-> ✅ Done in this PR
Liquidate vaults
above)checkIlkClipper
base test, example code-> ✅ Done in this PR
checkIlkLerpOffboarding
, example codeContribution Checklist
Checklist
officeHours
modifier override30 days
unless otherwise specified)ETH_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