Latest 25 from a total of 4,033 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Sell Gem | 23864563 | 1 hr ago | IN | 0 ETH | 0.00001637 | ||||
| Sell Gem | 23864275 | 2 hrs ago | IN | 0 ETH | 0.00001562 | ||||
| Buy Gem | 23861055 | 12 hrs ago | IN | 0 ETH | 0.00000776 | ||||
| Sell Gem | 23856857 | 27 hrs ago | IN | 0 ETH | 0.00013773 | ||||
| Buy Gem | 23851745 | 44 hrs ago | IN | 0 ETH | 0.00001736 | ||||
| Sell Gem | 23849567 | 2 days ago | IN | 0 ETH | 0.00030789 | ||||
| Sell Gem | 23849485 | 2 days ago | IN | 0 ETH | 0.00030655 | ||||
| Sell Gem | 23849478 | 2 days ago | IN | 0 ETH | 0.00002926 | ||||
| Buy Gem | 23846746 | 2 days ago | IN | 0 ETH | 0.00054929 | ||||
| Sell Gem | 23846305 | 2 days ago | IN | 0 ETH | 0.00015122 | ||||
| Buy Gem | 23845782 | 2 days ago | IN | 0 ETH | 0.00001068 | ||||
| Buy Gem | 23845702 | 2 days ago | IN | 0 ETH | 0.00009565 | ||||
| Buy Gem | 23844619 | 2 days ago | IN | 0 ETH | 0.00010609 | ||||
| Sell Gem | 23844216 | 2 days ago | IN | 0 ETH | 0.00000875 | ||||
| Buy Gem | 23842926 | 3 days ago | IN | 0 ETH | 0.00004159 | ||||
| Buy Gem | 23842114 | 3 days ago | IN | 0 ETH | 0.00013675 | ||||
| Buy Gem | 23841404 | 3 days ago | IN | 0 ETH | 0.00028805 | ||||
| Sell Gem | 23840913 | 3 days ago | IN | 0 ETH | 0.00022654 | ||||
| Buy Gem | 23839258 | 3 days ago | IN | 0 ETH | 0.00039405 | ||||
| Sell Gem | 23837777 | 3 days ago | IN | 0 ETH | 0.00011608 | ||||
| Sell Gem | 23837703 | 3 days ago | IN | 0 ETH | 0.000205 | ||||
| Sell Gem | 23837178 | 3 days ago | IN | 0 ETH | 0.00017571 | ||||
| Sell Gem | 23836674 | 3 days ago | IN | 0 ETH | 0.00002356 | ||||
| Sell Gem | 23827459 | 5 days ago | IN | 0 ETH | 0.00006834 | ||||
| Buy Gem | 23827293 | 5 days ago | IN | 0 ETH | 0.00023127 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
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
Contract ABI
API[{"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.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.