ETH Price: $3,457.93 (+5.09%)

Contract

0xf6e72Db5454dd049d0788e411b06CfAF16853042
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sell Gem212502242024-11-23 11:44:472 hrs ago1732362287IN
Sky: LitePSM USDC A
0 ETH0.0008631910.28152878
Sell Gem212501822024-11-23 11:36:232 hrs ago1732361783IN
Sky: LitePSM USDC A
0 ETH0.0009698211.55153602
Sell Gem212501462024-11-23 11:29:112 hrs ago1732361351IN
Sky: LitePSM USDC A
0 ETH0.0009239511.00527271
Buy Gem212480292024-11-23 4:24:239 hrs ago1732335863IN
Sky: LitePSM USDC A
0 ETH0.0012752113.44934869
Buy Gem212476462024-11-23 3:07:3511 hrs ago1732331255IN
Sky: LitePSM USDC A
0 ETH0.0013418414.15206835
Buy Gem212461152024-11-22 22:00:2316 hrs ago1732312823IN
Sky: LitePSM USDC A
0 ETH0.0019603421.77778908
Sell Gem212454312024-11-22 19:43:1118 hrs ago1732304591IN
Sky: LitePSM USDC A
0 ETH0.0010735612.78543828
Sell Gem212444662024-11-22 16:28:3521 hrs ago1732292915IN
Sky: LitePSM USDC A
0 ETH0.0014299518.7
Sell Gem212444622024-11-22 16:27:4721 hrs ago1732292867IN
Sky: LitePSM USDC A
0 ETH0.0013147715.66026249
Buy Gem212442542024-11-22 15:45:4722 hrs ago1732290347IN
Sky: LitePSM USDC A
0 ETH0.0015297616.99431847
Sell Gem212419472024-11-22 8:01:5930 hrs ago1732262519IN
Sky: LitePSM USDC A
0 ETH0.0009527610.73468709
Sell Gem212388762024-11-21 21:44:3540 hrs ago1732225475IN
Sky: LitePSM USDC A
0 ETH0.0010092515.09602184
Buy Gem212385582024-11-21 20:40:5941 hrs ago1732221659IN
Sky: LitePSM USDC A
0 ETH0.0020533221.65864175
Buy Gem212372892024-11-21 16:26:3545 hrs ago1732206395IN
Sky: LitePSM USDC A
0 ETH0.0018202319.2
Buy Gem212366232024-11-21 14:12:112 days ago1732198331IN
Sky: LitePSM USDC A
0 ETH0.0032009233.76364462
Buy Gem212364252024-11-21 13:32:352 days ago1732195955IN
Sky: LitePSM USDC A
0 ETH0.0033147333.27909226
Sell Gem212347282024-11-21 7:51:112 days ago1732175471IN
Sky: LitePSM USDC A
0 ETH0.000788158.88005114
Sell Gem212339172024-11-21 5:07:352 days ago1732165655IN
Sky: LitePSM USDC A
0 ETH0.00133914.31420659
Buy Gem212313042024-11-20 20:22:352 days ago1732134155IN
Sky: LitePSM USDC A
0 ETH0.0012963614.40147452
Buy Gem212301262024-11-20 16:25:352 days ago1732119935IN
Sky: LitePSM USDC A
0 ETH0.0018990821.1
Sell Gem212275902024-11-20 7:54:353 days ago1732089275IN
Sky: LitePSM USDC A
0 ETH0.00060976.51788705
Sell Gem212237852024-11-19 19:10:593 days ago1732043459IN
Sky: LitePSM USDC A
0 ETH0.0018561319.84240672
Buy Gem212212542024-11-19 10:43:114 days ago1732012991IN
Sky: LitePSM USDC A
0 ETH0.0012651212.7
Sell Gem212204162024-11-19 7:55:114 days ago1732002911IN
Sky: LitePSM USDC A
0 ETH0.000862439.71561217
Buy Gem212183872024-11-19 1:07:594 days ago1731978479IN
Sky: LitePSM USDC A
0 ETH0.000861639.57333299
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DssLitePsm

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion
File 1 of 1 : DssLitePsm.sol
// 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();
    }
}

Settings
{
  "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

Contract ABI

[{"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"}]

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


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Sky (formerly Maker) enables users to get rewarded for non-custodial savings.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.