Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 10796281 | 2004 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DssSpell
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-09-04
*/
// 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.5.12;
// https://github.com/dapphub/ds-pause
interface DSPauseAbstract {
function setOwner(address) external;
function setAuthority(address) external;
function setDelay(uint256) external;
function plans(bytes32) external view returns (bool);
function proxy() external view returns (address);
function delay() external view returns (uint256);
function plot(address, bytes32, bytes calldata, uint256) external;
function drop(address, bytes32, bytes calldata, uint256) external;
function exec(address, bytes32, bytes calldata, uint256) external returns (bytes memory);
}
// https://github.com/makerdao/dss/blob/master/src/vat.sol
interface VatAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function can(address, address) external view returns (uint256);
function hope(address) external;
function nope(address) external;
function ilks(bytes32) external view returns (uint256, uint256, uint256, uint256, uint256);
function urns(bytes32, address) external view returns (uint256, uint256);
function gem(bytes32, address) external view returns (uint256);
function dai(address) external view returns (uint256);
function sin(address) external view returns (uint256);
function debt() external view returns (uint256);
function vice() external view returns (uint256);
function Line() external view returns (uint256);
function live() external view returns (uint256);
function init(bytes32) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function cage() external;
function slip(bytes32, address, int256) external;
function flux(bytes32, address, address, uint256) external;
function move(address, address, uint256) external;
function frob(bytes32, address, address, address, int256, int256) external;
function fork(bytes32, address, address, int256, int256) external;
function grab(bytes32, address, address, address, int256, int256) external;
function heal(uint256) external;
function suck(address, address, uint256) external;
function fold(bytes32, address, int256) external;
}
// https://github.com/makerdao/dss/blob/master/src/cat.sol
interface CatAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function box() external view returns (uint256);
function litter() external view returns (uint256);
function ilks(bytes32) external view returns (address, uint256, uint256);
function live() external view returns (uint256);
function vat() external view returns (address);
function vow() external view returns (address);
function file(bytes32, address) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, bytes32, address) external;
function bite(bytes32, address) external returns (uint256);
function claw(uint256) external;
function cage() external;
}
// https://github.com/makerdao/dss/blob/master/src/jug.sol
interface JugAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function ilks(bytes32) external view returns (uint256, uint256);
function vat() external view returns (address);
function vow() external view returns (address);
function base() external view returns (address);
function init(bytes32) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, uint256) external;
function file(bytes32, address) external;
function drip(bytes32) external returns (uint256);
}
// https://github.com/makerdao/dss/blob/master/src/flip.sol
interface FlipAbstract {
function wards(address) external view returns (uint256);
function rely(address usr) external;
function deny(address usr) external;
function bids(uint256) external view returns (uint256, uint256, address, uint48, uint48, address, address, uint256);
function vat() external view returns (address);
function cat() external view returns (address);
function ilk() external view returns (bytes32);
function beg() external view returns (uint256);
function ttl() external view returns (uint48);
function tau() external view returns (uint48);
function kicks() external view returns (uint256);
function file(bytes32, uint256) external;
function kick(address, address, uint256, uint256, uint256) external returns (uint256);
function tick(uint256) external;
function tend(uint256, uint256, uint256) external;
function dent(uint256, uint256, uint256) external;
function deal(uint256) external;
function yank(uint256) external;
}
// https://github.com/makerdao/dss/blob/master/src/spot.sol
interface SpotAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function ilks(bytes32) external view returns (address, uint256);
function vat() external view returns (address);
function par() external view returns (uint256);
function live() external view returns (uint256);
function file(bytes32, bytes32, address) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function poke(bytes32) external;
function cage() external;
}
// https://github.com/makerdao/osm
interface OsmAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function stopped() external view returns (uint256);
function src() external view returns (address);
function hop() external view returns (uint16);
function zzz() external view returns (uint64);
function cur() external view returns (uint128, uint128);
function nxt() external view returns (uint128, uint128);
function bud(address) external view returns (uint256);
function stop() external;
function start() external;
function change(address) external;
function step(uint16) external;
function void() external;
function pass() external view returns (bool);
function poke() external;
function peek() external view returns (bytes32, bool);
function peep() external view returns (bytes32, bool);
function read() external view returns (bytes32);
function kiss(address) external;
function diss(address) external;
function kiss(address[] calldata) external;
function diss(address[] calldata) external;
}
// https://github.com/makerdao/osm-mom
interface OsmMomAbstract {
function owner() external view returns (address);
function authority() external view returns (address);
function osms(bytes32) external view returns (address);
function setOsm(bytes32, address) external;
function setOwner(address) external;
function setAuthority(address) external;
function stop(bytes32) external;
}
// https://github.com/makerdao/median
interface MedianAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function age() external view returns (uint32);
function wat() external view returns (bytes32);
function bar() external view returns (uint256);
function orcl(address) external view returns (uint256);
function bud(address) external view returns (uint256);
function slot(uint8) external view returns (address);
function read() external view returns (uint256);
function peek() external view returns (uint256, bool);
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 poke(uint256[] calldata, uint256[] calldata, uint8[] calldata, bytes32[] calldata, bytes32[] calldata) external;
}
// https://github.com/makerdao/dss/blob/master/src/join.sol
interface GemJoinAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function vat() external view returns (address);
function ilk() external view returns (bytes32);
function gem() external view returns (address);
function dec() external view returns (uint256);
function live() external view returns (uint256);
function cage() external;
function join(address, uint256) external;
function exit(address, uint256) external;
}
// https://github.com/makerdao/flipper-mom/blob/master/src/FlipperMom.sol
interface FlipperMomAbstract {
function owner() external returns (address);
function setOwner(address) external;
function authority() external returns (address);
function setAuthority(address) external;
function cat() external returns (address);
function rely(address) external;
function deny(address) external;
}
// https://github.com/makerdao/ilk-registry/blob/master/src/IlkRegistry.sol
interface IlkRegistryAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function vat() external view returns (address);
function cat() external view returns (address);
function spot() external view returns (address);
function ilkData(bytes32) external view returns (
uint256,
address,
address,
address,
address,
uint256,
string memory,
string memory
);
function ilks() external view returns (bytes32[] memory);
function ilks(uint) external view returns (bytes32);
function add(address) external;
function remove(bytes32) external;
function removeAuth(bytes32) external;
function file(bytes32, bytes32, address) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, bytes32, string calldata) external;
function count() external view returns (uint256);
function list() external view returns (bytes32[] memory);
function list(uint256, uint256) external view returns (bytes32[] memory);
function get(uint256) external view returns (bytes32);
function info(bytes32) external view returns (
string memory,
string memory,
uint256,
address,
address,
address,
address
);
function pos(bytes32) external view returns (uint256);
function gem(bytes32) external view returns (address);
function pip(bytes32) external view returns (address);
function join(bytes32) external view returns (address);
function flip(bytes32) external view returns (address);
function dec(bytes32) external view returns (uint256);
function symbol(bytes32) external view returns (string memory);
function name(bytes32) external view returns (string memory);
}
contract ERC20 {
function decimals() external view returns (uint);
}
contract SpellAction {
// MAINNET ADDRESSES
//
// The contracts in this list should correspond to MCD core contracts, verify
// against the current release list at:
// https://changelog.makerdao.com/releases/mainnet/1.1.0/contracts.json
address constant MCD_VAT = 0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B;
address constant MCD_CAT = 0xa5679C04fc3d9d8b0AaB1F0ab83555b301cA70Ea;
address constant MCD_JUG = 0x19c0976f590D67707E62397C87829d896Dc0f1F1;
address constant MCD_SPOT = 0x65C79fcB50Ca1594B025960e539eD7A9a6D434A3;
address constant MCD_END = 0xaB14d3CE3F733CACB76eC2AbE7d2fcb00c99F3d5;
address constant FLIPPER_MOM = 0xc4bE7F74Ee3743bDEd8E0fA218ee5cf06397f472;
address constant OSM_MOM = 0x76416A4d5190d071bfed309861527431304aA14f;
address constant ILK_REGISTRY = 0x8b4ce5DCbb01e0e1f0521cd8dCfb31B308E52c24;
address constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
address constant MCD_JOIN_USDT_A = 0x0Ac6A1D74E84C2dF9063bDDc31699FF2a2BB22A2;
address constant MCD_FLIP_USDT_A = 0x667F41d0fDcE1945eE0f56A79dd6c142E37fCC26;
address constant PIP_USDT = 0x7a5918670B0C390aD25f7beE908c1ACc2d314A3C;
address constant PAXUSD = 0x8E870D67F660D95d5be530380D0eC0bd388289E1;
address constant MCD_JOIN_PAXUSD_A = 0x7e62B7E279DFC78DEB656E34D6a435cC08a44666;
address constant MCD_FLIP_PAXUSD_A = 0x52D5D1C05CC79Fc24A629Cb24cB06C5BE5d766E7;
address constant PIP_PAXUSD = 0x043B963E1B2214eC90046167Ea29C2c8bDD7c0eC;
// light feeds
//
// https://forum.makerdao.com/t/mip10c14-sp5-proposal-appoint-argent-as-a-light-feed/3015
address constant ARGENT = 0x130431b4560Cd1d74A990AE86C337a33171FF3c6;
// https://forum.makerdao.com/t/mip10c14-sp6-proposal-appoint-mycrypto-as-a-light-feed/3383
address constant MYCRYPTO = 0x3CB645a8f10Fb7B0721eaBaE958F77a878441Cb9;
// Medianizers
address constant USDTUSD = 0x56D4bBF358D7790579b55eA6Af3f605BcA2c0C3A;
address constant MANAUSD = 0x681c4F8f69cF68852BAd092086ffEaB31F5B812c;
address constant BATUSD = 0x18B4633D6E39870f398597f3c1bA8c4A41294966;
address constant BTCUSD = 0xe0F30cb149fAADC7247E953746Be9BbBB6B5751f;
address constant ETHBTC = 0x81A679f98b63B3dDf2F17CB5619f4d6775b3c5ED;
address constant ETHUSD = 0x64DE91F5A373Cd4c28de3600cB34C7C6cE410C85;
address constant KNCUSD = 0x83076a2F42dc1925537165045c9FDe9A4B71AD97;
address constant ZRXUSD = 0x956ecD6a9A9A0d84e8eB4e6BaaC09329E202E55e;
// Decimals & precision
uint256 constant THOUSAND = 10 ** 3;
uint256 constant MILLION = 10 ** 6;
uint256 constant WAD = 10 ** 18;
uint256 constant RAY = 10 ** 27;
uint256 constant RAD = 10 ** 45;
// 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) )'
//
uint256 constant TWO_PCT_RATE = 1000000000627937192491029810;
uint256 constant FOUR_PCT_RATE = 1000000001243680656318820312;
uint256 constant SIX_PCT_RATE = 1000000001847694957439350562;
uint256 constant TEN_PCT_RATE = 1000000003022265980097387650;
uint256 constant FOURTY_EIGHT_PCT_RATE = 1000000012431573129530493155;
function execute() external {
/*** Risk Parameter Adjustments ***/
// set the global debt ceiling to 763,000,000
// 708 (current DC) + 40 (WBTC-A increase) + 10 (tether DC) + 5 (paxusd DC)
VatAbstract(MCD_VAT).file("Line", 763 * MILLION * RAD);
// Set the WBTC-A debt ceiling
//
// Existing debt ceiling: 80 million
// New debt ceiling: 120 million
VatAbstract(MCD_VAT).file("WBTC-A", "line", 120 * MILLION * RAD);
// Set the BAT-A stability fee
// Previous: 0%
// New: 2%
JugAbstract(MCD_JUG).drip("BAT-A"); // drip right before
JugAbstract(MCD_JUG).file("BAT-A", "duty", TWO_PCT_RATE);
// Set the USDC-A stability fee
// Previous: 0%
// New: 2%
JugAbstract(MCD_JUG).drip("USDC-A"); // drip right before
JugAbstract(MCD_JUG).file("USDC-A", "duty", TWO_PCT_RATE);
// Set the USDC-B stability fee
// Previous: 44%
// New: 48%
JugAbstract(MCD_JUG).drip("USDC-B"); // drip right before
JugAbstract(MCD_JUG).file("USDC-B", "duty", FOURTY_EIGHT_PCT_RATE);
// Set the WBTC-A stability fee
// Previous: 0%
// New: 2%
JugAbstract(MCD_JUG).drip("WBTC-A"); // drip right before
JugAbstract(MCD_JUG).file("WBTC-A", "duty", TWO_PCT_RATE);
// Set the KNC-A stability fee
// Previous: 0%
// New: 2%
JugAbstract(MCD_JUG).drip("KNC-A"); // drip right before
JugAbstract(MCD_JUG).file("KNC-A", "duty", TWO_PCT_RATE);
// Set the ZRX-A stability fee
// Previous: 0%
// New: 2%
JugAbstract(MCD_JUG).drip("ZRX-A"); // drip right before
JugAbstract(MCD_JUG).file("ZRX-A", "duty", TWO_PCT_RATE);
// Set the MANA-A stability fee
// Previous: 6%
// New: 10%
JugAbstract(MCD_JUG).drip("MANA-A"); // drip right before
JugAbstract(MCD_JUG).file("MANA-A", "duty", TEN_PCT_RATE);
// argent address array
address[] memory argent = new address[](1);
argent[0] = ARGENT;
// mycrypto address array
address[] memory mycrypto = new address[](1);
mycrypto[0] = MYCRYPTO;
// Lift New Argent light feed
MedianAbstract(BATUSD).lift(argent);
MedianAbstract(BTCUSD).lift(argent);
MedianAbstract(ETHBTC).lift(argent);
MedianAbstract(ETHUSD).lift(argent);
MedianAbstract(KNCUSD).lift(argent);
MedianAbstract(ZRXUSD).lift(argent);
MedianAbstract(USDTUSD).lift(argent);
MedianAbstract(MANAUSD).lift(argent);
// Lift New MyCrypto light feed
MedianAbstract(BATUSD).lift(mycrypto);
MedianAbstract(BTCUSD).lift(mycrypto);
MedianAbstract(ETHBTC).lift(mycrypto);
MedianAbstract(ETHUSD).lift(mycrypto);
MedianAbstract(KNCUSD).lift(mycrypto);
MedianAbstract(ZRXUSD).lift(mycrypto);
MedianAbstract(USDTUSD).lift(mycrypto);
MedianAbstract(MANAUSD).lift(mycrypto);
////////////////////////////////////////////////////////////////////////////////
// USDT-A collateral deploy
// Set ilk bytes32 variable
bytes32 ilkUSDTA = "USDT-A";
// Sanity checks
require(GemJoinAbstract(MCD_JOIN_USDT_A).vat() == MCD_VAT, "join-vat-not-match");
require(GemJoinAbstract(MCD_JOIN_USDT_A).ilk() == ilkUSDTA, "join-ilk-not-match");
require(GemJoinAbstract(MCD_JOIN_USDT_A).gem() == USDT, "join-gem-not-match");
require(GemJoinAbstract(MCD_JOIN_USDT_A).dec() == ERC20(USDT).decimals(), "join-dec-not-match");
require(FlipAbstract(MCD_FLIP_USDT_A).vat() == MCD_VAT, "flip-vat-not-match");
require(FlipAbstract(MCD_FLIP_USDT_A).ilk() == ilkUSDTA, "flip-ilk-not-match");
// Set price feed for USDT-A
SpotAbstract(MCD_SPOT).file(ilkUSDTA, "pip", PIP_USDT);
// Set the USDT-A flipper in the cat
CatAbstract(MCD_CAT).file(ilkUSDTA, "flip", MCD_FLIP_USDT_A);
// Init USDT-A in Vat
VatAbstract(MCD_VAT).init(ilkUSDTA);
// Init USDT-A in Jug
JugAbstract(MCD_JUG).init(ilkUSDTA);
// Allow USDT-A Join to modify Vat registry
VatAbstract(MCD_VAT).rely(MCD_JOIN_USDT_A);
// Allow USDT-A Flipper on the Cat
CatAbstract(MCD_CAT).rely(MCD_FLIP_USDT_A);
// Allow cat to kick auctions in USDT-A Flipper
FlipAbstract(MCD_FLIP_USDT_A).rely(MCD_CAT);
// Allow End to yank auctions in USDT-A Flipper
FlipAbstract(MCD_FLIP_USDT_A).rely(MCD_END);
// Allow FlipperMom to access the USDT-A Flipper
FlipAbstract(MCD_FLIP_USDT_A).rely(FLIPPER_MOM);
// Update OSM
OsmAbstract(PIP_USDT).rely(OSM_MOM);
MedianAbstract(OsmAbstract(PIP_USDT).src()).kiss(PIP_USDT);
OsmAbstract(PIP_USDT).kiss(MCD_SPOT);
OsmAbstract(PIP_USDT).kiss(MCD_END);
OsmMomAbstract(OSM_MOM).setOsm(ilkUSDTA, PIP_USDT);
// since we're adding 2 collateral types in this spell, global line is at beginning
VatAbstract(MCD_VAT).file( ilkUSDTA, "line", 10 * MILLION * RAD ); // 10m debt ceiling
VatAbstract(MCD_VAT).file( ilkUSDTA, "dust", 100 * RAD ); // 100 Dai dust
CatAbstract(MCD_CAT).file( ilkUSDTA, "dunk", 50 * THOUSAND * RAD ); // 50,000 dunk
CatAbstract(MCD_CAT).file( ilkUSDTA, "chop", 113 * WAD / 100 ); // 13% liq. penalty
JugAbstract(MCD_JUG).file( ilkUSDTA, "duty", SIX_PCT_RATE ); // 6% stability fee
FlipAbstract(MCD_FLIP_USDT_A).file( "beg" , 103 * WAD / 100 ); // 3% bid increase
FlipAbstract(MCD_FLIP_USDT_A).file( "ttl" , 6 hours ); // 6 hours ttl
FlipAbstract(MCD_FLIP_USDT_A).file( "tau" , 6 hours ); // 6 hours tau
SpotAbstract(MCD_SPOT).file(ilkUSDTA, "mat", 150 * RAY / 100 ); // 150% coll. ratio
SpotAbstract(MCD_SPOT).poke(ilkUSDTA);
IlkRegistryAbstract(ILK_REGISTRY).add(MCD_JOIN_USDT_A);
////////////////////////////////////////////////////////////////////////////////
// PAXUSD-A collateral deploy
// Set ilk bytes32 variable
bytes32 ilkPAXUSDA = "PAXUSD-A";
// Sanity checks
require(GemJoinAbstract(MCD_JOIN_PAXUSD_A).vat() == MCD_VAT, "join-vat-not-match");
require(GemJoinAbstract(MCD_JOIN_PAXUSD_A).ilk() == ilkPAXUSDA, "join-ilk-not-match");
require(GemJoinAbstract(MCD_JOIN_PAXUSD_A).gem() == PAXUSD, "join-gem-not-match");
require(GemJoinAbstract(MCD_JOIN_PAXUSD_A).dec() == ERC20(PAXUSD).decimals(), "join-dec-not-match");
require(FlipAbstract(MCD_FLIP_PAXUSD_A).vat() == MCD_VAT, "flip-vat-not-match");
require(FlipAbstract(MCD_FLIP_PAXUSD_A).ilk() == ilkPAXUSDA, "flip-ilk-not-match");
// Set price feed for PAXUSD-A
SpotAbstract(MCD_SPOT).file(ilkPAXUSDA, "pip", PIP_PAXUSD);
// Set the PAXUSD-A flipper in the cat
CatAbstract(MCD_CAT).file(ilkPAXUSDA, "flip", MCD_FLIP_PAXUSD_A);
// Init PAXUSD-A in Vat
VatAbstract(MCD_VAT).init(ilkPAXUSDA);
// Init PAXUSD-A in Jug
JugAbstract(MCD_JUG).init(ilkPAXUSDA);
// Allow PAXUSD-A Join to modify Vat registry
VatAbstract(MCD_VAT).rely(MCD_JOIN_PAXUSD_A);
// Allow PAXUSD-A Flipper on the Cat
CatAbstract(MCD_CAT).rely(MCD_FLIP_PAXUSD_A);
// Allow cat to kick auctions in PAXUSD-A Flipper
// NOTE: this will be reverse later in spell, and is done only for explicitness.
FlipAbstract(MCD_FLIP_PAXUSD_A).rely(MCD_CAT);
// Allow End to yank auctions in PAXUSD-A Flipper
FlipAbstract(MCD_FLIP_PAXUSD_A).rely(MCD_END);
// Allow FlipperMom to access the PAXUSD-A Flipper
FlipAbstract(MCD_FLIP_PAXUSD_A).rely(FLIPPER_MOM);
// Consequently, deny PAXUSD-A Flipper
FlipperMomAbstract(FLIPPER_MOM).deny(MCD_FLIP_PAXUSD_A);
VatAbstract(MCD_VAT).file(ilkPAXUSDA, "line" , 5 * MILLION * RAD ); // 5 MM debt ceiling
VatAbstract(MCD_VAT).file(ilkPAXUSDA, "dust" , 100 * RAD ); // 100 Dai dust
CatAbstract(MCD_CAT).file(ilkPAXUSDA, "dunk" , 50 * THOUSAND * RAD ); // 50,000 dunk
CatAbstract(MCD_CAT).file(ilkPAXUSDA, "chop" , 113 * WAD / 100 ); // 13% liq. penalty
JugAbstract(MCD_JUG).file(ilkPAXUSDA, "duty" , TWO_PCT_RATE ); // 2% stability fee
FlipAbstract(MCD_FLIP_PAXUSD_A).file( "beg" , 103 * WAD / 100 ); // 3% bid increase
FlipAbstract(MCD_FLIP_PAXUSD_A).file( "ttl" , 6 hours ); // 6 hours ttl
FlipAbstract(MCD_FLIP_PAXUSD_A).file( "tau" , 6 hours ); // 6 hours tau
SpotAbstract(MCD_SPOT).file(ilkPAXUSDA, "mat" , 120 * RAY / 100 ); // 120% coll. ratio
SpotAbstract(MCD_SPOT).poke(ilkPAXUSDA);
IlkRegistryAbstract(ILK_REGISTRY).add(MCD_JOIN_PAXUSD_A);
}
}
contract DssSpell {
DSPauseAbstract public pause =
DSPauseAbstract(0xbE286431454714F511008713973d3B053A2d38f3);
address public action;
bytes32 public tag;
uint256 public eta;
bytes public sig;
uint256 public expiration;
bool public done;
// Provides a descriptive tag for bot consumption
// This should be modified weekly to provide a summary of the actions
// Hash: seth keccak -- "$(wget https://raw.githubusercontent.com/makerdao/community/d8496d07a5eae08f2d1886f6bf4de1a813b4584d/governance/votes/Executive%20vote%20-%20September%204%2C%202020.md -q -O - 2>/dev/null)"
string constant public description =
"2020-09-04 MakerDAO Executive Spell | Hash: 0x3c35701633399b48090f4c805686ebeeebcc86f6d05b354531f3bd0059ee48dd";
constructor() public {
sig = abi.encodeWithSignature("execute()");
action = address(new SpellAction());
bytes32 _tag;
address _action = action;
assembly { _tag := extcodehash(_action) }
tag = _tag;
expiration = now + 30 days;
}
modifier officeHours {
// Available after 14:00 UTC (10:00 am EDT) 2020/09/08
require(now >= 1599573600);
uint day = (now / 1 days + 3) % 7;
require(day < 5, "Can only be cast on a weekday");
uint hour = now / 1 hours % 24;
require(hour >= 14 && hour < 21, "Outside office hours");
_;
}
function schedule() public {
require(now <= expiration, "This contract has expired");
require(eta == 0, "This spell has already been scheduled");
eta = now + DSPauseAbstract(pause).delay();
pause.plot(action, tag, sig, eta);
}
function cast() officeHours public {
require(!done, "spell-already-cast");
done = true;
pause.exec(action, tag, sig, eta);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"action","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cast","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"expiration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pause","outputs":[{"internalType":"contract DSPauseAbstract","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"schedule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tag","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"}]Contract Creation Code
6080604052600080546001600160a01b03191673be286431454714f511008713973d3b053a2d38f317905534801561003657600080fd5b50604080516004808252602482019092526020810180516001600160e01b03167f614619540000000000000000000000000000000000000000000000000000000017815290516100879291906100e2565b5060405161009490610160565b604051809103906000f0801580156100b0573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039283161790819055163f6002554262278d000160055561018a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061012357805160ff1916838001178555610150565b82800160010185558215610150579182015b82811115610150578251825591602001919060010190610135565b5061015c92915061016d565b5090565b61362f80610a0a83390190565b61018791905b8082111561015c5760008155600101610173565b90565b610871806101996000396000f3fe608060405234801561001057600080fd5b506004361061008d5760003560e01c8062a7029b146100925780630a7a1c4d1461010f5780634665096d1461013357806351f910661461014d5780637284e416146101555780638456cb591461015d57806396d373e514610165578063ae8421e11461016f578063b0604a261461018b578063f7992d8514610193575b600080fd5b61009a61019b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100d45781810151838201526020016100bc565b50505050905090810190601f1680156101015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610117610229565b604080516001600160a01b039092168252519081900360200190f35b61013b610238565b60408051918252519081900360200190f35b61013b61023e565b61009a610244565b610117610260565b61016d61026f565b005b61017761057e565b604080519115158252519081900360200190f35b61016d610587565b61013b6107a3565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102215780601f106101f657610100808354040283529160200191610221565b820191906000526020600020905b81548152906001019060200180831161020457829003601f168201915b505050505081565b6001546001600160a01b031681565b60055481565b60025481565b6040518060a00160405280606e81526020016107cf606e913981565b6000546001600160a01b031681565b635f578e6042101561028057600080fd5b600762015180420460030106600581106102e1576040805162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063617374206f6e2061207765656b646179000000604482015290519081900360640190fd5b6018610e10420406600e81108015906102fa5750601581105b610342576040805162461bcd60e51b81526020600482015260146024820152734f757473696465206f666669636520686f75727360601b604482015290519081900360640190fd5b60065460ff161561038f576040805162461bcd60e51b81526020600482015260126024820152711cdc195b1b0b585b1c9958591e4b58d85cdd60721b604482015290519081900360640190fd5b6006805460ff1916600190811790915560005481546002805460035460405163168ccd6760e01b81526001600160a01b039485166004828101828152602484018690526064840185905260806044850190815282546000199b811615610100029b909b01909a169690960460848401819052969097169763168ccd67979196949591949192909160a4909101908590801561046b5780601f106104405761010080835404028352916020019161046b565b820191906000526020600020905b81548152906001019060200180831161044e57829003601f168201915b505095505050505050600060405180830381600087803b15801561048e57600080fd5b505af11580156104a2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104cb57600080fd5b8101908080516040519392919084600160201b8211156104ea57600080fd5b9083019060208201858111156104ff57600080fd5b8251600160201b81118282018810171561051857600080fd5b82525081516020918201929091019080838360005b8381101561054557818101518382015260200161052d565b50505050905090810190601f1680156105725780820380516001836020036101000a031916815260200191505b50604052505050505050565b60065460ff1681565b6005544211156105da576040805162461bcd60e51b8152602060048201526019602482015278151a1a5cc818dbdb9d1c9858dd081a185cc8195e1c1a5c9959603a1b604482015290519081900360640190fd5b600354156106195760405162461bcd60e51b81526004018080602001828103825260258152602001806107aa6025913960400191505060405180910390fd5b6000809054906101000a90046001600160a01b03166001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561066657600080fd5b505afa15801561067a573d6000803e3d6000fd5b505050506040513d602081101561069057600080fd5b50514201600381905560005460018054600280546040516346d2fbbb60e01b81526001600160a01b03938416600482810182815260248401859052606484018a90526080604485019081528254600019998116156101000299909901909816959095046084840181905295909716976346d2fbbb9791969395919490939092909160a490910190859080156107665780601f1061073b57610100808354040283529160200191610766565b820191906000526020600020905b81548152906001019060200180831161074957829003601f168201915b505095505050505050600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050565b6003548156fe54686973207370656c6c2068617320616c7265616479206265656e207363686564756c6564323032302d30392d3034204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307833633335373031363333333939623438303930663463383035363836656265656562636338366636643035623335343533316633626430303539656534386464a265627a7a72315820e8e051e0f0eb700204c8d38f271cce7cf6c2df79f3233eb9cbec16ae6debc5d764736f6c634300050c0032608060405234801561001057600080fd5b5061360f806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636146195414610030575b600080fd5b61003861003a565b005b60408051630a6ba04560e21b8152634c696e6560e01b60048201526ffeea39211e8d2d7c8579ca662c36894f60331b6024820152905160008051602061351b833981519152916329ae811491604480830192600092919082900301818387803b1580156100a657600080fd5b505af11580156100ba573d6000803e3d6000fd5b505060408051630d05943f60e11b815265574254432d4160d01b6004820152636c696e6560e01b60248201526f0502ed53dc07790272afdb61a195091360361b6044820152905160008051602061351b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561013957600080fd5b505af115801561014d573d6000803e3d6000fd5b50506040805163089c54b560e31b8152644241542d4160d81b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156101a657600080fd5b505af11580156101ba573d6000803e3d6000fd5b505050506040513d60208110156101d057600080fd5b505060408051630d05943f60e11b8152644241542d4160d81b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561024557600080fd5b505af1158015610259573d6000803e3d6000fd5b50506040805163089c54b560e31b815265555344432d4160d01b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505060408051630d05943f60e11b815265555344432d4160d01b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561035357600080fd5b505af1158015610367573d6000803e3d6000fd5b50506040805163089c54b560e31b8152652aa9a22196a160d11b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156103c157600080fd5b505af11580156103d5573d6000803e3d6000fd5b505050506040513d60208110156103eb57600080fd5b505060408051630d05943f60e11b8152652aa9a22196a160d11b6004820152636475747960e01b60248201526b033b2e3d4c56522248f4c8e36044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b50506040805163089c54b560e31b815265574254432d4160d01b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156104cf57600080fd5b505af11580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b505060408051630d05943f60e11b815265574254432d4160d01b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561056f57600080fd5b505af1158015610583573d6000803e3d6000fd5b50506040805163089c54b560e31b8152644b4e432d4160d81b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156105dc57600080fd5b505af11580156105f0573d6000803e3d6000fd5b505050506040513d602081101561060657600080fd5b505060408051630d05943f60e11b8152644b4e432d4160d81b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561067b57600080fd5b505af115801561068f573d6000803e3d6000fd5b50506040805163089c54b560e31b8152645a52582d4160d81b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156106e857600080fd5b505af11580156106fc573d6000803e3d6000fd5b505050506040513d602081101561071257600080fd5b505060408051630d05943f60e11b8152645a52582d4160d81b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561078757600080fd5b505af115801561079b573d6000803e3d6000fd5b50506040805163089c54b560e31b8152654d414e412d4160d01b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b505060408051630d05943f60e11b8152654d414e412d4160d01b6004820152636475747960e01b60248201526b033b2e3cc9c1bf225873dc826044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561089557600080fd5b505af11580156108a9573d6000803e3d6000fd5b50506040805160018082528183019092526060935091506020808301908038833901905050905073130431b4560cd1d74a990ae86c337a33171ff3c6816000815181106108f257fe5b6001600160a01b0390921660209283029190910190910152604080516001808252818301909252606091816020016020820280388339019050509050733cb645a8f10fb7b0721eabae958f77a878441cb98160008151811061095057fe5b6001600160a01b03909216602092830291909101820152604051634a18c08360e11b8152600481018281528451602483015284517318b4633d6e39870f398597f3c1ba8c4a41294966936394318106938793928392604490920191858101910280838360005b838110156109ce5781810151838201526020016109b6565b5050505090500192505050600060405180830381600087803b1580156109f357600080fd5b505af1158015610a07573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815286516024840152865173e0f30cb149faadc7247e953746be9bbbb6b5751f95506394318106945087939192839260440191818601910280838360005b83811015610a73578181015183820152602001610a5b565b5050505090500192505050600060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528651602484015286517381a679f98b63b3ddf2f17cb5619f4d6775b3c5ed95506394318106945087939192839260440191818601910280838360005b83811015610b18578181015183820152602001610b00565b5050505090500192505050600060405180830381600087803b158015610b3d57600080fd5b505af1158015610b51573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528651602484015286517364de91f5a373cd4c28de3600cb34c7c6ce410c8595506394318106945087939192839260440191818601910280838360005b83811015610bbd578181015183820152602001610ba5565b5050505090500192505050600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528651602484015286517383076a2f42dc1925537165045c9fde9a4b71ad9795506394318106945087939192839260440191818601910280838360005b83811015610c62578181015183820152602001610c4a565b5050505090500192505050600060405180830381600087803b158015610c8757600080fd5b505af1158015610c9b573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815286516024840152865173956ecd6a9a9a0d84e8eb4e6baac09329e202e55e95506394318106945087939192839260440191818601910280838360005b83811015610d07578181015183820152602001610cef565b5050505090500192505050600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528651602484015286517356d4bbf358d7790579b55ea6af3f605bca2c0c3a95506394318106945087939192839260440191818601910280838360005b83811015610dac578181015183820152602001610d94565b5050505090500192505050600060405180830381600087803b158015610dd157600080fd5b505af1158015610de5573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815286516024840152865173681c4f8f69cf68852bad092086ffeab31f5b812c95506394318106945087939192839260440191818601910280838360005b83811015610e51578181015183820152602001610e39565b5050505090500192505050600060405180830381600087803b158015610e7657600080fd5b505af1158015610e8a573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517318b4633d6e39870f398597f3c1ba8c4a4129496695506394318106945086939192839260440191818601910280838360005b83811015610ef6578181015183820152602001610ede565b5050505090500192505050600060405180830381600087803b158015610f1b57600080fd5b505af1158015610f2f573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815285516024840152855173e0f30cb149faadc7247e953746be9bbbb6b5751f95506394318106945086939192839260440191818601910280838360005b83811015610f9b578181015183820152602001610f83565b5050505090500192505050600060405180830381600087803b158015610fc057600080fd5b505af1158015610fd4573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517381a679f98b63b3ddf2f17cb5619f4d6775b3c5ed95506394318106945086939192839260440191818601910280838360005b83811015611040578181015183820152602001611028565b5050505090500192505050600060405180830381600087803b15801561106557600080fd5b505af1158015611079573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517364de91f5a373cd4c28de3600cb34c7c6ce410c8595506394318106945086939192839260440191818601910280838360005b838110156110e55781810151838201526020016110cd565b5050505090500192505050600060405180830381600087803b15801561110a57600080fd5b505af115801561111e573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517383076a2f42dc1925537165045c9fde9a4b71ad9795506394318106945086939192839260440191818601910280838360005b8381101561118a578181015183820152602001611172565b5050505090500192505050600060405180830381600087803b1580156111af57600080fd5b505af11580156111c3573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815285516024840152855173956ecd6a9a9a0d84e8eb4e6baac09329e202e55e95506394318106945086939192839260440191818601910280838360005b8381101561122f578181015183820152602001611217565b5050505090500192505050600060405180830381600087803b15801561125457600080fd5b505af1158015611268573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517356d4bbf358d7790579b55ea6af3f605bca2c0c3a95506394318106945086939192839260440191818601910280838360005b838110156112d45781810151838201526020016112bc565b5050505090500192505050600060405180830381600087803b1580156112f957600080fd5b505af115801561130d573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815285516024840152855173681c4f8f69cf68852bad092086ffeab31f5b812c95506394318106945086939192839260440191818601910280838360005b83811015611379578181015183820152602001611361565b5050505090500192505050600060405180830381600087803b15801561139e57600080fd5b505af11580156113b2573d6000803e3d6000fd5b50505050600065555344542d4160d01b905060008051602061351b8339815191526001600160a01b0316730ac6a1d74e84c2df9063bddc31699ff2a2bb22a26001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561142957600080fd5b505afa15801561143d573d6000803e3d6000fd5b505050506040513d602081101561145357600080fd5b50516001600160a01b0316146114a5576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b80730ac6a1d74e84c2df9063bddc31699ff2a2bb22a26001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114f357600080fd5b505afa158015611507573d6000803e3d6000fd5b505050506040513d602081101561151d57600080fd5b505114611566576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b73dac17f958d2ee523a2206206994597c13d831ec76001600160a01b0316730ac6a1d74e84c2df9063bddc31699ff2a2bb22a26001600160a01b0316637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d60208110156115fb57600080fd5b50516001600160a01b03161461164d576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5acecada5adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b73dac17f958d2ee523a2206206994597c13d831ec76001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561169a57600080fd5b505afa1580156116ae573d6000803e3d6000fd5b505050506040513d60208110156116c457600080fd5b5051604080516359de7d4160e11b81529051730ac6a1d74e84c2df9063bddc31699ff2a2bb22a29163b3bcfa82916004808301926020929190829003018186803b15801561171157600080fd5b505afa158015611725573d6000803e3d6000fd5b505050506040513d602081101561173b57600080fd5b505114611784576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ac8cac65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b60008051602061351b8339815191526001600160a01b031660008051602061353b8339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e357600080fd5b505afa1580156117f7573d6000803e3d6000fd5b505050506040513d602081101561180d57600080fd5b50516001600160a01b03161461185f576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b8060008051602061353b8339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118a757600080fd5b505afa1580156118bb573d6000803e3d6000fd5b505050506040513d60208110156118d157600080fd5b50511461191a576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b6040805163ebecb39d60e01b8152600481018390526207069760ec1b60248201526000805160206134fb8339815191526044820152905160008051602061359b8339815191529163ebecb39d91606480830192600092919082900301818387803b15801561198757600080fd5b505af115801561199b573d6000803e3d6000fd5b50506040805163ebecb39d60e01b815260048101859052630666c69760e41b602482015260008051602061353b8339815191526044820152905160008051602061355b833981519152935063ebecb39d9250606480830192600092919082900301818387803b158015611a0d57600080fd5b505af1158015611a21573d6000803e3d6000fd5b5050505060008051602061351b8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611a7957600080fd5b505af1158015611a8d573d6000803e3d6000fd5b5050505060008051602061357b8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611ae557600080fd5b505af1158015611af9573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152730ac6a1d74e84c2df9063bddc31699ff2a2bb22a26004820152905160008051602061351b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611b5d57600080fd5b505af1158015611b71573d6000803e3d6000fd5b5050604080516332fd71af60e11b815260008051602061353b8339815191526004820152905160008051602061355b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611bcf57600080fd5b505af1158015611be3573d6000803e3d6000fd5b5050604080516332fd71af60e11b815260008051602061355b8339815191526004820152905160008051602061353b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611c4157600080fd5b505af1158015611c55573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d56004820152905160008051602061353b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611cb957600080fd5b505af1158015611ccd573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273c4be7f74ee3743bded8e0fa218ee5cf06397f4726004820152905160008051602061353b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b5050604080516332fd71af60e11b81527376416a4d5190d071bfed309861527431304aa14f600482015290516000805160206134fb83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611da957600080fd5b505af1158015611dbd573d6000803e3d6000fd5b505050506000805160206134fb8339815191526001600160a01b0316632e7dc6af6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0857600080fd5b505afa158015611e1c573d6000803e3d6000fd5b505050506040513d6020811015611e3257600080fd5b505160408051633ca70a7160e21b81526000805160206134fb833981519152600482015290516001600160a01b039092169163f29c29c49160248082019260009290919082900301818387803b158015611e8b57600080fd5b505af1158015611e9f573d6000803e3d6000fd5b505060408051633ca70a7160e21b815260008051602061359b833981519152600482015290516000805160206134fb833981519152935063f29c29c49250602480830192600092919082900301818387803b158015611efd57600080fd5b505af1158015611f11573d6000803e3d6000fd5b505060408051633ca70a7160e21b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d5600482015290516000805160206134fb833981519152935063f29c29c49250602480830192600092919082900301818387803b158015611f7557600080fd5b505af1158015611f89573d6000803e3d6000fd5b5050604080516364c66fc360e11b8152600481018590526000805160206134fb833981519152602482015290517376416a4d5190d071bfed309861527431304aa14f935063c98cdf869250604480830192600092919082900301818387803b158015611ff457600080fd5b505af1158015612008573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160341b6044820152905160008051602061351b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561207f57600080fd5b505af1158015612093573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263191d5cdd60e21b60248201526d23084f676940b7915149bd08b30d602f1b6044820152905160008051602061351b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b505060408051630d05943f60e11b8152600481018590526364756e6b60e01b60248201526e111b0ec57e6499a1f4b1014d3f6d5960311b6044820152905160008051602061355b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561219257600080fd5b505af11580156121a6573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263063686f760e41b6024820152670fae9103543100006044820152905160008051602061355b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561221257600080fd5b505af1158015612226573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636475747960e01b60248201526b033b2e3cb974d5031f73f7226044820152905160008051602061357b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561229657600080fd5b505af11580156122aa573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526262656760e81b6004820152670e4b4b8af6a700006024820152905160008051602061353b83398151915293506329ae81149250604480830192600092919082900301818387803b15801561230e57600080fd5b505af1158015612322573d6000803e3d6000fd5b505060408051630a6ba04560e21b8152621d1d1b60ea1b60048201526154606024820152905160008051602061353b83398151915293506329ae81149250604480830192600092919082900301818387803b15801561238057600080fd5b505af1158015612394573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526274617560e81b60048201526154606024820152905160008051602061353b83398151915293506329ae81149250604480830192600092919082900301818387803b1580156123f257600080fd5b505af1158015612406573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052621b585d60ea1b60248201526b04d8c55aefb8c05b5c0000006044820152905160008051602061359b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561247557600080fd5b505af1158015612489573d6000803e3d6000fd5b5050505060008051602061359b8339815191526001600160a01b0316631504460f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156124e157600080fd5b505af11580156124f5573d6000803e3d6000fd5b505060408051630a3b0a4f60e01b8152730ac6a1d74e84c2df9063bddc31699ff2a2bb22a260048201529051738b4ce5dcbb01e0e1f0521cd8dcfb31b308e52c249350630a3b0a4f9250602480830192600092919082900301818387803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b505050506000675041585553442d4160c01b905060008051602061351b8339815191526001600160a01b0316737e62b7e279dfc78deb656e34d6a435cc08a446666001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156125ec57600080fd5b505afa158015612600573d6000803e3d6000fd5b505050506040513d602081101561261657600080fd5b50516001600160a01b031614612668576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b80737e62b7e279dfc78deb656e34d6a435cc08a446666001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126b657600080fd5b505afa1580156126ca573d6000803e3d6000fd5b505050506040513d60208110156126e057600080fd5b505114612729576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b738e870d67f660d95d5be530380d0ec0bd388289e16001600160a01b0316737e62b7e279dfc78deb656e34d6a435cc08a446666001600160a01b0316637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561279457600080fd5b505afa1580156127a8573d6000803e3d6000fd5b505050506040513d60208110156127be57600080fd5b50516001600160a01b031614612810576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5acecada5adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b738e870d67f660d95d5be530380d0ec0bd388289e16001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561285d57600080fd5b505afa158015612871573d6000803e3d6000fd5b505050506040513d602081101561288757600080fd5b5051604080516359de7d4160e11b81529051737e62b7e279dfc78deb656e34d6a435cc08a446669163b3bcfa82916004808301926020929190829003018186803b1580156128d457600080fd5b505afa1580156128e8573d6000803e3d6000fd5b505050506040513d60208110156128fe57600080fd5b505114612947576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ac8cac65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b60008051602061351b8339815191526001600160a01b03166000805160206135bb8339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156129a657600080fd5b505afa1580156129ba573d6000803e3d6000fd5b505050506040513d60208110156129d057600080fd5b50516001600160a01b031614612a22576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b806000805160206135bb8339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a6a57600080fd5b505afa158015612a7e573d6000803e3d6000fd5b505050506040513d6020811015612a9457600080fd5b505114612add576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b6040805163ebecb39d60e01b8152600481018390526207069760ec1b602482015273043b963e1b2214ec90046167ea29c2c8bdd7c0ec6044820152905160008051602061359b8339815191529163ebecb39d91606480830192600092919082900301818387803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b50506040805163ebecb39d60e01b815260048101859052630666c69760e41b60248201526000805160206135bb8339815191526044820152905160008051602061355b833981519152935063ebecb39d9250606480830192600092919082900301818387803b158015612bd657600080fd5b505af1158015612bea573d6000803e3d6000fd5b5050505060008051602061351b8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612c4257600080fd5b505af1158015612c56573d6000803e3d6000fd5b5050505060008051602061357b8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612cae57600080fd5b505af1158015612cc2573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152737e62b7e279dfc78deb656e34d6a435cc08a446666004820152905160008051602061351b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612d2657600080fd5b505af1158015612d3a573d6000803e3d6000fd5b5050604080516332fd71af60e11b81526000805160206135bb8339815191526004820152905160008051602061355b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612d9857600080fd5b505af1158015612dac573d6000803e3d6000fd5b5050604080516332fd71af60e11b815260008051602061355b833981519152600482015290516000805160206135bb83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612e0a57600080fd5b505af1158015612e1e573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d5600482015290516000805160206135bb83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612e8257600080fd5b505af1158015612e96573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273c4be7f74ee3743bded8e0fa218ee5cf06397f472600482015290516000805160206135bb83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612efa57600080fd5b505af1158015612f0e573d6000803e3d6000fd5b505060408051639c52a7f160e01b81526000805160206135bb8339815191526004820152905173c4be7f74ee3743bded8e0fa218ee5cf06397f4729350639c52a7f19250602480830192600092919082900301818387803b158015612f7257600080fd5b505af1158015612f86573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160331b6044820152905160008051602061351b8339815191529350631a0b287e9250606480830192600092919082900301818387803b158015612ffd57600080fd5b505af1158015613011573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263191d5cdd60e21b60248201526d23084f676940b7915149bd08b30d602f1b6044820152905160008051602061351b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561308657600080fd5b505af115801561309a573d6000803e3d6000fd5b505060408051630d05943f60e11b8152600481018590526364756e6b60e01b60248201526e111b0ec57e6499a1f4b1014d3f6d5960311b6044820152905160008051602061355b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561311057600080fd5b505af1158015613124573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263063686f760e41b6024820152670fae9103543100006044820152905160008051602061355b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561321457600080fd5b505af1158015613228573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526262656760e81b6004820152670e4b4b8af6a70000602482015290516000805160206135bb83398151915293506329ae81149250604480830192600092919082900301818387803b15801561328c57600080fd5b505af11580156132a0573d6000803e3d6000fd5b505060408051630a6ba04560e21b8152621d1d1b60ea1b6004820152615460602482015290516000805160206135bb83398151915293506329ae81149250604480830192600092919082900301818387803b1580156132fe57600080fd5b505af1158015613312573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526274617560e81b6004820152615460602482015290516000805160206135bb83398151915293506329ae81149250604480830192600092919082900301818387803b15801561337057600080fd5b505af1158015613384573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052621b585d60ea1b6024820152673e09de2596099e2b601c1b6044820152905160008051602061359b8339815191529350631a0b287e9250606482810192600092919082900301818387803b1580156133f257600080fd5b505af1158015613406573d6000803e3d6000fd5b5050505060008051602061359b8339815191526001600160a01b0316631504460f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561345e57600080fd5b505af1158015613472573d6000803e3d6000fd5b505060408051630a3b0a4f60e01b8152737e62b7e279dfc78deb656e34d6a435cc08a4466660048201529051738b4ce5dcbb01e0e1f0521cd8dcfb31b308e52c249350630a3b0a4f9250602480830192600092919082900301818387803b1580156134dc57600080fd5b505af11580156134f0573d6000803e3d6000fd5b505050505050505056fe0000000000000000000000007a5918670b0c390ad25f7bee908c1acc2d314a3c00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b000000000000000000000000667f41d0fdce1945ee0f56a79dd6c142e37fcc26000000000000000000000000a5679c04fc3d9d8b0aab1f0ab83555b301ca70ea00000000000000000000000019c0976f590d67707e62397c87829d896dc0f1f100000000000000000000000065c79fcb50ca1594b025960e539ed7a9a6d434a300000000000000000000000052d5d1c05cc79fc24a629cb24cb06c5be5d766e7a265627a7a7231582079ec03078c12b4df4a8d1df1826d9531bb9facedd18654d67c299dcf51044c9264736f6c634300050c0032
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061008d5760003560e01c8062a7029b146100925780630a7a1c4d1461010f5780634665096d1461013357806351f910661461014d5780637284e416146101555780638456cb591461015d57806396d373e514610165578063ae8421e11461016f578063b0604a261461018b578063f7992d8514610193575b600080fd5b61009a61019b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100d45781810151838201526020016100bc565b50505050905090810190601f1680156101015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610117610229565b604080516001600160a01b039092168252519081900360200190f35b61013b610238565b60408051918252519081900360200190f35b61013b61023e565b61009a610244565b610117610260565b61016d61026f565b005b61017761057e565b604080519115158252519081900360200190f35b61016d610587565b61013b6107a3565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102215780601f106101f657610100808354040283529160200191610221565b820191906000526020600020905b81548152906001019060200180831161020457829003601f168201915b505050505081565b6001546001600160a01b031681565b60055481565b60025481565b6040518060a00160405280606e81526020016107cf606e913981565b6000546001600160a01b031681565b635f578e6042101561028057600080fd5b600762015180420460030106600581106102e1576040805162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063617374206f6e2061207765656b646179000000604482015290519081900360640190fd5b6018610e10420406600e81108015906102fa5750601581105b610342576040805162461bcd60e51b81526020600482015260146024820152734f757473696465206f666669636520686f75727360601b604482015290519081900360640190fd5b60065460ff161561038f576040805162461bcd60e51b81526020600482015260126024820152711cdc195b1b0b585b1c9958591e4b58d85cdd60721b604482015290519081900360640190fd5b6006805460ff1916600190811790915560005481546002805460035460405163168ccd6760e01b81526001600160a01b039485166004828101828152602484018690526064840185905260806044850190815282546000199b811615610100029b909b01909a169690960460848401819052969097169763168ccd67979196949591949192909160a4909101908590801561046b5780601f106104405761010080835404028352916020019161046b565b820191906000526020600020905b81548152906001019060200180831161044e57829003601f168201915b505095505050505050600060405180830381600087803b15801561048e57600080fd5b505af11580156104a2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104cb57600080fd5b8101908080516040519392919084600160201b8211156104ea57600080fd5b9083019060208201858111156104ff57600080fd5b8251600160201b81118282018810171561051857600080fd5b82525081516020918201929091019080838360005b8381101561054557818101518382015260200161052d565b50505050905090810190601f1680156105725780820380516001836020036101000a031916815260200191505b50604052505050505050565b60065460ff1681565b6005544211156105da576040805162461bcd60e51b8152602060048201526019602482015278151a1a5cc818dbdb9d1c9858dd081a185cc8195e1c1a5c9959603a1b604482015290519081900360640190fd5b600354156106195760405162461bcd60e51b81526004018080602001828103825260258152602001806107aa6025913960400191505060405180910390fd5b6000809054906101000a90046001600160a01b03166001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561066657600080fd5b505afa15801561067a573d6000803e3d6000fd5b505050506040513d602081101561069057600080fd5b50514201600381905560005460018054600280546040516346d2fbbb60e01b81526001600160a01b03938416600482810182815260248401859052606484018a90526080604485019081528254600019998116156101000299909901909816959095046084840181905295909716976346d2fbbb9791969395919490939092909160a490910190859080156107665780601f1061073b57610100808354040283529160200191610766565b820191906000526020600020905b81548152906001019060200180831161074957829003601f168201915b505095505050505050600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050565b6003548156fe54686973207370656c6c2068617320616c7265616479206265656e207363686564756c6564323032302d30392d3034204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307833633335373031363333333939623438303930663463383035363836656265656562636338366636643035623335343533316633626430303539656534386464a265627a7a72315820e8e051e0f0eb700204c8d38f271cce7cf6c2df79f3233eb9cbec16ae6debc5d764736f6c634300050c0032
Deployed Bytecode Sourcemap
25631:1962:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25631:1962:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25864:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25864:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25762:29;;;:::i;:::-;;;;-1:-1:-1;;;;;25762:29:0;;;;;;;;;;;;;;25897:33;;;:::i;:::-;;;;;;;;;;;;;;;;25798:26;;;:::i;26323:158::-;;;:::i;25656:99::-;;;:::i;27434:156::-;;;:::i;:::-;;25937:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;27159:267;;;:::i;25831:26::-;;;:::i;25864:::-;;;;;;;;;;;;;;;-1:-1:-1;;25864:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25762:29::-;;;-1:-1:-1;;;;;25762:29:0;;:::o;25897:33::-;;;;:::o;25798:26::-;;;;:::o;26323:158::-;;;;;;;;;;;;;;;;;;;:::o;25656:99::-;;;-1:-1:-1;;;;;25656:99:0;;:::o;27434:156::-;26906:10;26899:3;:17;;26891:26;;;;;;26962:1;26948:6;26942:3;:12;26957:1;26942:16;26941:22;26988:1;26982:7;;26974:49;;;;;-1:-1:-1;;;26974:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27062:2;27052:7;27046:3;:13;:18;27091:2;27083:10;;;;;:23;;;27104:2;27097:4;:9;27083:23;27075:56;;;;;-1:-1:-1;;;27075:56:0;;;;;;;;;;;;-1:-1:-1;;;27075:56:0;;;;;;;;;;;;;;;27489:4;;;;27488:5;27480:36;;;;;-1:-1:-1;;;27480:36:0;;;;;;;;;;;;-1:-1:-1;;;27480:36:0;;;;;;;;;;;;;;;27527:4;:11;;-1:-1:-1;;27527:11:0;27534:4;27527:11;;;;;;:4;27549:5;27560:6;;27568:3;;;27578;;27549:33;;-1:-1:-1;;;27549:33:0;;-1:-1:-1;;;;;27560:6:0;;;27573:3;27549:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27549:33:0;;;;27527:11;27549:33;;;;;;;;;;;;;;;;;;:5;;;;;:10;;27560:6;;27568:3;;27573;;27549:33;;;;;;;;;27573:3;;27549:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27549:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27549:33:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;27549:33:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;27549:33:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;27549:33:0;;420:4:-1;411:14;;;;27549:33:0;;;;;411:14:-1;27549:33:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27549:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27434:156;;:::o;25937:27::-;;;;;;:::o;27159:267::-;27212:10;;27205:3;:17;;27197:55;;;;;-1:-1:-1;;;27197:55:0;;;;;;;;;;;;-1:-1:-1;;;27197:55:0;;;;;;;;;;;;;;;27271:3;;:8;27263:58;;;;-1:-1:-1;;;27263:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27360:5;;;;;;;;;-1:-1:-1;;;;;27360:5:0;-1:-1:-1;;;;;27344:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27344:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27344:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27344:30:0;27338:3;:36;27332:3;:42;;;27385:5;;;27396:6;;27404:3;;;27385:33;;-1:-1:-1;;;27385:33:0;;-1:-1:-1;;;;;27396:6:0;;;27409:3;27385:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27385:33:0;;;;:5;:33;;;;;;;;;;;;;;;;;;:5;;;;;:10;;27396:6;;27404:3;;27409;;27338:36;;27385:33;;;;;;;;;27409:3;;27385:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27385:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27385:33:0;;;;27159:267::o;25831:26::-;;;;:::o
Swarm Source
bzzr://79ec03078c12b4df4a8d1df1826d9531bb9facedd18654d67c299dcf51044c92
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.