Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 259 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Sell Gem | 21250224 | 2 hrs ago | IN | 0 ETH | 0.00086319 | ||||
Sell Gem | 21250182 | 2 hrs ago | IN | 0 ETH | 0.00096982 | ||||
Sell Gem | 21250146 | 2 hrs ago | IN | 0 ETH | 0.00092395 | ||||
Buy Gem | 21248029 | 9 hrs ago | IN | 0 ETH | 0.00127521 | ||||
Buy Gem | 21247646 | 11 hrs ago | IN | 0 ETH | 0.00134184 | ||||
Buy Gem | 21246115 | 16 hrs ago | IN | 0 ETH | 0.00196034 | ||||
Sell Gem | 21245431 | 18 hrs ago | IN | 0 ETH | 0.00107356 | ||||
Sell Gem | 21244466 | 21 hrs ago | IN | 0 ETH | 0.00142995 | ||||
Sell Gem | 21244462 | 21 hrs ago | IN | 0 ETH | 0.00131477 | ||||
Buy Gem | 21244254 | 22 hrs ago | IN | 0 ETH | 0.00152976 | ||||
Sell Gem | 21241947 | 30 hrs ago | IN | 0 ETH | 0.00095276 | ||||
Sell Gem | 21238876 | 40 hrs ago | IN | 0 ETH | 0.00100925 | ||||
Buy Gem | 21238558 | 41 hrs ago | IN | 0 ETH | 0.00205332 | ||||
Buy Gem | 21237289 | 45 hrs ago | IN | 0 ETH | 0.00182023 | ||||
Buy Gem | 21236623 | 2 days ago | IN | 0 ETH | 0.00320092 | ||||
Buy Gem | 21236425 | 2 days ago | IN | 0 ETH | 0.00331473 | ||||
Sell Gem | 21234728 | 2 days ago | IN | 0 ETH | 0.00078815 | ||||
Sell Gem | 21233917 | 2 days ago | IN | 0 ETH | 0.001339 | ||||
Buy Gem | 21231304 | 2 days ago | IN | 0 ETH | 0.00129636 | ||||
Buy Gem | 21230126 | 2 days ago | IN | 0 ETH | 0.00189908 | ||||
Sell Gem | 21227590 | 3 days ago | IN | 0 ETH | 0.0006097 | ||||
Sell Gem | 21223785 | 3 days ago | IN | 0 ETH | 0.00185613 | ||||
Buy Gem | 21221254 | 4 days ago | IN | 0 ETH | 0.00126512 | ||||
Sell Gem | 21220416 | 4 days ago | IN | 0 ETH | 0.00086243 | ||||
Buy Gem | 21218387 | 4 days ago | IN | 0 ETH | 0.00086163 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DssLitePsm
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-FileCopyrightText: © 2023 Dai Foundation <www.daifoundation.org> // SPDX-License-Identifier: AGPL-3.0-or-later // // 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.8.16; interface VatLike { function frob(bytes32, address, address, address, int256, int256) external; function hope(address) external; function ilks(bytes32) external view returns (uint256, uint256, uint256, uint256, uint256); function debt() external view returns (uint256); function Line() external view returns (uint256); function urns(bytes32, address) external view returns (uint256, uint256); function live() external view returns (uint256); } interface GemLike { function balanceOf(address) external view returns (uint256); function decimals() external view returns (uint8); function approve(address, uint256) external; function transfer(address, uint256) external; function transferFrom(address, address, uint256) external; } interface DaiJoinLike { function dai() external view returns (address); function vat() external view returns (address); function exit(address, uint256) external; function join(address, uint256) external; } /** * @title A lightweight PSM implementation. * @notice Swaps Dai for `gem` at a 1:1 exchange rate. * @notice Fees `tin` and `tout` might apply. * @dev `gem` balance is kept in `pocket` instead of this contract. * @dev A few assumptions are made: * 1. There are no other urns for the same `ilk` * 2. Stability fee is always zero for the `ilk` * 3. The `spot` price for gem is always 1 (`10**27`). * 4. The `spotter.par` (Dai parity) is always 1 (`10**27`). * 5. This contract can freely transfer `gem` on behalf of `pocket`. */ contract DssLitePsm { /// @notice Special value for `tin` and/or `tout` to indicate swaps are halted. /// @dev Setting `tin` or `tout` to `type(uint256).max` will cause sell gem and buy gem functions respectively to revert. uint256 public constant HALTED = type(uint256).max; /// @notice Collateral type identifier. bytes32 public immutable ilk; /// @notice Maker Protocol core engine. VatLike public immutable vat; /// @notice Dai adapter. DaiJoinLike public immutable daiJoin; /// @notice Dai token. GemLike public immutable dai; /// @notice Gem to exchange with Dai. GemLike public immutable gem; /// @notice Precision conversion factor for `gem`, since Dai is expected to always have 18 decimals. uint256 public immutable to18ConversionFactor; /// @notice The ultimate holder of the gems. /// @dev This contract should be able to freely transfer `gem` on behalf of `pocket`. address public immutable pocket; /// @notice Addresses with admin access on this contract. `wards[usr]`. mapping(address => uint256) public wards; /// @notice Addresses with permission to swap with no fees. `bud[usr]`. mapping(address => uint256) public bud; /// @notice Maker Protocol balance sheet. address public vow; /// @notice Fee for selling gems. /// @dev `wad` precision. 1 * WAD means a 100% fee. uint256 public tin; /// @notice Fee for buying gems. /// @dev `wad` precision. 1 * WAD means a 100% fee. uint256 public tout; /// @notice Buffer for pre-minted Dai. /// @dev `wad` precision. uint256 public buf; /// @dev `wad` precision. uint256 internal constant WAD = 10 ** 18; /// @dev `ray` precision for `vat` manipulation. uint256 internal constant RAY = 10 ** 27; /// @dev Workaround to explicitly revert with an arithmetic error. string internal constant ARITHMETIC_ERROR = string(abi.encodeWithSignature("Panic(uint256)", 0x11)); /** * @notice `usr` was granted admin access. * @param usr The user address. */ event Rely(address indexed usr); /** * @notice `usr` admin access was revoked. * @param usr The user address. */ event Deny(address indexed usr); /** * @notice `usr` was granted permission to swap without any fees. * @param usr The user address. */ event Kiss(address indexed usr); /** * @notice Permission revoked for `usr` to swap without any fees. * @param usr The user address. */ event Diss(address indexed usr); /** * @notice A contract parameter was updated. * @param what The changed parameter name. ["vow"]. * @param data The new value of the parameter. */ event File(bytes32 indexed what, address data); /** * @notice A contract parameter was updated. * @param what The changed parameter name. ["tin", "tout", "buf"]. * @param data The new value of the parameter. */ event File(bytes32 indexed what, uint256 data); /** * @notice A user sold `gem` for Dai. * @param owner The address receiving Dai. * @param value The amount of `gem` sold. [`gem` precision]. * @param fee The fee in Dai paid by the user. [`wad`]. */ event SellGem(address indexed owner, uint256 value, uint256 fee); /** * @notice A user bought `gem` with Dai. * @param owner The address receiving `gem`. * @param value The amount of `gem` bought. [`gem` precision]. * @param fee The fee in Dai paid by the user. [`wad`]. */ event BuyGem(address indexed owner, uint256 value, uint256 fee); /** * @notice The contract was filled with Dai. * @param wad The amount of Dai filled. */ event Fill(uint256 wad); /** * @notice The contract was trimmed of excess Dai. * @param wad The amount of Dai trimmed. */ event Trim(uint256 wad); /** * @notice Dai accumulated as swap fees was added to the surplus buffer. * @param wad The amount of Dai added. */ event Chug(uint256 wad); modifier auth() { require(wards[msg.sender] == 1, "DssLitePsm/not-authorized"); _; } modifier toll() { require(bud[msg.sender] == 1, "DssLitePsm/not-whitelisted"); _; } /** * @param ilk_ The collateral type identifier. * @param gem_ The gem to exchange with Dai. * @param daiJoin_ The Dai adapter. * @param pocket_ The ultimate holder of `gem`. */ constructor(bytes32 ilk_, address gem_, address daiJoin_, address pocket_) { ilk = ilk_; gem = GemLike(gem_); daiJoin = DaiJoinLike(daiJoin_); vat = VatLike(daiJoin.vat()); dai = GemLike(daiJoin.dai()); pocket = pocket_; to18ConversionFactor = 10 ** (18 - gem.decimals()); dai.approve(daiJoin_, type(uint256).max); vat.hope(daiJoin_); wards[msg.sender] = 1; emit Rely(msg.sender); } /*////////////////////////////////// Math //////////////////////////////////*/ ///@dev Safely converts `uint256` to `int256`. Reverts if it overflows. function _int256(uint256 x) internal pure returns (int256 y) { require((y = int256(x)) >= 0, ARITHMETIC_ERROR); } ///@dev Returns the min between `x` and `y`. function _min(uint256 x, uint256 y) internal pure returns (uint256 z) { return x < y ? x : y; } ///@dev Returns the max between `x` and `y`. function _max(uint256 x, uint256 y) internal pure returns (uint256 z) { return x > y ? x : y; } ///@dev Returns the difference between `x` and `y` if `x > y` or zero otherwise. function _subcap(uint256 x, uint256 y) internal pure returns (uint256 z) { unchecked { z = x > y ? x - y : 0; } } /*////////////////////////////////// Administration //////////////////////////////////*/ /** * @notice Grants `usr` admin access to this contract. * @param usr The user address. */ function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); } /** * @notice Revokes `usr` admin access from this contract. * @param usr The user address. */ function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); } /** * @notice Grants `usr` permission to swap without any fees. * @param usr The user address. */ function kiss(address usr) external auth { bud[usr] = 1; emit Kiss(usr); } /** * @notice Revokes `usr` permission to swap without any fees. * @param usr The user address. */ function diss(address usr) external auth { bud[usr] = 0; emit Diss(usr); } /** * @notice Updates a contract parameter. * @param what The changed parameter name. ["vow"]. * @param data The new value of the parameter. */ function file(bytes32 what, address data) external auth { if (what == "vow") { vow = data; } else { revert("DssLitePsm/file-unrecognized-param"); } emit File(what, data); } /** * @notice Updates a contract parameter. * @dev Swapping fees may not apply due to rounding errors for small swaps where * `gemAmt < 10**gem.decimals() / tin` or * `gemAmt < 10**gem.decimals() / tout`. * @dev Setting `tin` or `tout` to `HALTED` effectively disables selling and buying gems respectively. * @param what The changed parameter name. ["tin", "tout", "buf"]. * @param data The new value of the parameter. */ function file(bytes32 what, uint256 data) external auth { if (what == "tin") { require(data == HALTED || data <= WAD, "DssLitePsm/tin-out-of-range"); tin = data; } else if (what == "tout") { require(data == HALTED || data <= WAD, "DssLitePsm/tout-out-of-range"); tout = data; } else if (what == "buf") { buf = data; } else { revert("DssLitePsm/file-unrecognized-param"); } emit File(what, data); } /*////////////////////////////////// Swapping //////////////////////////////////*/ /** * @notice Function that swaps `gem` into Dai. * @dev Reverts if `tin` is set to `HALTED`. * @param usr The destination of the bought Dai. * @param gemAmt The amount of gem to sell. [`gem` precision]. * @return daiOutWad The amount of Dai bought. */ function sellGem(address usr, uint256 gemAmt) external returns (uint256 daiOutWad) { uint256 tin_ = tin; require(tin_ != HALTED, "DssLitePsm/sell-gem-halted"); daiOutWad = _sellGem(usr, gemAmt, tin_); } /** * @notice Function that swaps `gem` into Dai without any fees. * @dev Only users whitelisted through `kiss()` can call this function. * Reverts if `tin` is set to `HALTED`. * @param usr The destination of the bought Dai. * @param gemAmt The amount of gem to sell. [`gem` precision]. * @return daiOutWad The amount of Dai bought. */ function sellGemNoFee(address usr, uint256 gemAmt) external toll returns (uint256 daiOutWad) { require(tin != HALTED, "DssLitePsm/sell-gem-halted"); daiOutWad = _sellGem(usr, gemAmt, 0); } /** * @notice Internal function that implements the logic to swaps `gem` into Dai. * @param usr The destination of the bought Dai. * @param gemAmt The amount of gem to sell. [`gem` precision]. * @param tin_ The fee rate applicable to the swap [`1 * WAD` = 100%]. * @return daiOutWad The amount of Dai bought. */ function _sellGem(address usr, uint256 gemAmt, uint256 tin_) internal returns (uint256 daiOutWad) { daiOutWad = gemAmt * to18ConversionFactor; uint256 fee; if (tin_ > 0) { fee = daiOutWad * tin_ / WAD; // At this point, `tin_ <= 1 WAD`, so an underflow is not possible. unchecked { daiOutWad -= fee; } } gem.transferFrom(msg.sender, pocket, gemAmt); // This can consume the whole balance including system fees not withdrawn. dai.transfer(usr, daiOutWad); emit SellGem(usr, gemAmt, fee); } /** * @notice Function that swaps Dai into `gem`. * @dev Reverts if `tout` is set to `HALTED`. * @param usr The destination of the bought gems. * @param gemAmt The amount of gem to buy. [`gem` precision]. * @return daiInWad The amount of Dai required to sell. */ function buyGem(address usr, uint256 gemAmt) external returns (uint256 daiInWad) { uint256 tout_ = tout; require(tout_ != HALTED, "DssLitePsm/buy-gem-halted"); daiInWad = _buyGem(usr, gemAmt, tout_); } /** * @notice Function that swaps Dai into `gem` without any fees. * @dev Only users whitelisted through `kiss()` can call this function. * Reverts if `tout` is set to `HALTED`. * @param usr The destination of the bought gems. * @param gemAmt The amount of gem to buy. [`gem` precision]. * @return daiInWad The amount of Dai required to sell. */ function buyGemNoFee(address usr, uint256 gemAmt) external toll returns (uint256 daiInWad) { require(tout != HALTED, "DssLitePsm/buy-gem-halted"); daiInWad = _buyGem(usr, gemAmt, 0); } /** * @notice Internal function implementing the logic that swaps Dai into `gem`. * @param usr The destination of the bought gems. * @param gemAmt The amount of gem to buy. [`gem` precision]. * @param tout_ The fee rate applicable to the swap [`1 * WAD` = 100%]. * @return daiInWad The amount of Dai required to sell. */ function _buyGem(address usr, uint256 gemAmt, uint256 tout_) internal returns (uint256 daiInWad) { daiInWad = gemAmt * to18ConversionFactor; uint256 fee; if (tout_ > 0) { fee = daiInWad * tout_ / WAD; daiInWad += fee; } dai.transferFrom(msg.sender, address(this), daiInWad); gem.transferFrom(pocket, usr, gemAmt); emit BuyGem(usr, gemAmt, fee); } /*////////////////////////////////// Bookkeeping //////////////////////////////////*/ /** * @notice Mints Dai into this contract. * @dev Both `buf`, the local and global debt ceilings limit the actual minted amount. * Notice that `gem` donations or extraneous debt repayments can also affect the amount. * @return wad The amount of Dai minted. */ function fill() external returns (uint256 wad) { wad = rush(); require(wad > 0, "DssLitePsm/nothing-to-fill"); // The `urn` for this contract in the `Vat` is expected to have "unlimited" `ink`. vat.frob(ilk, address(this), address(0), address(this), 0, _int256(wad)); daiJoin.exit(address(this), wad); emit Fill(wad); } /** * @notice Burns any excess of Dai from this contract. * @dev The total outstanding debt can still be larger than the debt ceiling after `trim`. * Additional `buyGem` calls will enable further `trim` calls. * @return wad The amount of Dai burned. */ function trim() external returns (uint256 wad) { wad = gush(); require(wad > 0, "DssLitePsm/nothing-to-trim"); daiJoin.join(address(this), wad); // The `urn` for this contract in the `Vat` is expected to have "unlimited" `ink`. vat.frob(ilk, address(this), address(0), address(this), 0, -_int256(wad)); emit Trim(wad); } /** * @notice Incorporates any outstanding accumulated fees into the surplus buffer. * @return wad The amount added to the surplus buffer. */ function chug() external returns (uint256 wad) { address vow_ = vow; require(vow_ != address(0), "DssLitePsm/chug-missing-vow"); wad = cut(); require(wad > 0, "DssLitePsm/nothing-to-chug"); daiJoin.join(vow_, wad); emit Chug(wad); } /*////////////////////////////////// Getters //////////////////////////////////*/ /** * @notice Returns the missing Dai that can be filled into this contract. * @return wad The amount of Dai. */ function rush() public view returns (uint256 wad) { (uint256 Art, uint256 rate,, uint256 line,) = vat.ilks(ilk); require(rate == RAY, "DssLitePsm/rate-not-RAY"); uint256 tArt = gem.balanceOf(pocket) * to18ConversionFactor + buf; wad = _min( _min( // To avoid two extra SLOADs it assumes urn.art == ilk.Art. _subcap(tArt, Art), _subcap(line / RAY, Art) ), _subcap(vat.Line(), vat.debt()) / RAY ); } /** * @notice Returns the excess Dai that can be trimmed from this contract. * @return wad The amount of Dai. */ function gush() public view returns (uint256 wad) { (uint256 Art, uint256 rate,, uint256 line,) = vat.ilks(ilk); require(rate == RAY, "DssLitePsm/rate-not-RAY"); uint256 tArt = gem.balanceOf(pocket) * to18ConversionFactor + buf; wad = _min( _max( // To avoid two extra SLOADs it assumes urn.art == ilk.Art. _subcap(Art, tArt), _subcap(Art, line / RAY) ), // Cannot burn more than the current balance. dai.balanceOf(address(this)) ); } /** * @notice Returns the amount of swapping fees that can be chugged by this contract. * @dev To keep `_sellGem` gas usage low, it allows users to take pre-minted Dai up to the whole balance, regardless * if part of it consist of collected fees. * If there is not enough balance, it will need to wait for new pre-minted Dai to be generated or Dai swapped * back to complete the withdrawal of fees. * @return wad The amount of Dai. */ function cut() public view returns (uint256 wad) { (, uint256 art) = vat.urns(ilk, address(this)); uint256 cash = dai.balanceOf(address(this)); wad = _min(cash, cash + gem.balanceOf(pocket) * to18ConversionFactor - art); } /*////////////////////////////////// Compatibility Layer //////////////////////////////////*/ /** * @notice Returns the address of the LitePsm contract itself. * @dev LitePsm does not have an external gem join. All logic is handled internally. * This function is required because there are some dependencies that assume every PSM has a gem join. * @return The address of this contract. */ function gemJoin() external view returns (address) { return address(this); } /** * @notice Returns the number of decimals for `gem`. * @return The number of decimals for `gem`. */ function dec() external view returns (uint256) { return gem.decimals(); } /** * @notice Returns whether the contract is live or not. * @return Whether the contract is live or not. */ function live() external view returns (uint256) { return vat.live(); } }
{ "remappings": [ "ds-test/=lib/dss-test/lib/forge-std/lib/ds-test/src/", "dss-interfaces/=lib/dss-test/lib/dss-interfaces/src/", "dss-test/=lib/dss-test/src/", "forge-std/=lib/dss-test/lib/forge-std/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"bytes32","name":"ilk_","type":"bytes32"},{"internalType":"address","name":"gem_","type":"address"},{"internalType":"address","name":"daiJoin_","type":"address"},{"internalType":"address","name":"pocket_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"BuyGem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Chug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Diss","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Fill","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Kiss","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"SellGem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Trim","type":"event"},{"inputs":[],"name":"HALTED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bud","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"gemAmt","type":"uint256"}],"name":"buyGem","outputs":[{"internalType":"uint256","name":"daiInWad","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"gemAmt","type":"uint256"}],"name":"buyGemNoFee","outputs":[{"internalType":"uint256","name":"daiInWad","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"chug","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cut","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dai","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daiJoin","outputs":[{"internalType":"contract DaiJoinLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"diss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fill","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gem","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gemJoin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gush","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ilk","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"kiss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pocket","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rush","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"gemAmt","type":"uint256"}],"name":"sellGem","outputs":[{"internalType":"uint256","name":"daiOutWad","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"gemAmt","type":"uint256"}],"name":"sellGemNoFee","outputs":[{"internalType":"uint256","name":"daiOutWad","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"to18ConversionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trim","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101606040523480156200001257600080fd5b5060405162002714380380620027148339810160408190526200003591620002fb565b60808490526001600160a01b0380841661010052821660c0819052604080516336569e7760e01b815290516336569e77916004808201926020929091908290030181865afa1580156200008c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b291906200034f565b6001600160a01b031660a0816001600160a01b03168152505060c0516001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013291906200034f565b6001600160a01b0390811660e05281811661014052610100516040805163313ce56760e01b81529051919092169163313ce5679160048083019260209291908290030181865afa1580156200018b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b1919062000374565b620001be906012620003af565b620001cb90600a620004ce565b6101205260e05160405163095ea7b360e01b81526001600160a01b03848116600483015260001960248301529091169063095ea7b390604401600060405180830381600087803b1580156200021f57600080fd5b505af115801562000234573d6000803e3d6000fd5b505060a0516040516328ec8bf160e21b81526001600160a01b038681166004830152909116925063a3b22fc49150602401600060405180830381600087803b1580156200028057600080fd5b505af115801562000295573d6000803e3d6000fd5b50503360008181526020819052604080822060019055519193507fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a60925090a250505050620004df565b80516001600160a01b0381168114620002f657600080fd5b919050565b600080600080608085870312156200031257600080fd5b845193506200032460208601620002de565b92506200033460408601620002de565b91506200034460608601620002de565b905092959194509250565b6000602082840312156200036257600080fd5b6200036d82620002de565b9392505050565b6000602082840312156200038757600080fd5b815160ff811681146200036d57600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620003cb57620003cb62000399565b92915050565b600181815b8085111562000412578160001904821115620003f657620003f662000399565b808516156200040457918102915b93841c9390800290620003d6565b509250929050565b6000826200042b57506001620003cb565b816200043a57506000620003cb565b81600181146200045357600281146200045e576200047e565b6001915050620003cb565b60ff84111562000472576200047262000399565b50506001821b620003cb565b5060208310610133831016604e8410600b8410161715620004a3575081810a620003cb565b620004af8383620003d1565b8060001904821115620004c657620004c662000399565b029392505050565b60006200036d60ff8416836200041a565b60805160a05160c05160e0516101005161012051610140516120de620006366000396000818161042d01528181610c170152818161129f015281816118d001528181611af30152611cb001526000818161028a01528181610c43015281816112cb01528181611880015281816119fd0152611c3f01526000818161032401528181610c65015281816110eb015281816112ed015281816118a101528181611b2a0152611cdf01526000818161048a01528181610d2f0152818161180c01528181611a7a0152611d5f0152600081816103d7015281816107c101528181610fdb015261169f0152600081816102630152818161082701528181610af301528181610e190152818161117b015281816113af01528181611431015281816115ab015261177e0152600081816103fe0152818161085601528181610b22015281816111aa015281816115da015261174501526120de6000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638d7ef9bb1161011a578063c5ce281e116100ad578063d9c55ce11161007c578063d9c55ce114610462578063e6fd604c1461046a578063f29c29c414610472578063f4b9fa7514610485578063fae036d5146104ac57600080fd5b8063c5ce281e146103f9578063cbf0bfac14610420578063cccef9e214610428578063d4e8be831461044f57600080fd5b80639c52a7f1116100e95780639c52a7f114610397578063b3bcfa82146103aa578063bf353dbb146103b2578063c11645bc146103d257600080fd5b80638d7ef9bb14610361578063957aa58c14610374578063959912761461037c5780639b652df61461038f57600080fd5b8063568d4b6f11610192578063678d773211610161578063678d7732146103165780637bd2bea71461031f57806386c34f4214610346578063881eb14e1461035957600080fd5b8063568d4b6f146102d4578063626cb3c5146102dd57806365c4ce7a146102f057806365fae35e1461030357600080fd5b806336569e77116101ce57806336569e771461025e5780634010f7771461028557806340d9c0e3146102ac5780634fce7a2a146102b457600080fd5b806301664f6614610200578063067d92741461021f578063152325151461024057806329ae811414610249575b600080fd5b305b6040516001600160a01b0390911681526020015b60405180910390f35b61023261022d366004611e57565b6104b5565b604051908152602001610216565b61023260055481565b61025c610257366004611e81565b61057b565b005b6102027f000000000000000000000000000000000000000000000000000000000000000081565b6102327f000000000000000000000000000000000000000000000000000000000000000081565b610232610749565b6102326102c2366004611ea3565b60016020526000908152604090205481565b61023260035481565b600254610202906001600160a01b031681565b61025c6102fe366004611ea3565b610946565b61025c610311366004611ea3565b6109b9565b61023260001981565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b610232610354366004611e57565b610a2d565b610232610aeb565b61023261036f366004611e57565b610db0565b610232610e15565b61023261038a366004611e57565b610e9e565b610232610eff565b61025c6103a5366004611ea3565b611074565b6102326110e7565b6102326103c0366004611ea3565b60006020819052908152604090205481565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b6102327f000000000000000000000000000000000000000000000000000000000000000081565b610232611173565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b61025c61045d366004611ebe565b6114bb565b61023261154d565b610232611736565b61025c610480366004611ea3565b611980565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b61023260045481565b336000908152600160208190526040822054146105195760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f742d77686974656c697374656400000000000060448201526064015b60405180910390fd5b600019600454036105685760405162461bcd60e51b8152602060048201526019602482015278111cdcd31a5d19541cdb4bd89d5e4b59d95b4b5a185b1d1959603a1b6044820152606401610510565b610574838360006119f6565b9392505050565b336000908152602081905260409020546001146105aa5760405162461bcd60e51b815260040161051090611eea565b81623a34b760e91b03610625576000198114806105cf5750670de0b6b3a76400008111155b61061b5760405162461bcd60e51b815260206004820152601b60248201527f4473734c69746550736d2f74696e2d6f75742d6f662d72616e676500000000006044820152606401610510565b600381905561070b565b81631d1bdd5d60e21b036106a15760001981148061064b5750670de0b6b3a76400008111155b6106975760405162461bcd60e51b815260206004820152601c60248201527f4473734c69746550736d2f746f75742d6f75742d6f662d72616e6765000000006044820152606401610510565b600481905561070b565b8162313ab360e91b036106b857600581905561070b565b60405162461bcd60e51b815260206004820152602260248201527f4473734c69746550736d2f66696c652d756e7265636f676e697a65642d706172604482015261616d60f01b6064820152608401610510565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c78260405161073d91815260200190565b60405180910390a25050565b6000610753610aeb565b9050600081116107a55760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f7468696e672d746f2d7472696d0000000000006044820152606401610510565b604051633b4da69f60e01b8152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633b4da69f90604401600060405180830381600087803b15801561080d57600080fd5b505af1158015610821573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663760887037f000000000000000000000000000000000000000000000000000000000000000030600030600061088488611bd5565b61088d90611f37565b6040516001600160e01b031960e089901b16815260048101969096526001600160a01b039485166024870152928416604486015292166064840152608483019190915260a482015260c401600060405180830381600087803b1580156108f257600080fd5b505af1158015610906573d6000803e3d6000fd5b505050507fc73c16902381a37c21b07e127e3d0c092955b9fedb2b23e7e9b91ca527545ae68160405161093b91815260200190565b60405180910390a190565b336000908152602081905260409020546001146109755760405162461bcd60e51b815260040161051090611eea565b6001600160a01b038116600081815260016020526040808220829055517f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c9190a250565b336000908152602081905260409020546001146109e85760405162461bcd60e51b815260040161051090611eea565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b33600090815260016020819052604082205414610a8c5760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f742d77686974656c69737465640000000000006044820152606401610510565b60001960035403610adf5760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f73656c6c2d67656d2d68616c7465640000000000006044820152606401610510565b61057483836000611c38565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d9638d367f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610b5f91815260200190565b60a060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190611f53565b50935050925092506b033b2e3c9fd0803ce80000008214610bfd5760405162461bcd60e51b81526020600482015260176024820152764473734c69746550736d2f726174652d6e6f742d52415960481b6044820152606401610510565b6005546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152600092917f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd09190611f93565b610cda9190611fac565b610ce49190611fcb565b9050610da7610d1a610cf68684611dfe565b610d1587610d106b033b2e3c9fd0803ce800000088611fde565b611dfe565b611e14565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da29190611f93565b611e2c565b94505050505090565b60045460009060018101610e025760405162461bcd60e51b8152602060048201526019602482015278111cdcd31a5d19541cdb4bd89d5e4b59d95b4b5a185b1d1959603a1b6044820152606401610510565b610e0d8484836119f6565b949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663957aa58c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190611f93565b905090565b60035460009060018101610ef45760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f73656c6c2d67656d2d68616c7465640000000000006044820152606401610510565b610e0d848483611c38565b6002546000906001600160a01b031680610f5b5760405162461bcd60e51b815260206004820152601b60248201527f4473734c69746550736d2f636875672d6d697373696e672d766f7700000000006044820152606401610510565b610f63611736565b915060008211610fb55760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f7468696e672d746f2d636875670000000000006044820152606401610510565b604051633b4da69f60e01b81526001600160a01b038281166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001690633b4da69f90604401600060405180830381600087803b15801561101f57600080fd5b505af1158015611033573d6000803e3d6000fd5b505050507fbaf40fa9da797753c7837b8bae01a8ee6009597a3de9665c6fdf70e8706649938260405161106891815260200190565b60405180910390a15090565b336000908152602081905260409020546001146110a35760405162461bcd60e51b815260040161051090611eea565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116b9190612000565b60ff16905090565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d9638d367f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111e791815260200190565b60a060405180830381865afa158015611204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112289190611f53565b50935050925092506b033b2e3c9fd0803ce800000082146112855760405162461bcd60e51b81526020600482015260176024820152764473734c69746550736d2f726174652d6e6f742d52415960481b6044820152606401610510565b6005546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152600092917f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113589190611f93565b6113629190611fac565b61136c9190611fcb565b9050610da761139d61137e8387611dfe565b610da26113976b033b2e3c9fd0803ce800000087611fde565b88611dfe565b6b033b2e3c9fd0803ce80000006114b17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663babe8a3f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f9190611f93565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630dca59c16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d109190611f93565b610da29190611fde565b336000908152602081905260409020546001146114ea5760405162461bcd60e51b815260040161051090611eea565b8162766f7760e81b036106b857600280546001600160a01b0319166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200161073d565b6000611557611173565b9050600081116115a95760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f7468696e672d746f2d66696c6c0000000000006044820152606401610510565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663760887037f000000000000000000000000000000000000000000000000000000000000000030600030600061160888611bd5565b6040516001600160e01b031960e089901b16815260048101969096526001600160a01b039485166024870152928416604486015292166064840152608483019190915260a482015260c401600060405180830381600087803b15801561166d57600080fd5b505af1158015611681573d6000803e3d6000fd5b505060405163ef693bed60e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925063ef693bed9150604401600060405180830381600087803b1580156116ed57600080fd5b505af1158015611701573d6000803e3d6000fd5b505050507f1293e04cd381a7d781bab7dbc1f14f587c30b893b53af97e704717cc02a102548160405161093b91815260200190565b6040516309092f9760e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015230602482015260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632424be5c906044016040805180830381865afa1580156117c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e89190612023565b6040516370a0823160e01b8152306004820152909250600091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118779190611f93565b905061197981837f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161191a91906001600160a01b0391909116815260200190565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190611f93565b6119659190611fac565b61196f9085611fcb565b610da29190612047565b9250505090565b336000908152602081905260409020546001146119af5760405162461bcd60e51b815260040161051090611eea565b6001600160a01b038116600081815260016020819052604080832091909155517f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb2449190a250565b6000611a227f000000000000000000000000000000000000000000000000000000000000000084611fac565b905060008215611a5857670de0b6b3a7640000611a3f8484611fac565b611a499190611fde565b9050611a558183611fcb565b91505b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401600060405180830381600087803b158015611ac657600080fd5b505af1158015611ada573d6000803e3d6000fd5b50506040516323b872dd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528881166024830152604482018890527f00000000000000000000000000000000000000000000000000000000000000001692506323b872dd9150606401600060405180830381600087803b158015611b7057600080fd5b505af1158015611b84573d6000803e3d6000fd5b505060408051878152602081018590526001600160a01b03891693507f085d06ecf4c34b237767a31c0888e121d89546a77f186f1987c6b8715e1a8caa9250015b60405180910390a2509392505050565b60405160116024820152819060008212159060440160408051601f198184030181529190526020810180516001600160e01b0316634e487b7160e01b17905290611c325760405162461bcd60e51b8152600401610510919061205a565b50919050565b6000611c647f000000000000000000000000000000000000000000000000000000000000000084611fac565b905060008215611c9357670de0b6b3a7640000611c818484611fac565b611c8b9190611fde565b905080820391505b6040516323b872dd60e01b81523360048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018690527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90606401600060405180830381600087803b158015611d2357600080fd5b505af1158015611d37573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038881166004830152602482018690527f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb9150604401600060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b505060408051878152602081018590526001600160a01b03891693507fef75f5a47cc9a929968796ceb84f19e7541617b4577f2c228ea95200e1572081925001611bc5565b6000818311611e0e576000610574565b50900390565b6000818311611e235781610574565b50815b92915050565b6000818310611e235781610574565b80356001600160a01b0381168114611e5257600080fd5b919050565b60008060408385031215611e6a57600080fd5b611e7383611e3b565b946020939093013593505050565b60008060408385031215611e9457600080fd5b50508035926020909101359150565b600060208284031215611eb557600080fd5b61057482611e3b565b60008060408385031215611ed157600080fd5b82359150611ee160208401611e3b565b90509250929050565b60208082526019908201527f4473734c69746550736d2f6e6f742d617574686f72697a656400000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201611f4c57611f4c611f21565b5060000390565b600080600080600060a08688031215611f6b57600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b600060208284031215611fa557600080fd5b5051919050565b6000816000190483118215151615611fc657611fc6611f21565b500290565b80820180821115611e2657611e26611f21565b600082611ffb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561201257600080fd5b815160ff8116811461057457600080fd5b6000806040838503121561203657600080fd5b505080516020909101519092909150565b81810381811115611e2657611e26611f21565b600060208083528351808285015260005b818110156120875785810183015185820160400152820161206b565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220165a90e4eab28a2959dd862851987c71429c927a6f7e0fc0b19ba371d3e00e5d64736f6c634300081000334c4954452d50534d2d555344432d410000000000000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000009759a6ac90977b93b58547b4a71c78317f391a2800000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd7341
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638d7ef9bb1161011a578063c5ce281e116100ad578063d9c55ce11161007c578063d9c55ce114610462578063e6fd604c1461046a578063f29c29c414610472578063f4b9fa7514610485578063fae036d5146104ac57600080fd5b8063c5ce281e146103f9578063cbf0bfac14610420578063cccef9e214610428578063d4e8be831461044f57600080fd5b80639c52a7f1116100e95780639c52a7f114610397578063b3bcfa82146103aa578063bf353dbb146103b2578063c11645bc146103d257600080fd5b80638d7ef9bb14610361578063957aa58c14610374578063959912761461037c5780639b652df61461038f57600080fd5b8063568d4b6f11610192578063678d773211610161578063678d7732146103165780637bd2bea71461031f57806386c34f4214610346578063881eb14e1461035957600080fd5b8063568d4b6f146102d4578063626cb3c5146102dd57806365c4ce7a146102f057806365fae35e1461030357600080fd5b806336569e77116101ce57806336569e771461025e5780634010f7771461028557806340d9c0e3146102ac5780634fce7a2a146102b457600080fd5b806301664f6614610200578063067d92741461021f578063152325151461024057806329ae811414610249575b600080fd5b305b6040516001600160a01b0390911681526020015b60405180910390f35b61023261022d366004611e57565b6104b5565b604051908152602001610216565b61023260055481565b61025c610257366004611e81565b61057b565b005b6102027f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b81565b6102327f000000000000000000000000000000000000000000000000000000e8d4a5100081565b610232610749565b6102326102c2366004611ea3565b60016020526000908152604090205481565b61023260035481565b600254610202906001600160a01b031681565b61025c6102fe366004611ea3565b610946565b61025c610311366004611ea3565b6109b9565b61023260001981565b6102027f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b610232610354366004611e57565b610a2d565b610232610aeb565b61023261036f366004611e57565b610db0565b610232610e15565b61023261038a366004611e57565b610e9e565b610232610eff565b61025c6103a5366004611ea3565b611074565b6102326110e7565b6102326103c0366004611ea3565b60006020819052908152604090205481565b6102027f0000000000000000000000009759a6ac90977b93b58547b4a71c78317f391a2881565b6102327f4c4954452d50534d2d555344432d41000000000000000000000000000000000081565b610232611173565b6102027f00000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd734181565b61025c61045d366004611ebe565b6114bb565b61023261154d565b610232611736565b61025c610480366004611ea3565b611980565b6102027f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b61023260045481565b336000908152600160208190526040822054146105195760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f742d77686974656c697374656400000000000060448201526064015b60405180910390fd5b600019600454036105685760405162461bcd60e51b8152602060048201526019602482015278111cdcd31a5d19541cdb4bd89d5e4b59d95b4b5a185b1d1959603a1b6044820152606401610510565b610574838360006119f6565b9392505050565b336000908152602081905260409020546001146105aa5760405162461bcd60e51b815260040161051090611eea565b81623a34b760e91b03610625576000198114806105cf5750670de0b6b3a76400008111155b61061b5760405162461bcd60e51b815260206004820152601b60248201527f4473734c69746550736d2f74696e2d6f75742d6f662d72616e676500000000006044820152606401610510565b600381905561070b565b81631d1bdd5d60e21b036106a15760001981148061064b5750670de0b6b3a76400008111155b6106975760405162461bcd60e51b815260206004820152601c60248201527f4473734c69746550736d2f746f75742d6f75742d6f662d72616e6765000000006044820152606401610510565b600481905561070b565b8162313ab360e91b036106b857600581905561070b565b60405162461bcd60e51b815260206004820152602260248201527f4473734c69746550736d2f66696c652d756e7265636f676e697a65642d706172604482015261616d60f01b6064820152608401610510565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c78260405161073d91815260200190565b60405180910390a25050565b6000610753610aeb565b9050600081116107a55760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f7468696e672d746f2d7472696d0000000000006044820152606401610510565b604051633b4da69f60e01b8152306004820152602481018290527f0000000000000000000000009759a6ac90977b93b58547b4a71c78317f391a286001600160a01b031690633b4da69f90604401600060405180830381600087803b15801561080d57600080fd5b505af1158015610821573d6000803e3d6000fd5b505050507f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b031663760887037f4c4954452d50534d2d555344432d41000000000000000000000000000000000030600030600061088488611bd5565b61088d90611f37565b6040516001600160e01b031960e089901b16815260048101969096526001600160a01b039485166024870152928416604486015292166064840152608483019190915260a482015260c401600060405180830381600087803b1580156108f257600080fd5b505af1158015610906573d6000803e3d6000fd5b505050507fc73c16902381a37c21b07e127e3d0c092955b9fedb2b23e7e9b91ca527545ae68160405161093b91815260200190565b60405180910390a190565b336000908152602081905260409020546001146109755760405162461bcd60e51b815260040161051090611eea565b6001600160a01b038116600081815260016020526040808220829055517f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c9190a250565b336000908152602081905260409020546001146109e85760405162461bcd60e51b815260040161051090611eea565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b33600090815260016020819052604082205414610a8c5760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f742d77686974656c69737465640000000000006044820152606401610510565b60001960035403610adf5760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f73656c6c2d67656d2d68616c7465640000000000006044820152606401610510565b61057483836000611c38565b6000806000807f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b031663d9638d367f4c4954452d50534d2d555344432d4100000000000000000000000000000000006040518263ffffffff1660e01b8152600401610b5f91815260200190565b60a060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190611f53565b50935050925092506b033b2e3c9fd0803ce80000008214610bfd5760405162461bcd60e51b81526020600482015260176024820152764473734c69746550736d2f726174652d6e6f742d52415960481b6044820152606401610510565b6005546040516370a0823160e01b81526001600160a01b037f00000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd734181166004830152600092917f000000000000000000000000000000000000000000000000000000e8d4a51000917f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4816906370a0823190602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd09190611f93565b610cda9190611fac565b610ce49190611fcb565b9050610da7610d1a610cf68684611dfe565b610d1587610d106b033b2e3c9fd0803ce800000088611fde565b611dfe565b611e14565b6040516370a0823160e01b81523060048201527f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b0316906370a0823190602401602060405180830381865afa158015610d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da29190611f93565b611e2c565b94505050505090565b60045460009060018101610e025760405162461bcd60e51b8152602060048201526019602482015278111cdcd31a5d19541cdb4bd89d5e4b59d95b4b5a185b1d1959603a1b6044820152606401610510565b610e0d8484836119f6565b949350505050565b60007f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b031663957aa58c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190611f93565b905090565b60035460009060018101610ef45760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f73656c6c2d67656d2d68616c7465640000000000006044820152606401610510565b610e0d848483611c38565b6002546000906001600160a01b031680610f5b5760405162461bcd60e51b815260206004820152601b60248201527f4473734c69746550736d2f636875672d6d697373696e672d766f7700000000006044820152606401610510565b610f63611736565b915060008211610fb55760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f7468696e672d746f2d636875670000000000006044820152606401610510565b604051633b4da69f60e01b81526001600160a01b038281166004830152602482018490527f0000000000000000000000009759a6ac90977b93b58547b4a71c78317f391a281690633b4da69f90604401600060405180830381600087803b15801561101f57600080fd5b505af1158015611033573d6000803e3d6000fd5b505050507fbaf40fa9da797753c7837b8bae01a8ee6009597a3de9665c6fdf70e8706649938260405161106891815260200190565b60405180910390a15090565b336000908152602081905260409020546001146110a35760405162461bcd60e51b815260040161051090611eea565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60007f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116b9190612000565b60ff16905090565b6000806000807f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b031663d9638d367f4c4954452d50534d2d555344432d4100000000000000000000000000000000006040518263ffffffff1660e01b81526004016111e791815260200190565b60a060405180830381865afa158015611204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112289190611f53565b50935050925092506b033b2e3c9fd0803ce800000082146112855760405162461bcd60e51b81526020600482015260176024820152764473734c69746550736d2f726174652d6e6f742d52415960481b6044820152606401610510565b6005546040516370a0823160e01b81526001600160a01b037f00000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd734181166004830152600092917f000000000000000000000000000000000000000000000000000000e8d4a51000917f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4816906370a0823190602401602060405180830381865afa158015611334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113589190611f93565b6113629190611fac565b61136c9190611fcb565b9050610da761139d61137e8387611dfe565b610da26113976b033b2e3c9fd0803ce800000087611fde565b88611dfe565b6b033b2e3c9fd0803ce80000006114b17f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b031663babe8a3f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f9190611f93565b7f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b0316630dca59c16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d109190611f93565b610da29190611fde565b336000908152602081905260409020546001146114ea5760405162461bcd60e51b815260040161051090611eea565b8162766f7760e81b036106b857600280546001600160a01b0319166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200161073d565b6000611557611173565b9050600081116115a95760405162461bcd60e51b815260206004820152601a60248201527f4473734c69746550736d2f6e6f7468696e672d746f2d66696c6c0000000000006044820152606401610510565b7f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b031663760887037f4c4954452d50534d2d555344432d41000000000000000000000000000000000030600030600061160888611bd5565b6040516001600160e01b031960e089901b16815260048101969096526001600160a01b039485166024870152928416604486015292166064840152608483019190915260a482015260c401600060405180830381600087803b15801561166d57600080fd5b505af1158015611681573d6000803e3d6000fd5b505060405163ef693bed60e01b8152306004820152602481018490527f0000000000000000000000009759a6ac90977b93b58547b4a71c78317f391a286001600160a01b0316925063ef693bed9150604401600060405180830381600087803b1580156116ed57600080fd5b505af1158015611701573d6000803e3d6000fd5b505050507f1293e04cd381a7d781bab7dbc1f14f587c30b893b53af97e704717cc02a102548160405161093b91815260200190565b6040516309092f9760e21b81527f4c4954452d50534d2d555344432d410000000000000000000000000000000000600482015230602482015260009081906001600160a01b037f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b1690632424be5c906044016040805180830381865afa1580156117c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e89190612023565b6040516370a0823160e01b8152306004820152909250600091506001600160a01b037f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f16906370a0823190602401602060405180830381865afa158015611853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118779190611f93565b905061197981837f000000000000000000000000000000000000000000000000000000e8d4a510007f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486001600160a01b03166370a082317f00000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd73416040518263ffffffff1660e01b815260040161191a91906001600160a01b0391909116815260200190565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190611f93565b6119659190611fac565b61196f9085611fcb565b610da29190612047565b9250505090565b336000908152602081905260409020546001146119af5760405162461bcd60e51b815260040161051090611eea565b6001600160a01b038116600081815260016020819052604080832091909155517f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb2449190a250565b6000611a227f000000000000000000000000000000000000000000000000000000e8d4a5100084611fac565b905060008215611a5857670de0b6b3a7640000611a3f8484611fac565b611a499190611fde565b9050611a558183611fcb565b91505b6040516323b872dd60e01b8152336004820152306024820152604481018390527f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b0316906323b872dd90606401600060405180830381600087803b158015611ac657600080fd5b505af1158015611ada573d6000803e3d6000fd5b50506040516323b872dd60e01b81526001600160a01b037f00000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd7341811660048301528881166024830152604482018890527f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481692506323b872dd9150606401600060405180830381600087803b158015611b7057600080fd5b505af1158015611b84573d6000803e3d6000fd5b505060408051878152602081018590526001600160a01b03891693507f085d06ecf4c34b237767a31c0888e121d89546a77f186f1987c6b8715e1a8caa9250015b60405180910390a2509392505050565b60405160116024820152819060008212159060440160408051601f198184030181529190526020810180516001600160e01b0316634e487b7160e01b17905290611c325760405162461bcd60e51b8152600401610510919061205a565b50919050565b6000611c647f000000000000000000000000000000000000000000000000000000e8d4a5100084611fac565b905060008215611c9357670de0b6b3a7640000611c818484611fac565b611c8b9190611fde565b905080820391505b6040516323b872dd60e01b81523360048201526001600160a01b037f00000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd734181166024830152604482018690527f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4816906323b872dd90606401600060405180830381600087803b158015611d2357600080fd5b505af1158015611d37573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038881166004830152602482018690527f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f16925063a9059cbb9150604401600060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b505060408051878152602081018590526001600160a01b03891693507fef75f5a47cc9a929968796ceb84f19e7541617b4577f2c228ea95200e1572081925001611bc5565b6000818311611e0e576000610574565b50900390565b6000818311611e235781610574565b50815b92915050565b6000818310611e235781610574565b80356001600160a01b0381168114611e5257600080fd5b919050565b60008060408385031215611e6a57600080fd5b611e7383611e3b565b946020939093013593505050565b60008060408385031215611e9457600080fd5b50508035926020909101359150565b600060208284031215611eb557600080fd5b61057482611e3b565b60008060408385031215611ed157600080fd5b82359150611ee160208401611e3b565b90509250929050565b60208082526019908201527f4473734c69746550736d2f6e6f742d617574686f72697a656400000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201611f4c57611f4c611f21565b5060000390565b600080600080600060a08688031215611f6b57600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b600060208284031215611fa557600080fd5b5051919050565b6000816000190483118215151615611fc657611fc6611f21565b500290565b80820180821115611e2657611e26611f21565b600082611ffb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561201257600080fd5b815160ff8116811461057457600080fd5b6000806040838503121561203657600080fd5b505080516020909101519092909150565b81810381811115611e2657611e26611f21565b600060208083528351808285015260005b818110156120875785810183015185820160400152820161206b565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220165a90e4eab28a2959dd862851987c71429c927a6f7e0fc0b19ba371d3e00e5d64736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
4c4954452d50534d2d555344432d410000000000000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000009759a6ac90977b93b58547b4a71c78317f391a2800000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd7341
-----Decoded View---------------
Arg [0] : ilk_ (bytes32): 0x4c4954452d50534d2d555344432d410000000000000000000000000000000000
Arg [1] : gem_ (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [2] : daiJoin_ (address): 0x9759A6Ac90977b93B58547b4A71c78317f391A28
Arg [3] : pocket_ (address): 0x37305B1cD40574E4C5Ce33f8e8306Be057fD7341
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 4c4954452d50534d2d555344432d410000000000000000000000000000000000
Arg [1] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [2] : 0000000000000000000000009759a6ac90977b93b58547b4a71c78317f391a28
Arg [3] : 00000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd7341
Loading...
Loading
Loading...
Loading
OVERVIEW
Sky (formerly Maker) enables users to get rewarded for non-custodial savings.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.999984 | 387,918,148.2772 | $387,911,941.59 |
Loading...
Loading
[ 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.