Skip to content
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-08-30 Spell #363

Merged
merged 22 commits into from
Aug 30, 2023
Merged

2023-08-30 Spell #363

merged 22 commits into from
Aug 30, 2023

Conversation

0xdecr1pto
Copy link
Contributor

Description

Contribution Checklist

  • PR title starts with (PE-<TICKET_NUMBER>)
  • Code approved
  • Tests approved
  • CI Tests pass

Checklist

  • Every contract variable/method declared as public/external private/internal
  • Consider if this PR needs the officeHours modifier override
  • Verify expiration (30 days unless otherwise specified)
  • Verify hash in the description matches here
  • Validate all addresses used are in changelog or known
  • Notify any external teams affected by the spell so they have the opportunity to review
  • Deploy spell ETH_GAS_LIMIT="XXX" ETH_GAS_PRICE="YYY" make deploy
  • Verify mainnet contract on etherscan
  • Change test to use mainnet spell address and deploy timestamp
  • Run make archive-spell or make date="YYYY-MM-DD" archive-spell to make an archive directory and copy DssSpell.sol, DssSpell.t.sol, DssSpell.t.base.sol, and DssSpellCollateralOnboarding.sol
  • squash and merge this PR

@0xdecr1pto 0xdecr1pto marked this pull request as ready for review August 24, 2023 22:43
src/DssSpell.sol Outdated Show resolved Hide resolved
Copy link
Contributor

@SidestreamSweatyPumpkin SidestreamSweatyPumpkin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Development Stage

  • Office Hours
    • ON
    • OFF
    • Matches Exec Doc
  • 30 days spell expiry in constructor (block.timestamp + 30 days)
  • Exec Doc Hash
  • Spell Description
    • Description follows the format TARGET_DATE MakerDAO Executive Spell | Hash: EXEC_DOC_HASH)
    • Target date in description matches the Exec Doc target date
    • Exec Doc Hash in description matches your locally generated Exec Doc Hash
    • Accompanying comment above spell description
      • Comment follows the format // Hash: cast keccak -- "$(wget 'EXEC_DOC_URL' -q -O - 2>/dev/null)"
      • Exec Doc URL in comment matches your Raw Exec Doc URL
        does not match but is ok due to the reason listed above.
      • Exec Doc URL in comment refers to the 'Community' GitHub repo
  • Local Environment Actions
    • Update Foundry by running foundryup
    • Reinstall libraries
      • Remove libraries by deleting the lib folder
      • Install libraries using git submodule update --init --recursive
        Submodule path 'lib/dss-exec-lib': checked out '69b658f35d8618272cd139dfc18c5713caf6b96b'
        Submodule path 'lib/dss-exec-lib/lib/dss-interfaces': checked out '9bfd7afadd1f8c217ef05850b25556917
        86286cb'
        Submodule path 'lib/dss-exec-lib/lib/forge-std': checked out '0aa99eb8456693c015350c5e6c4f442ebe912f
        77'
        Submodule path 'lib/dss-exec-lib/lib/forge-std/lib/ds-test': checked out 'cd98eff28324bfac652e63a239
        a60632a761790b'
        Submodule path 'lib/dss-test': checked out '4ad127cf53eeaddfb7b8ad56dd4b13e57d6a0067'
        Submodule path 'lib/dss-test/lib/dss-interfaces': checked out '9bfd7afadd1f8c217ef05850b255569178628
        6cb'
        Submodule path 'lib/dss-test/lib/forge-std': checked out 'aea0b2685bebc883c09f5554d7fb481e85d0564d'
        Submodule path 'lib/dss-test/lib/forge-std/lib/ds-test': checked out 'cd98eff28324bfac652e63a239a606
        32a761790b'
        
    • Dependency checks
      • dss-exec-lib
        • if submodule upgrades are present make sure dss-exec-lib is synced as well
          not present
        • git submodule hash (run git 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)
          newer
      • dss-test
        • dss-interfaces
        • forge-std
          • git submodule hash matches version used by dss-test (Non-critical)
            4ad127cf53eeaddfb7b8ad56dd4b13e57d6a0067 lib/dss-test (4ad127c)
            does not match - not critical
  • Interface Checks
    • dss-interfaces
      • used in the current spell
      • cleanup previous ones
      • ensure only single import layout is used (e.g. import "dss-interfaces/dss/VatAbstract.sol";)
    • Static Interfaces
      • ensure they match dss-interfaces (Where there is a mismatch, use cast interface as the source of truth)
      • check on-chain interface of deployed contract via cast interface <contract_address> to ensure correctness
      • interface naming style should match with Like suffix (e.g. VatLike), with some exceptions
      • ensure they only list used functions in spell code
  • Rate constants used are correct
    no rates in the spell
  • Constants Match
    • Precision unit constants used match their defined values
      • WAD = 10 ** 18
        not used
      • RAY = 10 ** 27
        not used
      • RAD = 10 ** 45
        not used
      • Variable visibility declared as internal
      • State mutability declared as constant
      • Ensure they match with ds-math and the Numerical Ranges
    • Math unit constants used match their defined values
      • HUNDRED = 10 ** 2
        not used
      • THOUSAND = 10 ** 3
        not used
      • MILLION = 10 ** 6
        not used
      • BILLION = 10 ** 9
        not used
      • Variable visibility declared as internal
      • State mutability declared as constant
      • Ensure they match with config
    • Timestamp constants used are correct
      not used
      • Ensure the timestamp converts to the correct date
      • Variable naming matches MONTH_DD_YYYY (e.g. MAY_01_2023 for 2023-05-01)
      • Time of day makes logical sense (i.e. 11:59:59 for the final day of something, 00:00:00 for the first day of something) in the context of timestamp usage
      • Variable visibility declared as internal
      • State mutability declared as constant
  • Deployed Contracts (not yet on chainlog or new to chainlog)
    • Verified on etherscan
    • Optimizations match Repo
    • GNU AGPLv3 license
    • Constructor args ok (e.g. vat, dai, dog, ...)
    • Wards ok (pause proxy relied, deployer denied)
      • MCD_ESM is already relied / being relied in this spell (as approved by GovAlpha) in order to allow de-authing the pause proxy during Emergency Shutdown, via denyProxy.
    • Matches corresponding github source code (i.e. diffcheck via vscode code --diff etherscan.sol github.sol)
    • Ensure deployer address is included into addresses_deployers.sol (to keep up to date)
  • RWA
    • RwaInputConduit<2,3>
      • contract is verified on etherscan
        • ensure 0.6.12 solc version is used
        • ensure optimization are off
        • ensure license is specified (SPDX in code or otherwise)
        • ensure source matches GitHub code and it's consistent with previous RWA onboarding
      • constructor args are correct and match chainlog
        • dai
        • to (RwaUrn, RwaJar)
        • gov (v1)
        • psm, gem (v3)
      • check wards
        • MCD_PAUSE_PROXY is relied
        • MCD_ESM is being relied in the spell (as approved by GovAlpha)
        • deployer is denied
        • no other address has been relied
    • Filable (RwaOutputConduit and RwaInputConduit)
      * [x] quitTo (file the appropriate address for conduits per technical assessment)
      same as the existing one
      * [x] mate
      same as the existing one
  • Payments
    • MKR transfers
      • Recipient addresses match Exec Doc
      • Transfer values match Exec Doc
      • Follows archive patterns
    • DAI Surplus Buffer transfers
      • Recipient Addresses match Exec Doc
      • Payment Amounts match Exec Doc
      • Follows previous patterns
    • Terminate Existing MKR/DAI Streams (Yank)
      • Yanked stream ID matches Exec Doc
      • Use MCD_VEST_MKR_TREASURY for MKR yank
      • Use MCD_VEST_DAI for DAI yank
    • Ensure Recipient Addresses match addresses_wallets.sol
  • SubDAO Content
    • SubDAO SubProxy spell execution
      • SubDAO spell address matches Exec Doc
      • SubDAO spell deployer is purely an EOA
        • Ensure the deployer address is in addresses_deployers.sol as a comment
      • Executed using ProxyLike(SUBDAO_PROXY).exec(SUBDAO_SPELL, abi.encodeWithSignature("execute()"));
      • Execution is NOT delegate call
    • Maker Core (main spell) SubDAO actions (i.e. operate in Pause Proxy DelegateCall context)
      • No SubDAO contract being interacted with is authed on a core contract like vat, etc. (Check comprehensively where the risk is high)
      • SubDAO contract licensing and optimizations generally do not matter (except where they pose a security risk)
      • SubDAO contracts and all libraries / dependencies are verified (Blocking if not true)
      • Upgradable SubDAO contracts
        • Any upgradable contracts have the PAUSE_PROXY as their admin (i.e. the party that can upgrade)
          • Any upgradable SubDAO contracts with an admin that is not PAUSE_PROXY are not authed on any core contracts (Blocking)
      • All SubDAO content addresses (i.e. provided contract addresses or EOAs) present in the Maker Core spell are present in the Exec Doc and are correct. SubDAO addresses being authed or given any permissions MUST be in the Exec Doc. SubDAO addresses being called must be confirmed by the SubDAO spell team.
        • IF addresses not PR'ed in by the SubDAO team (use git blame for example), SubDAO content addresses all have inline comment for provenance or source being OKed by SubDAO
      • SubDAO actions match Exec Doc (only where inline with main spell code) and do not affect core contracts
        • did not find evidence of affecting core contracts.
      • Core contract knock-on actions (such as offboarding or setting DC to 0) are present in the exec and match the code
      • External calls for SubDAO content are NOT delegate call
      • Code does not have untoward behavior within the scope of Maker Core Contracts (e.g. up to the SubDAO proxy)
  • ChainLog
    • Increment ChainLog version based on update type
      • Major -> New Vat (++.0.0)
      • Minor -> Core Module (DSS) Update (e.g. Flapper) (0.++.0)
      • Patch -> Collateral addition or addition/modification (0.0.++)
  • 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 the ChainLog via DssExecLib.getChangelogAddress and constant is used instead for static addresses
    • Fetch addresses as type address and wrap with Like suffix interfaces inline (when making calls) unless archive patterns permit otherwise (Such as MKR)
    • Use the DssExecLib Core Address Helpers where possible (e.g. DssExecLib.vat())
    • Where addresses are fetched from the 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)
  • Spell actions match the corresponding Exec Doc
  • Tests
    • Ensure each spell action has sufficient test coverage
      • flipper mom removed
      • flip_fab removed
      • input_conduit_urn for rwa 015 removed (to be copied over into the other key)
      • input_conduit_jar for rwa 015 removed (to be copied over into the other key)
      • input_conduit is set for _pax, _usdc, _gusd
      • chainlog version updated
      • payment of dai successful to launch project funding
      • stream id 17 yanked (dai)
      • stream id 34 yanked (mkr)
      • mkr vested (210.83) to launch project funding
      • spark spell executed
      • esm relied in vow
      • flipper mom is deauthed (no authority, no owner)
      • rwa 015 input conduit has the constructor params set properly for pax, gusd
      • rwa 015 input conduit has proper auth:
        • pauseProxy has auth (ward)
        • esm has auth (ward)
        • pause proxy is not mate
        • operator wallet is mate
        • quits to custody
      • rwa 015 input conduit can push
      • rwa003 has a valid state (good) after tell is being called in the spell
    • Ensure every test function is declared as public if enabled or private if disabled
    • Ensure that the DssExecLib.address file is not being modified by the spell PR
    • Check all CI tests are passing as at the latest commit
      commit link
    • Check all tests are passing locally using make test
      • Ensure that only ETH_RPC_URL is being used from env (i.e. no match, block or similar are active in your env)
./scripts/test-dssspell-forge.sh no-match="" match="" block=""
Using DssExecLib at: 0x8De6DDbCd5053d32292AAA0D2105A32d108484a6
[⠘] Compiling...
No files changed, compilation skipped

Running 2 tests for src/test/starknet.t.sol:StarknetTests
[PASS] testStarknet() (gas: 2312546)
[PASS] testStarknetSpell() (gas: 2346)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 92.69s

Running 30 tests for src/DssSpell.t.sol:DssSpellTest
[PASS] testAuth() (gas: 9223371487105898164)
[PASS] testAuthInSources() (gas: 9223371487099324820)
[PASS] testBytecodeMatches() (gas: 2777538)
[PASS] testCastCost() (gas: 2160461)
[PASS] testChainlogValues() (gas: 11018150)
[PASS] testChainlogVersionBump() (gas: 4772012)
[PASS] testContractSize() (gas: 9006)
[PASS] testDeployCost() (gas: 2762152)
[PASS] testFailNotScheduled() (gas: 14420)
[PASS] testFailTooEarly() (gas: 13629)
[PASS] testFailTooLate() (gas: 13562)
[PASS] testFailWrongDay() (gas: 13585)
[PASS] testFlliperMomDeauth() (gas: 2161653)
[PASS] testGeneral() (gas: 38036406)
[PASS] testMKRPayments() (gas: 2175548)
[PASS] testNewChainlogValues() (gas: 2256556)
[PASS] testNextCastTime() (gas: 353681)
[PASS] testOnTime() (gas: 2156145)
[PASS] testPSMs() (gas: 3517709)
[PASS] testPayments() (gas: 2226444)
[PASS] testRWA003OracleTell() (gas: 2172951)
[PASS] testRWA015_CONTRACT_DEPLOYMENT_SETUP() (gas: 90883)
[PASS] testRWA015_INPUT_CONDUITS() (gas: 2778029)
[PASS] testRWA015_INTEGRATION_CONDUITS_SETUP() (gas: 2213009)
[PASS] testRemoveChainlogValues() (gas: 2170652)
[PASS] testSparkSpellIsExecuted() (gas: 2159659)
[PASS] testUseEta() (gas: 352302)
[PASS] testVowEsmRely() (gas: 2162930)
[PASS] testYankDAI() (gas: 2172795)
[PASS] testYankMKR() (gas: 2210407)
Test result: ok. 30 passed; 0 failed; 0 skipped; finished in 907.97s
Ran 2 test suites: 32 tests passed, 0 failed, 0 skipped (32 total tests)

@SidestreamSweatyPumpkin
Copy link
Contributor

Note:

this does not seem to be addressed in this PR. Do you want to adjust it or do we leave it out because there was no corresponding instruction in the exec sheet?

@ghost
Copy link

ghost commented Aug 29, 2023

no corresponding instruction in the exec sheet?

This is nothing to do with the exec sheet since it is not a governance action item. It's fixing what appears to be an error that was made in the config file, nothing to do with the exec contents. Remember Governance participants also reference that sheet so including stuff there that is not in the code might lead to confusion for voters.

Whether or not it needs to be fixed has nothing to do with GovAlpha.

@SidestreamSweatyPumpkin
Copy link
Contributor

Ok, then we should adjust the config there for sure @0xdecr1pto

@0xdecr1pto
Copy link
Contributor Author

Ok, then we should adjust the config there for sure @0xdecr1pto

We have an issue there, here is the discussion: #362

I prefer to keep it as it is until we reach a consensus on how to dealt with it

Copy link
Contributor

@amusingaxl amusingaxl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mainnet Executive Spell Review Checklist

Mainnet 2023-08-30

Spell Actions (Per Exec Doc):

  • Management of ConsolFreight (RWA003-A) Default (Urgent Inclusion)
    • Reduce RWA003-A DC by 2 million DAI from 2 million DAI to 0 DAI (Don't reduce Line similar to RWA004-A process)
    • Call tell on the RwaLiquidationOracle for RWA003-A
  • Auth ESM on the Vow
    • Auth ESM on the Vow
  • BlockTower Andromeda Input Conduit Chainlog Additions
    • Remove RWA015_A_INPUT_CONDUIT_JAR from the chainlog
    • Remove RWA015_A_INPUT_CONDUIT_URN from the chainlog
    • Add 0xb9373c557f3ae8cddd068c1644ed226cfb18a997 as RWA015_A_INPUT_CONDUIT_JAR_USDC
    • Add 0xe08cb5e24862ea86328295d5e5c08972203c20d8 as RWA015_A_INPUT_CONDUIT_URN_USDC
    • Add 0x13C31b41E671401c7BC2bbd44eF33B6E9eaa1E7F as RWA015_A_INPUT_CONDUIT_JAR_GUSD
    • Add 0xAB80C37cB5b21238D975c2Cea46e0F12b3d84B06 as RWA015_A_INPUT_CONDUIT_URN_GUSD
    • Add 0x79Fc3810735959db3C6D4fc64F7F7b5Ce48d1CEc as RWA015_A_INPUT_CONDUIT_JAR_PAX
    • Add 0x4f7f76f31CE6Bb20809aaCE30EfD75217Fbfc217 as RWA015_A_INPUT_CONDUIT_URN_PAX
  • Chainlog Cleanup
    • Remove FLIP_FAB and FLIPPER_MOM from the chainlog
  • Yank GovAlpha Budget Streams
    ⚠️ Order is off
    • Yank DAI stream ID 17
    • Yank MKR stream ID 34
  • Launch Project Dai Transfer
    • Launch Project - 941993 DAI - 0x3C5142F28567E6a0F172fd0BaaF1f2847f49D02F
  • Launch Project MKR Transfer
    • Launch Project - 210.83 MKR - 0x3C5142F28567E6a0F172fd0BaaF1f2847f49D02F
  • Trigger Spark Proxy Spell
    • Mainnet - 0xFBdB6C5596Fc958B432Bf1c99268C72B1515DFf0

Development Stage

  • Office Hours
    • OFF
    • Matches Exec Doc
  • 30 days spell expiry in constructor (block.timestamp + 30 days)
  • Exec Doc Hash:
    • Search the 'Community' GitHub repo for the corresponding Exec Doc ⚠️ Ignored because this does not work when there are more recent non-related commits in the repo.
    • Click 'History' for the corresponding Exec Doc ⚠️ Ignored because this does not work when there are more recent non-related commits in the repo.
    • Ensure Exec Doc file name follows the format Executive vote - Month DD, YYYY.md
    • Click 'View at this point in the history' (the file icon with < >) for the latest commit
    • Click 'Raw' and copy the resulting URL
    • Generate Exec Doc Hash using this URL
      • Automatically: using make exec-hash $URL
      • Manually: using cast keccak -- "$(curl '$URL' -o - 2>/dev/null)"
        0xd4f061429b564e422f18f0289a0f956f0229edbeead40b51ad69d52b27f7e591
        
  • Spell Description
    • Description follows the format TARGET_DATE MakerDAO Executive Spell | Hash: EXEC_DOC_HASH)
    • Target date in description matches the Exec Doc target date
    • Exec Doc Hash in description matches your locally generated Exec Doc Hash
    • Accompanying comment above spell description
      • Comment follows the format // Hash: cast keccak -- "$(wget 'EXEC_DOC_URL' -q -O - 2>/dev/null)"
      • Exec Doc URL in comment matches your Raw Exec Doc URL
        - https://raw.githubusercontent.com/makerdao/community/64b0d8425a316c40d1fc464c084d800e3b17c1f3/governance/votes/Executive%20vote%20-%20August%2030%2C%202023.md
        + https://raw.githubusercontent.com/makerdao/community/61cd85d98bf6a18f5ab51c140dc08f43b4c720b1/governance/votes/Executive%20vote%20-%20August%2030%2C%202023.md
        ✅ URL is different, but the hashes of the content match.
      • Exec Doc URL in comment refers to the 'Community' GitHub repo
  • Local Environment Actions
    • Update Foundry by running foundryup
    • Reinstall libraries
      • Remove libraries by deleting the lib folder
      • Install libraries using git 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'
        
    • Dependency checks
      • dss-exec-lib
        • if submodule upgrades are present make sure dss-exec-lib is synced as well
        • git submodule hash (run git 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
  • Interface Checks
    • Static Interfaces
      • ensure they match dss-interfaces (Where there is a mismatch, use cast interface as the source of truth)
      • check on-chain interface of deployed contract via cast interface <contract_address> to ensure correctness
      • interface naming style should match with Like suffix (e.g. VatLike), with some exceptions
      • ensure they only list used functions in spell code
  • RWA Updates
    • Soft Liquidation
      • Set debt ceiling to 0 for the specific ilk
      • Call RwaLiquidationOracle.tell(ilk)
  • Payments
    • MKR transfers
      • Recipient addresses match Exec Doc
      • Transfer values match Exec Doc
      • Follows archive patterns
    • DAI Surplus Buffer transfers
      • Recipient Addresses match Exec Doc
      • Payment Amounts match Exec Doc
      • Follows previous patterns
    • Terminate Existing MKR/DAI Streams (Yank)
      • Yanked stream ID matches Exec Doc
      • Use MCD_VEST_MKR_TREASURY for MKR yank
      • Use MCD_VEST_DAI for DAI yank
    • Ensure Recipient Addresses match addresses_wallets.sol
  • SubDAO Content
    • SubDAO SubProxy spell execution
      • SubDAO spell address matches Exec Doc
      • SubDAO spell deployer is a smart contract (e.g. multisig or factory)
        • Ensure the deployer address is in addresses_deployers.sol as an entry
      • SubDAO spell deployer is purely an EOA
        • Ensure the deployer address is in addresses_deployers.sol as a comment
      • Executed using ProxyLike(SUBDAO_PROXY).exec(SUBDAO_SPELL, abi.encodeWithSignature("execute()"));
      • Execution is NOT delegate call
      • Reviewer Note: Gas cost may be very high as SubDAO spells execute within the main cast execution. (Also note that low level call gas estimation is not done by our scripts)
  • ChainLog
    • Increment ChainLog version based on update type
      • Minor -> Core Module (DSS) Update (e.g. Flapper) (0.++.0)
  • 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 the ChainLog via DssExecLib.getChangelogAddress and constant is used instead for static addresses
    • Fetch addresses as type address and wrap with Like suffix interfaces inline (when making calls) unless archive patterns permit otherwise (Such as MKR)
    • Use the DssExecLib Core Address Helpers where possible (e.g. DssExecLib.vat())
    • Where addresses are fetched from the 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)
  • Spell actions match the corresponding Exec Doc
  • Tests
    • Ensure each spell action has sufficient test coverage
      • Soft liquidation of RWA003-A
      • Authorize MCD_ESM on MCD_VOW
      • Onboard RWA015-A GUSD and USDP RwaSwapInputConduit2 conduits
      • Rename RWA015-A USDC conduits
      • Offboard FLIPPER_MOM and FLIPPER_FAB
      • Scuttle FLIPPER_MOM
      • Execute Spark spell
      • MKR transfer
      • DAI transfer
      • Yank vests
        • DAI id = 17
        • MKR id = 34
    • Ensure every test function is declared as public if enabled or private if disabled
    • Ensure that the DssExecLib.address file is not being modified by the spell PR
    • Check all CI tests are passing as at the latest commit
    • Check all tests are passing locally using make test
      • Ensure that only ETH_RPC_URL is being used from env (i.e. no match, block or similar are active in your env)
Using DssExecLib at: 0x8De6DDbCd5053d32292AAA0D2105A32d108484a6
[] Compiling...
[] Compiling 100 files with 0.8.16
[] Solc 0.8.16 finished in 4.01s
Compiler run successful!

Running 2 tests for src/test/starknet.t.sol:StarknetTests
[PASS] testStarknet() (gas: 2312546)
[PASS] testStarknetSpell() (gas: 2346)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 22.23s

Running 30 tests for src/DssSpell.t.sol:DssSpellTest
[PASS] testAuth() (gas: 9223371487105898164)
[PASS] testAuthInSources() (gas: 9223371487099324820)
[PASS] testBytecodeMatches() (gas: 2777538)
[PASS] testCastCost() (gas: 2160461)
[PASS] testChainlogValues() (gas: 11018150)
[PASS] testChainlogVersionBump() (gas: 4772012)
[PASS] testContractSize() (gas: 9006)
[PASS] testDeployCost() (gas: 2762152)
[PASS] testFailNotScheduled() (gas: 14420)
[PASS] testFailTooEarly() (gas: 13629)
[PASS] testFailTooLate() (gas: 13562)
[PASS] testFailWrongDay() (gas: 13585)
[PASS] testFlipperMomDeauth() (gas: 2162716)
[PASS] testGeneral() (gas: 38030850)
[PASS] testMKRPayments() (gas: 2175548)
[PASS] testNewChainlogValues() (gas: 2256556)
[PASS] testNextCastTime() (gas: 353681)
[PASS] testOnTime() (gas: 2156145)
[PASS] testPSMs() (gas: 3517709)
[PASS] testPayments() (gas: 2226444)
[PASS] testRWA003OracleTell() (gas: 2172951)
[PASS] testRWA015_CONTRACT_DEPLOYMENT_SETUP() (gas: 90905)
[PASS] testRWA015_INPUT_CONDUITS() (gas: 2778029)
[PASS] testRWA015_INTEGRATION_CONDUITS_SETUP() (gas: 2213009)
[PASS] testRemoveChainlogValues() (gas: 2170652)
[PASS] testSparkSpellIsExecuted() (gas: 2159659)
[PASS] testUseEta() (gas: 352302)
[PASS] testVowEsmRely() (gas: 2162930)
[PASS] testYankDAI() (gas: 2172795)
[PASS] testYankMKR() (gas: 2210407)
Test result: ok. 30 passed; 0 failed; 0 skipped; finished in 440.56s
Ran 2 test suites: 32 tests passed, 0 failed, 0 skipped (32 total tests)

@amusingaxl
Copy link
Contributor

  • CI tests pass
  • Local tests pass
Using DssExecLib at: 0x8De6DDbCd5053d32292AAA0D2105A32d108484a6
[] Compiling...
[] Compiling 4 files with 0.8.16
[] Solc 0.8.16 finished in 2.64s
Compiler run successful!

Running 2 tests for src/test/starknet.t.sol:StarknetTests
[PASS] testStarknet() (gas: 2312546)
[PASS] testStarknetSpell() (gas: 2346)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 16.38s

Running 30 tests for src/DssSpell.t.sol:DssSpellTest
[PASS] testAuth() (gas: 9223371487105898164)
[PASS] testAuthInSources() (gas: 9223371487099324820)
[PASS] testBytecodeMatches() (gas: 2777538)
[PASS] testCastCost() (gas: 2160461)
[PASS] testChainlogValues() (gas: 11018150)
[PASS] testChainlogVersionBump() (gas: 4772012)
[PASS] testContractSize() (gas: 9006)
[PASS] testDeployCost() (gas: 2762152)
[PASS] testFailNotScheduled() (gas: 14420)
[PASS] testFailTooEarly() (gas: 13629)
[PASS] testFailTooLate() (gas: 13562)
[PASS] testFailWrongDay() (gas: 13585)
[PASS] testFlipperMomDeauth() (gas: 2162716)
[PASS] testGeneral() (gas: 38030850)
[PASS] testMKRPayments() (gas: 2175548)
[PASS] testNewChainlogValues() (gas: 2256556)
[PASS] testNextCastTime() (gas: 353681)
[PASS] testOnTime() (gas: 2156145)
[PASS] testPSMs() (gas: 3517709)
[PASS] testPayments() (gas: 2226214)
[PASS] testRWA003OracleTell() (gas: 2172951)
[PASS] testRWA015_CONTRACT_DEPLOYMENT_SETUP() (gas: 90905)
[PASS] testRWA015_INPUT_CONDUITS() (gas: 2778029)
[PASS] testRWA015_INTEGRATION_CONDUITS_SETUP() (gas: 2213009)
[PASS] testRemoveChainlogValues() (gas: 2170652)
[PASS] testSparkSpellIsExecuted() (gas: 2159659)
[PASS] testUseEta() (gas: 352302)
[PASS] testVowEsmRely() (gas: 2162930)
[PASS] testYankDAI() (gas: 2172795)
[PASS] testYankMKR() (gas: 2210407)
Test result: ok. 30 passed; 0 failed; 0 skipped; finished in 457.80s
Ran 2 test suites: 32 tests passed, 0 failed, 0 skipped (32 total tests)

Good to deploy :shipit:

Copy link
Contributor

@SidestreamSweatyPumpkin SidestreamSweatyPumpkin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good to deploy

@0xdecr1pto
Copy link
Contributor Author

Spell deployed: 0xf9a88bBABBe4b5b907D28322649c504cA9897892

Copy link
Contributor

@SidestreamSweatyPumpkin SidestreamSweatyPumpkin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to handover

Deployed Stage

  • 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)
  • 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 used (under 'Libraries Used') matches the hardcoded local DssExecLib.address file
        • Check again that the PR did not modify the DssExecLib.address file (e.g. look under the 'Files Changed' PR tab, etc.)
      • 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
      • (For your tests to be accurate) git submodule hash matches dss-exec-lib latest release's tag commit and inspect diffs if doesn't match to ensure expected behaviour (Currently Non-Critical pending the next DssExecLib release, double check that the ExecLib used by the contract matches the latest release)
  • Archive matches src
    • make diff-archive-spell for current date or or date="YYYY-MM-DD" make diff-archive-spell (date as per target Exec Doc date)
    • Ensure date corresponds to target Exec Doc date
  • Tests
    • Ensure that the DssExecLib.address file is not being modified by the spell PR
    • Check all CI tests are passing as at the latest commit
      commit on gh
    • Check all tests are passing locally using make test
      • Ensure that only ETH_RPC_URL is being used from env (i.e. no match, block or similar are active in your env)
make test
./scripts/test-dssspell-forge.sh no-match="" match="" block=""
Using DssExecLib at: 0x8De6DDbCd5053d32292AAA0D2105A32d108484a6
[⠒] Compiling...
[⠃] Compiling 104 files with 0.8.16
[⠒] Solc 0.8.16 finished in 3.89s
Compiler run successful!

Running 2 tests for src/test/starknet.t.sol:StarknetTests
[PASS] testStarknet() (gas: 2312546)
[PASS] testStarknetSpell() (gas: 2346)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 257.29s

Running 30 tests for src/DssSpell.t.sol:DssSpellTest
[PASS] testAuth() (gas: 9223371487105898164)
[PASS] testAuthInSources() (gas: 9223371487099324820)
[PASS] testBytecodeMatches() (gas: 2777538)
[PASS] testCastCost() (gas: 2160461)
[PASS] testChainlogValues() (gas: 11018150)
[PASS] testChainlogVersionBump() (gas: 4772012)
[PASS] testContractSize() (gas: 9006)
[PASS] testDeployCost() (gas: 2762152)
[PASS] testFailNotScheduled() (gas: 14420)
[PASS] testFailTooEarly() (gas: 13629)
[PASS] testFailTooLate() (gas: 13562)
[PASS] testFailWrongDay() (gas: 13585)
[PASS] testFlipperMomDeauth() (gas: 2162716)
[PASS] testGeneral() (gas: 38032947)
[PASS] testMKRPayments() (gas: 2175548)
[PASS] testNewChainlogValues() (gas: 2256556)
[PASS] testNextCastTime() (gas: 353681)
[PASS] testOnTime() (gas: 2156145)
[PASS] testPSMs() (gas: 3517709)
[PASS] testPayments() (gas: 2226904)
[PASS] testRWA003OracleTell() (gas: 2172951)
[PASS] testRWA015_CONTRACT_DEPLOYMENT_SETUP() (gas: 90905)
[PASS] testRWA015_INPUT_CONDUITS() (gas: 2778029)
[PASS] testRWA015_INTEGRATION_CONDUITS_SETUP() (gas: 2213009)
[PASS] testRemoveChainlogValues() (gas: 2170652)
[PASS] testSparkSpellIsExecuted() (gas: 2159659)
[PASS] testUseEta() (gas: 352302)
[PASS] testVowEsmRely() (gas: 2162930)
[PASS] testYankDAI() (gas: 2172795)
[PASS] testYankMKR() (gas: 2210407)
Test result: ok. 30 passed; 0 failed; 0 skipped; finished in 1039.76s
Ran 2 test suites: 32 tests passed, 0 failed, 0 skipped (32 total tests)

@amusingaxl
Copy link
Contributor

Deployed Stage

  • 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)
  • 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 used (under 'Libraries Used') matches the hardcoded local DssExecLib.address file
        • Check again that the PR did not modify the DssExecLib.address file (e.g. look under the 'Files Changed' PR tab, etc.)
      • 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
      • (For your tests to be accurate) git submodule hash matches dss-exec-lib latest release's tag commit and inspect diffs if doesn't match to ensure expected behaviour (Currently Non-Critical pending the next DssExecLib release, double check that the ExecLib used by the contract matches the latest release)
  • Archive matches src
    • make diff-archive-spell for current date or or date="YYYY-MM-DD" make diff-archive-spell (date as per target Exec Doc date)
    • Ensure date corresponds to target Exec Doc date
  • Tests
    • Ensure that the DssExecLib.address file is not being modified by the spell PR
    • Check all CI tests are passing as at the latest commit
      aa58b9f938f92d8406d14c1d49c8b9e10274cd7a
      
    • Check all tests are passing locally using make test
      • Ensure that only ETH_RPC_URL is being used from env (i.e. no match, block or similar are active in your env)
Using DssExecLib at: 0x8De6DDbCd5053d32292AAA0D2105A32d108484a6
[] Compiling...
[] Compiling 4 files with 0.8.16
[] Solc 0.8.16 finished in 2.65s
Compiler run successful!

Running 2 tests for src/test/starknet.t.sol:StarknetTests
[PASS] testStarknet() (gas: 2312546)
[PASS] testStarknetSpell() (gas: 2346)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 193.78s

Running 30 tests for src/DssSpell.t.sol:DssSpellTest
[PASS] testAuth() (gas: 9223371487105898164)
[PASS] testAuthInSources() (gas: 9223371487099324820)
[PASS] testBytecodeMatches() (gas: 2777538)
[PASS] testCastCost() (gas: 2160461)
[PASS] testChainlogValues() (gas: 11018150)
[PASS] testChainlogVersionBump() (gas: 4772012)
[PASS] testContractSize() (gas: 9006)
[PASS] testDeployCost() (gas: 2762152)
[PASS] testFailNotScheduled() (gas: 14420)
[PASS] testFailTooEarly() (gas: 13629)
[PASS] testFailTooLate() (gas: 13562)
[PASS] testFailWrongDay() (gas: 13585)
[PASS] testFlipperMomDeauth() (gas: 2162716)
[PASS] testGeneral() (gas: 38032947)
[PASS] testMKRPayments() (gas: 2175548)
[PASS] testNewChainlogValues() (gas: 2256556)
[PASS] testNextCastTime() (gas: 353681)
[PASS] testOnTime() (gas: 2156145)
[PASS] testPSMs() (gas: 3517709)
[PASS] testPayments() (gas: 2226444)
[PASS] testRWA003OracleTell() (gas: 2172951)
[PASS] testRWA015_CONTRACT_DEPLOYMENT_SETUP() (gas: 90905)
[PASS] testRWA015_INPUT_CONDUITS() (gas: 2778029)
[PASS] testRWA015_INTEGRATION_CONDUITS_SETUP() (gas: 2213009)
[PASS] testRemoveChainlogValues() (gas: 2170652)
[PASS] testSparkSpellIsExecuted() (gas: 2159659)
[PASS] testUseEta() (gas: 352302)
[PASS] testVowEsmRely() (gas: 2162930)
[PASS] testYankDAI() (gas: 2172795)
[PASS] testYankMKR() (gas: 2210407)
Test result: ok. 30 passed; 0 failed; 0 skipped; finished in 418.03s
Ran 2 test suites: 32 tests passed, 0 failed, 0 skipped (32 total tests)

Good to handover.

Copy link
Contributor

@SidestreamSweatyPumpkin SidestreamSweatyPumpkin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Handover and Merge Stage

  • Check that the spell address posted by the crafter in new-spells is correct
    • Confirm the address in new-spells (via a thumbs up message reaction, )
  • Ensure that no commits or changes have occurred since the spell was deployed and archived
  • Approve spell PR for merge via 'Approve' review option

@0xdecr1pto 0xdecr1pto merged commit ddf0231 into master Aug 30, 2023
3 checks passed
@amusingaxl amusingaxl deleted the 2023-08-30 branch August 30, 2023 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants