Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
0x60806040 | 15833940 | 875 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
DssSpell
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-26 */ // hevm: flattened sources of src/DssSpell.sol // SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity =0.6.12 >=0.6.12 <0.7.0; pragma experimental ABIEncoderV2; ////// lib/dss-exec-lib/src/CollateralOpts.sol /* pragma solidity ^0.6.12; */ struct CollateralOpts { bytes32 ilk; address gem; address join; address clip; address calc; address pip; bool isLiquidatable; bool isOSM; bool whitelistOSM; uint256 ilkDebtCeiling; uint256 minVaultAmount; uint256 maxLiquidationAmount; uint256 liquidationPenalty; uint256 ilkStabilityFee; uint256 startingPriceFactor; uint256 breakerTolerance; uint256 auctionDuration; uint256 permittedDrop; uint256 liquidationRatio; uint256 kprFlatReward; uint256 kprPctReward; } ////// lib/dss-exec-lib/src/DssExecLib.sol // // DssExecLib.sol -- MakerDAO Executive Spellcrafting Library // // Copyright (C) 2020 Maker Ecosystem Growth Holdings, Inc. // // 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 <https://www.gnu.org/licenses/>. /* pragma solidity ^0.6.12; */ /* pragma experimental ABIEncoderV2; */ /* import { CollateralOpts } from "./CollateralOpts.sol"; */ interface Initializable { function init(bytes32) external; } interface Authorizable { function rely(address) external; function deny(address) external; function setAuthority(address) external; } interface Fileable { function file(bytes32, address) external; function file(bytes32, uint256) external; function file(bytes32, bytes32, uint256) external; function file(bytes32, bytes32, address) external; } interface Drippable { function drip() external returns (uint256); function drip(bytes32) external returns (uint256); } interface Pricing { function poke(bytes32) external; } interface ERC20 { function decimals() external returns (uint8); } interface DssVat { function hope(address) external; function nope(address) external; function ilks(bytes32) external returns (uint256 Art, uint256 rate, uint256 spot, uint256 line, uint256 dust); function Line() external view returns (uint256); function suck(address, address, uint) external; } interface ClipLike { function vat() external returns (address); function dog() external returns (address); function spotter() external view returns (address); function calc() external view returns (address); function ilk() external returns (bytes32); } interface DogLike { function ilks(bytes32) external returns (address clip, uint256 chop, uint256 hole, uint256 dirt); } interface JoinLike { function vat() external returns (address); function ilk() external returns (bytes32); function gem() external returns (address); function dec() external returns (uint256); function join(address, uint) external; function exit(address, uint) external; } // Includes Median and OSM functions interface OracleLike_2 { 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; function orb0() external view returns (address); function orb1() external view returns (address); } interface MomLike { function setOsm(bytes32, address) external; function setPriceTolerance(address, uint256) external; } interface RegistryLike { function add(address) external; function xlip(bytes32) external view returns (address); } // https://github.com/makerdao/dss-chain-log interface ChainlogLike { function setVersion(string calldata) external; function setIPFS(string calldata) external; function setSha256sum(string calldata) external; function getAddress(bytes32) external view returns (address); function setAddress(bytes32, address) external; function removeAddress(bytes32) external; } 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 { 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 { function tick() external returns (uint256); } library DssExecLib { /* WARNING The following library code acts as an interface to the actual DssExecLib library, which can be found in its own deployed contract. Only trust the actual library's implementation. */ 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; 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; function add(uint256 x, uint256 y) internal pure returns (uint256 z) {} function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {} function wdiv(uint256 x, uint256 y) internal pure returns (uint256 z) {} function rdiv(uint256 x, uint256 y) internal pure returns (uint256 z) {} 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 osmMom() public view returns (address) { return getChangelogAddress("OSM_MOM"); } function clipperMom() public view returns (address) { return getChangelogAddress("CLIPPER_MOM"); } function lerpFab() public view returns (address) { return getChangelogAddress("LERP_FAB"); } function clip(bytes32 _ilk) public view returns (address _clip) {} function flip(bytes32 _ilk) public view returns (address _flip) {} function calc(bytes32 _ilk) public view returns (address _calc) {} function getChangelogAddress(bytes32 _key) public view returns (address) {} function setChangelogAddress(bytes32 _key, address _val) public {} function setChangelogVersion(string memory _version) public {} function authorize(address _base, address _ward) public {} function setAuthority(address _base, address _authority) public {} function canCast(uint40 _ts, bool _officeHours) public pure returns (bool) {} function nextCastTime(uint40 _eta, uint40 _ts, bool _officeHours) public pure returns (uint256 castTime) {} function updateCollateralPrice(bytes32 _ilk) public {} function setContract(address _base, bytes32 _what, address _addr) public {} function setContract(address _base, bytes32 _ilk, bytes32 _what, address _addr) public {} function setValue(address _base, bytes32 _what, uint256 _amt) public {} function setValue(address _base, bytes32 _ilk, bytes32 _what, uint256 _amt) public {} function increaseGlobalDebtCeiling(uint256 _amount) public {} function setIlkDebtCeiling(bytes32 _ilk, uint256 _amount) public {} function setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount) public {} function setIlkLiquidationPenalty(bytes32 _ilk, uint256 _pct_bps) public {} function setIlkMaxLiquidationAmount(bytes32 _ilk, uint256 _amount) public {} function setIlkLiquidationRatio(bytes32 _ilk, uint256 _pct_bps) public {} function setStartingPriceMultiplicativeFactor(bytes32 _ilk, uint256 _pct_bps) public {} function setAuctionTimeBeforeReset(bytes32 _ilk, uint256 _duration) public {} function setAuctionPermittedDrop(bytes32 _ilk, uint256 _pct_bps) public {} function setKeeperIncentivePercent(bytes32 _ilk, uint256 _pct_bps) public {} function setKeeperIncentiveFlatRate(bytes32 _ilk, uint256 _amount) public {} function setLiquidationBreakerPriceTolerance(address _clip, uint256 _pct_bps) public {} function setIlkStabilityFee(bytes32 _ilk, uint256 _rate, bool _doDrip) public {} function setStairstepExponentialDecrease(address _calc, uint256 _duration, uint256 _pct_bps) public {} function whitelistOracleMedians(address _oracle) public {} function addReaderToWhitelist(address _oracle, address _reader) public {} function addReaderToWhitelistCall(address _oracle, address _reader) public {} function allowOSMFreeze(address _osm, bytes32 _ilk) public {} function addCollateralBase( bytes32 _ilk, address _gem, address _join, address _clip, address _calc, address _pip ) public {} function addNewCollateral(CollateralOpts memory co) public {} function linearInterpolation(bytes32 _name, address _target, bytes32 _ilk, bytes32 _what, uint256 _startTime, uint256 _start, uint256 _end, uint256 _duration) public returns (address) {} } ////// lib/dss-exec-lib/src/DssAction.sol // // DssAction.sol -- DSS Executive Spell Actions // // Copyright (C) 2020 Maker Ecosystem Growth Holdings, Inc. // // 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 <https://www.gnu.org/licenses/>. /* pragma solidity ^0.6.12; */ /* import { DssExecLib } from "./DssExecLib.sol"; */ /* import { CollateralOpts } from "./CollateralOpts.sol"; */ interface OracleLike_1 { 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 { require(DssExecLib.canCast(uint40(block.timestamp), officeHours()), "Outside office hours"); _; } // Office Hours defaults to true by default. // To disable office hours, override this function and // return false in the inherited action. function officeHours() public virtual returns (bool) { return true; } // DssExec calls execute. We limit this function subject to officeHours modifier. function execute() external limited { actions(); } // DssAction developer must override `actions()` and place all actions to be called inside. // The DssExec function will call this subject to the officeHours limiter // By keeping this function public we allow simulations of `execute()` on the actions outside of the cast time. function actions() public virtual; // Provides a descriptive tag for bot consumption // This should be modified weekly to provide a summary of the actions // Hash: seth keccak -- "$(wget https://<executive-vote-canonical-post> -q -O - 2>/dev/null)" function description() external virtual view returns (string memory); // Returns the next available cast time function nextCastTime(uint256 eta) external returns (uint256 castTime) { require(eta <= uint40(-1)); castTime = DssExecLib.nextCastTime(uint40(eta), uint40(block.timestamp), officeHours()); } } ////// lib/dss-exec-lib/src/DssExec.sol // // DssExec.sol -- MakerDAO Executive Spell Template // // Copyright (C) 2020 Maker Ecosystem Growth Holdings, Inc. // // 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 <https://www.gnu.org/licenses/>. /* pragma solidity ^0.6.12; */ interface PauseAbstract { function delay() external view returns (uint256); function plot(address, bytes32, bytes calldata, uint256) external; function exec(address, bytes32, bytes calldata, uint256) external returns (bytes memory); } interface Changelog { function getAddress(bytes32) external view returns (address); } interface SpellAction { function officeHours() external view returns (bool); function description() external view returns (string memory); function nextCastTime(uint256) external view returns (uint256); } 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; // Provides a descriptive tag for bot consumption // This should be modified weekly to provide a summary of the actions // Hash: seth keccak -- "$(wget https://<executive-vote-canonical-post> -q -O - 2>/dev/null)" function description() external view returns (string memory) { return SpellAction(action).description(); } function officeHours() external view returns (bool) { return SpellAction(action).officeHours(); } function nextCastTime() external view returns (uint256 castTime) { return SpellAction(action).nextCastTime(eta); } // @param _description A string description of the spell // @param _expiration The timestamp this spell will expire. (Ex. now + 30 days) // @param _spellAction The address of the spell action constructor(uint256 _expiration, address _spellAction) public { 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) } tag = _tag; } function schedule() public { require(now <= expiration, "This contract has expired"); require(eta == 0, "This spell has already been scheduled"); eta = now + PauseAbstract(pause).delay(); pause.plot(action, tag, sig, eta); } function cast() public { require(!done, "spell-already-cast"); done = true; pause.exec(action, tag, sig, eta); } } ////// src/DssSpellCollateral.sol // SPDX-FileCopyrightText: © 2022 Dai Foundation <www.daifoundation.org> // // 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 <https://www.gnu.org/licenses/>. /* pragma solidity 0.6.12; */ /* import "dss-exec-lib/DssExecLib.sol"; */ contract DssSpellCollateralAction { // --- Rates --- // 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 be found at // https://ipfs.io/ipfs/QmVp4mhhbwWGTfbh2BzwQB9eiBrQBKiqcPRZCaAxNUaar6 // uint256 internal constant ONE_FIVE_PCT_RATE = 1000000000472114805215157978; // --- Math --- uint256 constant THOUSAND = 10 ** 3; uint256 constant MILLION = 10 ** 6; // uint256 constant BILLION = 10 ** 9; // --- DEPLOYED COLLATERAL ADDRESSES --- address internal constant RETH = 0xae78736Cd615f374D3085123A210448E74Fc6393; address internal constant PIP_RETH = 0xeE7F0b350aA119b3d05DC733a4621a81972f7D47; address internal constant MCD_JOIN_RETH_A = 0xC6424e862f1462281B0a5FAc078e4b63006bDEBF; address internal constant MCD_CLIP_RETH_A = 0x27CA5E525ea473eD52Ea9423CD08cCc081d96a98; address internal constant MCD_CLIP_CALC_RETH_A = 0xc59B62AFC96cf9737F717B5e5815070C0f154396; function collateralAction() internal { onboardCollaterals(); //updateCollaterals(); //offboardCollaterals(); } function onboardCollaterals() internal { // ----------------------------- Collateral onboarding ----------------------------- // Add RETH-A as a new Vault Type // Poll Link 1: https://vote.makerdao.com/polling/QmfMswF2 // Poll Link 2: https://vote.makerdao.com/polling/QmS7dBuQ // Forum Post: https://forum.makerdao.com/t/reth-collateral-onboarding-risk-evaluation/15286 DssExecLib.addNewCollateral( CollateralOpts({ ilk: "RETH-A", gem: RETH, join: MCD_JOIN_RETH_A, clip: MCD_CLIP_RETH_A, calc: MCD_CLIP_CALC_RETH_A, pip: PIP_RETH, isLiquidatable: true, isOSM: true, whitelistOSM: true, ilkDebtCeiling: 0, // line updated to 0 (previously 5M) minVaultAmount: 15 * THOUSAND, // debt floor - dust in DAI maxLiquidationAmount: 2 * MILLION, liquidationPenalty: 13_00, // 13% penalty on liquidation ilkStabilityFee: ONE_FIVE_PCT_RATE, // 1.50% stability fee startingPriceFactor: 110_00, // Auction price begins at 110% of oracle price breakerTolerance: 50_00, // Allows for a 50% hourly price drop before disabling liquidation auctionDuration: 120 minutes, permittedDrop: 45_00, // 45% price drop before reset liquidationRatio: 170_00, // 170% collateralization kprFlatReward: 250, // 250 DAI tip - flat fee per kpr kprPctReward: 10 // 0.1% chip - per kpr }) ); DssExecLib.setStairstepExponentialDecrease(MCD_CLIP_CALC_RETH_A, 90 seconds, 99_00); // ChainLog Updates // Add the new join, clip, and abacus to the Chainlog DssExecLib.setChangelogAddress("RETH", RETH); DssExecLib.setChangelogAddress("PIP_RETH", PIP_RETH); DssExecLib.setChangelogAddress("MCD_JOIN_RETH_A", MCD_JOIN_RETH_A); DssExecLib.setChangelogAddress("MCD_CLIP_RETH_A", MCD_CLIP_RETH_A); DssExecLib.setChangelogAddress("MCD_CLIP_CALC_RETH_A", MCD_CLIP_CALC_RETH_A); } function updateCollaterals() internal { // ------------------------------- Collateral updates ------------------------------- // Enable autoline for XXX-A // Poll Link: // Forum Link: // DssExecLib.setIlkAutoLineParameters( // XXX-A, // AMOUNT, // GAP, // TTL // ); } function offboardCollaterals() internal { // ----------------------------- Collateral offboarding ----------------------------- // 1st Stage of Collateral Offboarding Process // Poll Link: // uint256 line; // uint256 lineReduction; // Set XXX-A Maximum Debt Ceiling to 0 // (,,,line,) = vat.ilks("XXX-A"); // lineReduction += line; // DssExecLib.removeIlkFromAutoLine("XXX-A"); // DssExecLib.setIlkDebtCeiling("XXX-A", 0); // Set XXX-A Maximum Debt Ceiling to 0 // (,,,line,) = vat.ilks("XXX-A"); // lineReduction += line; // DssExecLib.removeIlkFromAutoLine("XXX-A"); // DssExecLib.setIlkDebtCeiling("XXX-A", 0); // Decrease Global Debt Ceiling by total amount of offboarded ilks // vat.file("Line", _sub(vat.Line(), lineReduction)); // 2nd Stage of Collateral Offboarding Process // address spotter = DssExecLib.spotter(); // Offboard XXX-A // Poll Link: // Forum Link: // DssExecLib.setIlkLiquidationPenalty("XXX-A", 0); // DssExecLib.setKeeperIncentiveFlatRate("XXX-A", 0); // DssExecLib.linearInterpolation({ // _name: "XXX-A Offboarding", // _target: spotter, // _ilk: "XXX-A", // _what: "mat", // _startTime: block.timestamp, // _start: CURRENT_XXX_A_MAT, // _end: TARGET_XXX_A_MAT, // _duration: 30 days // }); // Offboard XXX-A // Poll Link: // Forum Link: // DssExecLib.setIlkLiquidationPenalty("XXX-A", 0); // DssExecLib.setKeeperIncentiveFlatRate("XXX-A", 0); // DssExecLib.linearInterpolation({ // _name: "XXX-A Offboarding", // _target: spotter, // _ilk: "XXX-A", // _what: "mat", // _startTime: block.timestamp, // _start: CURRENT_XXX_A_MAT, // _end: TARGET_XXX_A_MAT, // _duration: 30 days // }); } // --- Offboarding: Current Liquidation Ratio --- // uint256 constant CURRENT_XXX_A_MAT = XYZ * RAY / 100; // --- Offboarding: Target Liquidation Ratio --- // uint256 constant TARGET_XXX_A_MAT = XYZ * RAY / 100; } ////// src/DssSpell.sol // SPDX-FileCopyrightText: © 2020 Dai Foundation <www.daifoundation.org> // // 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 <https://www.gnu.org/licenses/>. /* pragma solidity 0.6.12; */ // Enable ABIEncoderV2 when onboarding collateral through `DssExecLib.addNewCollateral()` /* pragma experimental ABIEncoderV2; */ /* import "dss-exec-lib/DssExec.sol"; */ /* import "dss-exec-lib/DssAction.sol"; */ /* import { DssSpellCollateralAction } from "./DssSpellCollateral.sol"; */ interface StarknetBridgeLike { function close() external; function isOpen() external returns (uint256); } interface StarknetGovRelayLike_1 { function relay(uint256 spell) external; } interface StarknetEscrowLike_1 { function approve(address token, address spender, uint256 value) external; } contract DssSpellAction is DssAction, DssSpellCollateralAction { // Provides a descriptive tag for bot consumption // This should be modified weekly to provide a summary of the actions // Hash: cast keccak -- "$(wget https://raw.githubusercontent.com/makerdao/community/27dc14fd37c03c152eca32296076f5603c9fd4db/governance/votes/Executive%20vote%20-%20October%2026%2C%202022.md -q -O - 2>/dev/null)" string public constant override description = "2022-10-26 MakerDAO Executive Spell | Hash: 0x2e8fa79dc9702f6d3b8b03523fc45c4f3f95751a833e52958d64182b0ec8b2a5"; // Turn office hours on /* function officeHours() public override returns (bool) { return false; } */ // 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 be found at // https://ipfs.io/ipfs/QmVp4mhhbwWGTfbh2BzwQB9eiBrQBKiqcPRZCaAxNUaar6 // // --- Rates --- // uint256 internal constant ONE_FIVE_PCT_RATE = 1000000000472114805215157978; // --- Math --- // uint256 internal constant WAD = 10 ** 18; address internal constant NEW_STARKNET_DAI_BRIDGE = 0x9F96fE0633eE838D0298E8b8980E6716bE81388d; uint256 internal constant L2_FEE_SPELL = 0x0726cf4161e783ef0043e4998c61ecd70ea3e6f673fd7cf1060130529f849bc2; function actions() public override { // --------------------------------------------------------------------- // rETH Onboarding // Vote: https://vote.makerdao.com/polling/QmfMswF2#poll-detail // Vote: https://vote.makerdao.com/polling/QmS7dBuQ#poll-detail // Forum: https://forum.makerdao.com/t/reth-collateral-onboarding-risk-evaluation/15286 // Includes changes from the DssSpellCollateralAction collateralAction(); // Starknet Bridge Fee Upgrade // Vote: https://vote.makerdao.com/polling/QmbWkTvW#poll-detail // Forum: https://forum.makerdao.com/t/starknet-changes-for-2022-10-26-executive-spell/18468 // Close the current bridge address currentStarknetDAIBridge = DssExecLib.getChangelogAddress("STARKNET_DAI_BRIDGE"); (bool currentBridgeClosed,) = currentStarknetDAIBridge.call(abi.encodeWithSignature("close()")); // Approve new bridge and cast spell only if the current bridge has closed successfully if(currentBridgeClosed == true && StarknetBridgeLike(currentStarknetDAIBridge).isOpen() == 0){ // Bridge code at time of casting: https://github.com/makerdao/starknet-dai-bridge/blob/ad9f53425582c39c29cb3a7420e430ab01a46d4d/contracts/l1/L1DAIBridge.sol address starknetEscrow = DssExecLib.getChangelogAddress("STARKNET_ESCROW"); address dai = DssExecLib.getChangelogAddress("MCD_DAI"); StarknetEscrowLike_1(starknetEscrow).approve(dai, NEW_STARKNET_DAI_BRIDGE, type(uint).max); // Relay the L2 spell content // See: https://voyager.online/contract/0x0726cf4161e783ef0043e4998c61ecd70ea3e6f673fd7cf1060130529f849bc2#code address starknetGovRelay = DssExecLib.getChangelogAddress("STARKNET_GOV_RELAY"); StarknetGovRelayLike_1(starknetGovRelay).relay(L2_FEE_SPELL); // ChangeLog DssExecLib.setChangelogAddress("STARKNET_DAI_BRIDGE", NEW_STARKNET_DAI_BRIDGE); DssExecLib.setChangelogAddress("STARKNET_DAI_BRIDGE_LEGACY", currentStarknetDAIBridge); } // Bump changelog version either way, due to rETH onboarding DssExecLib.setChangelogVersion("1.14.3"); } } contract DssSpell is DssExec { constructor() DssExec(block.timestamp + 30 days, address(new DssSpellAction())) public {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"action","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cast","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expiration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"log","outputs":[{"internalType":"contract Changelog","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextCastTime","outputs":[{"internalType":"uint256","name":"castTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"officeHours","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"contract PauseAbstract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tag","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b5062278d004201604051620000279062000212565b604051809103906000f08015801562000044573d6000803e3d6000fd5b5073da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b815260040162000092906200032f565b60206040518083038186803b158015620000ab57600080fd5b505afa158015620000c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e69190620002dd565b73ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508160c081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250506040516024016040516020818303038152906040527f61461954000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060019080519060200190620001f592919062000220565b50600080829050803f915081608081815250505050505062000398565b6118c780620014b383390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026357805160ff191683800117855562000294565b8280016001018555821562000294579182015b828111156200029357825182559160200191906001019062000276565b5b509050620002a39190620002a7565b5090565b5b80821115620002c2576000816000905550600101620002a8565b5090565b600081519050620002d7816200037e565b92915050565b600060208284031215620002f057600080fd5b60006200030084828501620002c6565b91505092915050565b7f4d43445f50415553450000000000000000000000000000000000000000000000815250565b6000602082019050620003456000830162000309565b919050565b600062000357826200035e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b62000389816200034a565b81146200039557600080fd5b50565b60805160a05160601c60c05160e05160601c6110a86200040b600039806104a4528061053352806106e9528061078f5250806102f552806106425250806102d1528061035752806103fc528061056f52806107cb528061086d525080610331528061059052806107ec52506110a86000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80637284e4161161008c578063ae8421e111610066578063ae8421e1146101cd578063b0604a26146101eb578063f7992d85146101f5578063fe7d47bb14610213576100ce565b80637284e416146101875780638456cb59146101a557806396d373e5146101c3576100ce565b8062a7029b146100d35780630a7a1c4d146100f15780634665096d1461010f57806351973ec91461012d57806351f910661461014b5780636e832f0714610169575b600080fd5b6100db610231565b6040516100e89190610d9f565b60405180910390f35b6100f96102cf565b6040516101069190610d02565b60405180910390f35b6101176102f3565b6040516101249190610e79565b60405180910390f35b610135610317565b6040516101429190610dc1565b60405180910390f35b61015361032f565b6040516101609190610d84565b60405180910390f35b610171610353565b60405161017e9190610d69565b60405180910390f35b61018f6103f8565b60405161019c9190610df7565b60405180910390f35b6101ad6104a2565b6040516101ba9190610ddc565b60405180910390f35b6101cb6104c6565b005b6101d561062d565b6040516101e29190610d69565b60405180910390f35b6101f3610640565b005b6101fd610863565b60405161020a9190610e79565b60405180910390f35b61021b610869565b6040516102289190610e79565b60405180910390f35b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102c75780601f1061029c576101008083540402835291602001916102c7565b820191906000526020600020905b8154815290600101906020018083116102aa57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b73da0ab1e0017debcd72be8599041a2aa3ba7e740f81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e832f076040518163ffffffff1660e01b815260040160206040518083038186803b1580156103bb57600080fd5b505afa1580156103cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f391906109ed565b905090565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637284e4166040518163ffffffff1660e01b815260040160006040518083038186803b15801561046057600080fd5b505afa158015610474573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061049d9190610a57565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900460ff1615610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050d90610e19565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663168ccd677f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060016000546040518563ffffffff1660e01b81526004016105d39493929190610d1d565b600060405180830381600087803b1580156105ed57600080fd5b505af1158015610601573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061062a9190610a16565b50565b600260009054906101000a900460ff1681565b7f00000000000000000000000000000000000000000000000000000000000000004211156106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069a90610e59565b60405180910390fd5b60008054146106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90610e39565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190610a98565b42016000819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166346d2fbbb7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060016000546040518563ffffffff1660e01b815260040161082f9493929190610d1d565b600060405180830381600087803b15801561084957600080fd5b505af115801561085d573d6000803e3d6000fd5b50505050565b60005481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bf0fbcec6000546040518263ffffffff1660e01b81526004016108c69190610e79565b60206040518083038186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109169190610a98565b905090565b60008151905061092a81611044565b92915050565b600082601f83011261094157600080fd5b815161095461094f82610ec1565b610e94565b9150808252602083016020830185838301111561097057600080fd5b61097b838284611000565b50505092915050565b600082601f83011261099557600080fd5b81516109a86109a382610eed565b610e94565b915080825260208301602083018583830111156109c457600080fd5b6109cf838284611000565b50505092915050565b6000815190506109e78161105b565b92915050565b6000602082840312156109ff57600080fd5b6000610a0d8482850161091b565b91505092915050565b600060208284031215610a2857600080fd5b600082015167ffffffffffffffff811115610a4257600080fd5b610a4e84828501610930565b91505092915050565b600060208284031215610a6957600080fd5b600082015167ffffffffffffffff811115610a8357600080fd5b610a8f84828501610984565b91505092915050565b600060208284031215610aaa57600080fd5b6000610ab8848285016109d8565b91505092915050565b610aca81610f66565b82525050565b610ad981610f78565b82525050565b610ae881610f84565b82525050565b6000610af982610f2e565b610b038185610f44565b9350610b13818560208601611000565b610b1c81611033565b840191505092915050565b600081546001811660008114610b445760018114610b6a57610bae565b607f6002830416610b558187610f44565b955060ff198316865260208601935050610bae565b60028204610b788187610f44565b9550610b8385610f19565b60005b82811015610ba557815481890152600182019150602081019050610b86565b80880195505050505b505092915050565b610bbf81610fb8565b82525050565b610bce81610fdc565b82525050565b6000610bdf82610f39565b610be98185610f55565b9350610bf9818560208601611000565b610c0281611033565b840191505092915050565b6000610c1a601283610f55565b91507f7370656c6c2d616c72656164792d6361737400000000000000000000000000006000830152602082019050919050565b6000610c5a602583610f55565b91507f54686973207370656c6c2068617320616c7265616479206265656e207363686560008301527f64756c65640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610cc0601983610f55565b91507f5468697320636f6e7472616374206861732065787069726564000000000000006000830152602082019050919050565b610cfc81610fae565b82525050565b6000602082019050610d176000830184610ac1565b92915050565b6000608082019050610d326000830187610ac1565b610d3f6020830186610adf565b8181036040830152610d518185610b27565b9050610d606060830184610cf3565b95945050505050565b6000602082019050610d7e6000830184610ad0565b92915050565b6000602082019050610d996000830184610adf565b92915050565b60006020820190508181036000830152610db98184610aee565b905092915050565b6000602082019050610dd66000830184610bb6565b92915050565b6000602082019050610df16000830184610bc5565b92915050565b60006020820190508181036000830152610e118184610bd4565b905092915050565b60006020820190508181036000830152610e3281610c0d565b9050919050565b60006020820190508181036000830152610e5281610c4d565b9050919050565b60006020820190508181036000830152610e7281610cb3565b9050919050565b6000602082019050610e8e6000830184610cf3565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610eb757600080fd5b8060405250919050565b600067ffffffffffffffff821115610ed857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610f0457600080fd5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610f7182610f8e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610fc382610fca565b9050919050565b6000610fd582610f8e565b9050919050565b6000610fe782610fee565b9050919050565b6000610ff982610f8e565b9050919050565b60005b8381101561101e578082015181840152602081019050611003565b8381111561102d576000848401525b50505050565b6000601f19601f8301169050919050565b61104d81610f78565b811461105857600080fd5b50565b61106481610fae565b811461106f57600080fd5b5056fea264697066735822122094c1414bde0a031a109018279cc910e680895528f3640600934e6173d838fe0064736f6c634300060c0033608060405234801561001057600080fd5b506118a7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063614619541461005c5780636e832f07146100665780637284e41614610084578063bf0fbcec146100a2578063f99e36bc146100d2575b600080fd5b6100646100dc565b005b61006e6101b5565b60405161007b9190611427565b60405180910390f35b61008c6101be565b6040516100999190611442565b60405180910390f35b6100bc60048036038101906100b79190610e83565b6101da565b6040516100c99190611635565b60405180910390f35b6100da6102a9565b005b738de6ddbcd5053d32292aaa0d2105a32d108484a66335329d4c426100ff6101b5565b6040518363ffffffff1660e01b815260040161011c929190611650565b60206040518083038186803b15801561013457600080fd5b505af4158015610148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016c9190610e5a565b6101ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a29061156b565b60405180910390fd5b6101b36102a9565b565b60006001905090565b6040518060a00160405280606e8152602001611804606e913981565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff64ffffffffff1682111561021057600080fd5b738de6ddbcd5053d32292aaa0d2105a32d108484a663d255745683426102346101b5565b6040518463ffffffff1660e01b815260040161025293929190611679565b60206040518083038186803b15801561026a57600080fd5b505af415801561027e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a29190610eac565b9050919050565b6102b16108d9565b6000738de6ddbcd5053d32292aaa0d2105a32d108484a663a16ed56f6040518163ffffffff1660e01b81526004016102e8906114f2565b60206040518083038186803b15801561030057600080fd5b505af4158015610314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103389190610e31565b905060008173ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f43d726d6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103e391906113a2565b6000604051808303816000865af19150503d8060008114610420576040519150601f19603f3d011682016040523d82523d6000602084013e610425565b606091505b50509050600115158115151480156104bc575060008273ffffffffffffffffffffffffffffffffffffffff166347535d7b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561048257600080fd5b505af1158015610496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ba9190610eac565b145b15610870576000738de6ddbcd5053d32292aaa0d2105a32d108484a663a16ed56f6040518163ffffffff1660e01b81526004016104f8906114d9565b60206040518083038186803b15801561051057600080fd5b505af4158015610524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105489190610e31565b90506000738de6ddbcd5053d32292aaa0d2105a32d108484a663a16ed56f6040518163ffffffff1660e01b815260040161058190611552565b60206040518083038186803b15801561059957600080fd5b505af41580156105ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d19190610e31565b90508173ffffffffffffffffffffffffffffffffffffffff1663e1f21c6782739f96fe0633ee838d0298e8b8980e6716be81388d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518463ffffffff1660e01b8152600401610644939291906113b9565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b505050506000738de6ddbcd5053d32292aaa0d2105a32d108484a663a16ed56f6040518163ffffffff1660e01b81526004016106ad9061158b565b60206040518083038186803b1580156106c557600080fd5b505af41580156106d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fd9190610e31565b90508073ffffffffffffffffffffffffffffffffffffffff1663be0d56d27f0726cf4161e783ef0043e4998c61ecd70ea3e6f673fd7cf1060130529f849bc26040518263ffffffff1660e01b81526004016107589190611635565b600060405180830381600087803b15801561077257600080fd5b505af1158015610786573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a66319d900a1739f96fe0633ee838d0298e8b8980e6716be81388d6040518263ffffffff1660e01b81526004016107d5919061150b565b60006040518083038186803b1580156107ed57600080fd5b505af4158015610801573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a66319d900a1866040518263ffffffff1660e01b815260040161083c919061148b565b60006040518083038186803b15801561085457600080fd5b505af4158015610868573d6000803e3d6000fd5b505050505050505b738de6ddbcd5053d32292aaa0d2105a32d108484a6635f3a7dd76040518163ffffffff1660e01b81526004016108a590611532565b60006040518083038186803b1580156108bd57600080fd5b505af41580156108d1573d6000803e3d6000fd5b505050505050565b6108e16108e3565b565b738de6ddbcd5053d32292aaa0d2105a32d108484a6637571a78e604051806102a001604052807f524554482d410000000000000000000000000000000000000000000000000000815260200173ae78736cd615f374d3085123a210448e74fc639373ffffffffffffffffffffffffffffffffffffffff16815260200173c6424e862f1462281b0a5fac078e4b63006bdebf73ffffffffffffffffffffffffffffffffffffffff1681526020017327ca5e525ea473ed52ea9423cd08ccc081d96a9873ffffffffffffffffffffffffffffffffffffffff16815260200173c59b62afc96cf9737f717b5e5815070c0f15439673ffffffffffffffffffffffffffffffffffffffff16815260200173ee7f0b350aa119b3d05dc733a4621a81972f7d4773ffffffffffffffffffffffffffffffffffffffff168152602001600115158152602001600115158152602001600115158152602001600081526020016103e8600f028152602001620f4240600202815260200161051481526020016b033b2e3ca65dca26e20d5eda8152602001612af881526020016113888152602001611c2081526020016111948152602001614268815260200160fa8152602001600a8152506040518263ffffffff1660e01b8152600401610ac29190611619565b60006040518083038186803b158015610ada57600080fd5b505af4158015610aee573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663d0bab93373c59b62afc96cf9737f717b5e5815070c0f154396605a6126ac6040518463ffffffff1660e01b8152600401610b44939291906113f0565b60006040518083038186803b158015610b5c57600080fd5b505af4158015610b70573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a66319d900a173ae78736cd615f374d3085123a210448e74fc63936040518263ffffffff1660e01b8152600401610bbf91906115a4565b60006040518083038186803b158015610bd757600080fd5b505af4158015610beb573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a66319d900a173ee7f0b350aa119b3d05dc733a4621a81972f7d476040518263ffffffff1660e01b8152600401610c3a91906114b2565b60006040518083038186803b158015610c5257600080fd5b505af4158015610c66573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a66319d900a173c6424e862f1462281b0a5fac078e4b63006bdebf6040518263ffffffff1660e01b8152600401610cb59190611464565b60006040518083038186803b158015610ccd57600080fd5b505af4158015610ce1573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a66319d900a17327ca5e525ea473ed52ea9423cd08ccc081d96a986040518263ffffffff1660e01b8152600401610d3091906115cb565b60006040518083038186803b158015610d4857600080fd5b505af4158015610d5c573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a66319d900a173c59b62afc96cf9737f717b5e5815070c0f1543966040518263ffffffff1660e01b8152600401610dab91906115f2565b60006040518083038186803b158015610dc357600080fd5b505af4158015610dd7573d6000803e3d6000fd5b50505050565b600081519050610dec816117be565b92915050565b600081519050610e01816117d5565b92915050565b600081359050610e16816117ec565b92915050565b600081519050610e2b816117ec565b92915050565b600060208284031215610e4357600080fd5b6000610e5184828501610ddd565b91505092915050565b600060208284031215610e6c57600080fd5b6000610e7a84828501610df2565b91505092915050565b600060208284031215610e9557600080fd5b6000610ea384828501610e07565b91505092915050565b600060208284031215610ebe57600080fd5b6000610ecc84828501610e1c565b91505092915050565b610ede816116f3565b82525050565b610eed816116f3565b82525050565b610efc816116f3565b82525050565b610f0b81611705565b82525050565b610f1a81611705565b82525050565b610f2981611705565b82525050565b610f3881611711565b82525050565b6000610f49826116b0565b610f5381856116c6565b9350610f6381856020860161177a565b80840191505092915050565b610f7881611756565b82525050565b610f8781611768565b82525050565b6000610f98826116bb565b610fa281856116d1565b9350610fb281856020860161177a565b610fbb816117ad565b840191505092915050565b7f4d43445f4a4f494e5f524554485f410000000000000000000000000000000000815250565b7f535441524b4e45545f4441495f4252494447455f4c4547414359000000000000815250565b7f5049505f52455448000000000000000000000000000000000000000000000000815250565b7f535441524b4e45545f455343524f570000000000000000000000000000000000815250565b7f535441524b4e45545f4441495f42524944474500000000000000000000000000815250565b60006110916006836116e2565b91507f312e31342e3300000000000000000000000000000000000000000000000000006000830152602082019050919050565b7f4d43445f44414900000000000000000000000000000000000000000000000000815250565b60006110f76014836116d1565b91507f4f757473696465206f666669636520686f7572730000000000000000000000006000830152602082019050919050565b7f535441524b4e45545f474f565f52454c41590000000000000000000000000000815250565b7f5245544800000000000000000000000000000000000000000000000000000000815250565b7f4d43445f434c49505f524554485f410000000000000000000000000000000000815250565b7f4d43445f434c49505f43414c435f524554485f41000000000000000000000000815250565b6102a0820160008201516111d96000850182610f2f565b5060208201516111ec6020850182610ef3565b5060408201516111ff6040850182610ef3565b5060608201516112126060850182610ef3565b5060808201516112256080850182610ef3565b5060a082015161123860a0850182610ef3565b5060c082015161124b60c0850182610f20565b5060e082015161125e60e0850182610f20565b50610100820151611273610100850182610f20565b50610120820151611288610120850182611384565b5061014082015161129d610140850182611384565b506101608201516112b2610160850182611384565b506101808201516112c7610180850182611384565b506101a08201516112dc6101a0850182611384565b506101c08201516112f16101c0850182611384565b506101e08201516113066101e0850182611384565b5061020082015161131b610200850182611384565b50610220820151611330610220850182611384565b50610240820151611345610240850182611384565b5061026082015161135a610260850182611384565b5061028082015161136f610280850182611384565b50505050565b61137e8161173b565b82525050565b61138d8161173b565b82525050565b61139c81611745565b82525050565b60006113ae8284610f3e565b915081905092915050565b60006060820190506113ce6000830186610ed5565b6113db6020830185610ed5565b6113e86040830184611375565b949350505050565b60006060820190506114056000830186610ee4565b6114126020830185610f6f565b61141f6040830184610f7e565b949350505050565b600060208201905061143c6000830184610f02565b92915050565b6000602082019050818103600083015261145c8184610f8d565b905092915050565b600060408201905061147860008301610fc6565b6114856020830184610ee4565b92915050565b600060408201905061149f60008301610fec565b6114ac6020830184610ee4565b92915050565b60006040820190506114c660008301611012565b6114d36020830184610ee4565b92915050565b60006020820190506114ed60008301611038565b919050565b60006020820190506115066000830161105e565b919050565b600060408201905061151f6000830161105e565b61152c6020830184610ee4565b92915050565b6000602082019050818103600083015261154b81611084565b9050919050565b6000602082019050611566600083016110c4565b919050565b60006020820190508181036000830152611584816110ea565b9050919050565b600060208201905061159f6000830161112a565b919050565b60006040820190506115b860008301611150565b6115c56020830184610ee4565b92915050565b60006040820190506115df60008301611176565b6115ec6020830184610ee4565b92915050565b60006040820190506116066000830161119c565b6116136020830184610ee4565b92915050565b60006102a08201905061162f60008301846111c2565b92915050565b600060208201905061164a6000830184611375565b92915050565b60006040820190506116656000830185611393565b6116726020830184610f11565b9392505050565b600060608201905061168e6000830186611393565b61169b6020830185611393565b6116a86040830184610f11565b949350505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006116fe8261171b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600064ffffffffff82169050919050565b60006117618261173b565b9050919050565b60006117738261173b565b9050919050565b60005b8381101561179857808201518184015260208101905061177d565b838111156117a7576000848401525b50505050565b6000601f19601f8301169050919050565b6117c7816116f3565b81146117d257600080fd5b50565b6117de81611705565b81146117e957600080fd5b50565b6117f58161173b565b811461180057600080fd5b5056fe323032322d31302d3236204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307832653866613739646339373032663664336238623033353233666334356334663366393537353161383333653532393538643634313832623065633862326135a26469706673582212203668a2ece3ed57a07f30c0cb9e92f6b0ccef9a01a9e9d47b450e10a27e4d4cca64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ce5760003560e01c80637284e4161161008c578063ae8421e111610066578063ae8421e1146101cd578063b0604a26146101eb578063f7992d85146101f5578063fe7d47bb14610213576100ce565b80637284e416146101875780638456cb59146101a557806396d373e5146101c3576100ce565b8062a7029b146100d35780630a7a1c4d146100f15780634665096d1461010f57806351973ec91461012d57806351f910661461014b5780636e832f0714610169575b600080fd5b6100db610231565b6040516100e89190610d9f565b60405180910390f35b6100f96102cf565b6040516101069190610d02565b60405180910390f35b6101176102f3565b6040516101249190610e79565b60405180910390f35b610135610317565b6040516101429190610dc1565b60405180910390f35b61015361032f565b6040516101609190610d84565b60405180910390f35b610171610353565b60405161017e9190610d69565b60405180910390f35b61018f6103f8565b60405161019c9190610df7565b60405180910390f35b6101ad6104a2565b6040516101ba9190610ddc565b60405180910390f35b6101cb6104c6565b005b6101d561062d565b6040516101e29190610d69565b60405180910390f35b6101f3610640565b005b6101fd610863565b60405161020a9190610e79565b60405180910390f35b61021b610869565b6040516102289190610e79565b60405180910390f35b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102c75780601f1061029c576101008083540402835291602001916102c7565b820191906000526020600020905b8154815290600101906020018083116102aa57829003601f168201915b505050505081565b7f000000000000000000000000d7ea09c5c9ef6bf51012371b50a4bba02fa3dedb81565b7f000000000000000000000000000000000000000000000000000000006381048b81565b73da0ab1e0017debcd72be8599041a2aa3ba7e740f81565b7f5ef005f0b978a4d0616787f4304fe5ac5271c32939a9b5dc8198ea99c37f577181565b60007f000000000000000000000000d7ea09c5c9ef6bf51012371b50a4bba02fa3dedb73ffffffffffffffffffffffffffffffffffffffff16636e832f076040518163ffffffff1660e01b815260040160206040518083038186803b1580156103bb57600080fd5b505afa1580156103cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f391906109ed565b905090565b60607f000000000000000000000000d7ea09c5c9ef6bf51012371b50a4bba02fa3dedb73ffffffffffffffffffffffffffffffffffffffff16637284e4166040518163ffffffff1660e01b815260040160006040518083038186803b15801561046057600080fd5b505afa158015610474573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061049d9190610a57565b905090565b7f000000000000000000000000be286431454714f511008713973d3b053a2d38f381565b600260009054906101000a900460ff1615610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050d90610e19565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff1663168ccd677f000000000000000000000000d7ea09c5c9ef6bf51012371b50a4bba02fa3dedb7f5ef005f0b978a4d0616787f4304fe5ac5271c32939a9b5dc8198ea99c37f577160016000546040518563ffffffff1660e01b81526004016105d39493929190610d1d565b600060405180830381600087803b1580156105ed57600080fd5b505af1158015610601573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061062a9190610a16565b50565b600260009054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000006381048b4211156106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069a90610e59565b60405180910390fd5b60008054146106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90610e39565b60405180910390fd5b7f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190610a98565b42016000819055507f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff166346d2fbbb7f000000000000000000000000d7ea09c5c9ef6bf51012371b50a4bba02fa3dedb7f5ef005f0b978a4d0616787f4304fe5ac5271c32939a9b5dc8198ea99c37f577160016000546040518563ffffffff1660e01b815260040161082f9493929190610d1d565b600060405180830381600087803b15801561084957600080fd5b505af115801561085d573d6000803e3d6000fd5b50505050565b60005481565b60007f000000000000000000000000d7ea09c5c9ef6bf51012371b50a4bba02fa3dedb73ffffffffffffffffffffffffffffffffffffffff1663bf0fbcec6000546040518263ffffffff1660e01b81526004016108c69190610e79565b60206040518083038186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109169190610a98565b905090565b60008151905061092a81611044565b92915050565b600082601f83011261094157600080fd5b815161095461094f82610ec1565b610e94565b9150808252602083016020830185838301111561097057600080fd5b61097b838284611000565b50505092915050565b600082601f83011261099557600080fd5b81516109a86109a382610eed565b610e94565b915080825260208301602083018583830111156109c457600080fd5b6109cf838284611000565b50505092915050565b6000815190506109e78161105b565b92915050565b6000602082840312156109ff57600080fd5b6000610a0d8482850161091b565b91505092915050565b600060208284031215610a2857600080fd5b600082015167ffffffffffffffff811115610a4257600080fd5b610a4e84828501610930565b91505092915050565b600060208284031215610a6957600080fd5b600082015167ffffffffffffffff811115610a8357600080fd5b610a8f84828501610984565b91505092915050565b600060208284031215610aaa57600080fd5b6000610ab8848285016109d8565b91505092915050565b610aca81610f66565b82525050565b610ad981610f78565b82525050565b610ae881610f84565b82525050565b6000610af982610f2e565b610b038185610f44565b9350610b13818560208601611000565b610b1c81611033565b840191505092915050565b600081546001811660008114610b445760018114610b6a57610bae565b607f6002830416610b558187610f44565b955060ff198316865260208601935050610bae565b60028204610b788187610f44565b9550610b8385610f19565b60005b82811015610ba557815481890152600182019150602081019050610b86565b80880195505050505b505092915050565b610bbf81610fb8565b82525050565b610bce81610fdc565b82525050565b6000610bdf82610f39565b610be98185610f55565b9350610bf9818560208601611000565b610c0281611033565b840191505092915050565b6000610c1a601283610f55565b91507f7370656c6c2d616c72656164792d6361737400000000000000000000000000006000830152602082019050919050565b6000610c5a602583610f55565b91507f54686973207370656c6c2068617320616c7265616479206265656e207363686560008301527f64756c65640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610cc0601983610f55565b91507f5468697320636f6e7472616374206861732065787069726564000000000000006000830152602082019050919050565b610cfc81610fae565b82525050565b6000602082019050610d176000830184610ac1565b92915050565b6000608082019050610d326000830187610ac1565b610d3f6020830186610adf565b8181036040830152610d518185610b27565b9050610d606060830184610cf3565b95945050505050565b6000602082019050610d7e6000830184610ad0565b92915050565b6000602082019050610d996000830184610adf565b92915050565b60006020820190508181036000830152610db98184610aee565b905092915050565b6000602082019050610dd66000830184610bb6565b92915050565b6000602082019050610df16000830184610bc5565b92915050565b60006020820190508181036000830152610e118184610bd4565b905092915050565b60006020820190508181036000830152610e3281610c0d565b9050919050565b60006020820190508181036000830152610e5281610c4d565b9050919050565b60006020820190508181036000830152610e7281610cb3565b9050919050565b6000602082019050610e8e6000830184610cf3565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610eb757600080fd5b8060405250919050565b600067ffffffffffffffff821115610ed857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610f0457600080fd5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610f7182610f8e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610fc382610fca565b9050919050565b6000610fd582610f8e565b9050919050565b6000610fe782610fee565b9050919050565b6000610ff982610f8e565b9050919050565b60005b8381101561101e578082015181840152602081019050611003565b8381111561102d576000848401525b50505050565b6000601f19601f8301169050919050565b61104d81610f78565b811461105857600080fd5b50565b61106481610fae565b811461106f57600080fd5b5056fea264697066735822122094c1414bde0a031a109018279cc910e680895528f3640600934e6173d838fe0064736f6c634300060c0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.