Contract 0x9f5c80dc840f9cc60670a20c1e5d0fbd3e13b015 1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1039403f19b57d895daca95d54d89faa51af7b772b12db70ee014ffff71ae340Approve118951462022-01-19 8:04:302 hrs 28 mins ago0x4892996ab4184d211d992a0829399b802c100262 IN  Demeter: DUSD Token0 HT0.00013866525 2.25
0xc8caae5a5c735ccdb0d28b425a43deb9a3afa17d7d33f16145894ebe802f3938Approve118686132022-01-18 9:57:511 day 35 mins ago0x3e269f72b463405aa832a0917251ca0ee3efe370 IN  Demeter: DUSD Token0 HT0.0001022972.6
0xfc579d05dfd3d4789b5cad393e41d214fc74aacbb635cf58ee175bebeffd4600Approve118572992022-01-18 0:32:091 day 10 hrs ago0x16ad14d08a7826d6fa61ee85b51178dc043239a4 IN  Demeter: DUSD Token0 HT0.0001298385 3.3
0x737dfb83b271e517a934f5163ee8a91059a201160e0eeeb1ea586c04ae4d588dTransfer118402802022-01-17 10:21:122 days 11 mins ago0x6b453160274e2fb63b113f3900d998f104a9bd84 IN  Demeter: DUSD Token0 HT0.0001259452.5
0xbbb756ee1ebb0867021e058707f213e726b0977378f949ab1539ba51f4048944Transfer118402712022-01-17 10:20:452 days 12 mins ago0xcb9823dbc7b805576191cf6e1dcf4769ca768dd2 IN  Demeter: DUSD Token0 HT0.0001259452.5
0x9c3183e928f4b1697d07ce19338c793f716a184de04bee890b01fe99351e2913Transfer118294152022-01-17 1:17:572 days 9 hrs ago0xdfb556010ff52f5e2bbd0f82d4e632ed9a2c0dd5 IN  Demeter: DUSD Token0 HT0.0001686352.5
0x11758193b9f8534ecc56489e2a830826488179342c2656376bcc9045a251e053Approve118170992022-01-16 15:02:092 days 19 hrs ago0x7126a891f8fa67ea8452b85138628e7275775779 IN  Demeter: DUSD Token0 HT0.000138098252.25
0x5f05a8584603479b007272d965bbbe527d87b3ef3a0e0c536029c9114c0a16dcTransfer118170852022-01-16 15:01:272 days 19 hrs ago0x70154632a85449ec205a4537e68fcdad4706b3b4 IN  Demeter: DUSD Token0 HT0.00015187952.25
0x8768765daa21fa74fa86a8b074abe2a77164d0b6a9b04a871873e67893fb1732Transfer118160672022-01-16 14:10:332 days 20 hrs ago0x56087d1971eab08f6d2ce63f174ed61baf4e58fd IN  Demeter: DUSD Token0 HT0.00011335052.25
0x78e5ad8d0900c8f89fd9780386bae0f7980f14abf591e730c5469ce15900e58aApprove118132792022-01-16 11:51:092 days 22 hrs ago0x92cc5b445bc8d6379e0e38b085fa3f1b206a235c IN  Demeter: DUSD Token0 HT0.00013866525 2.25
0x01d6d3d651c9966c9594943b4ace25a3241d0280ab99da6cd94e23cf67971d63Approve118032952022-01-16 3:31:573 days 7 hrs ago0x480b290ea6a193f133d46280d28c2e45f202e5e5 IN  Demeter: DUSD Token0 HT0.00013866525 2.25
0x8dbcdafcf4653948ca267048f428c9403d1f2ae2384c5e6b44bb45321dea5194Approve118023932022-01-16 2:46:513 days 7 hrs ago0xf2bf1afeacaccb3ba498166ebf777cc553c59d6d IN  Demeter: DUSD Token0 HT0.000093944252.25
0x846c7ff7309f64afca178c7f396fa58bc2f0f72e26a0dfee881ef705ddcd4ad6Approve118023882022-01-16 2:46:363 days 7 hrs ago0xf2bf1afeacaccb3ba498166ebf777cc553c59d6d IN  Demeter: DUSD Token0 HT0.000138719252.25
0x1a559dcfe3a7dff2cde64b8a34959cea3eb6fca83a03be4da9283edad3770d5bApprove117892302022-01-15 15:48:423 days 18 hrs ago0xbd9df52087cbe0172040256c35052efdfc520fba IN  Demeter: DUSD Token0 HT0.00015407252.5
0xb38a438e423fef5d864d6a814025bba3bb0f52534a30dcad5def4fb8f2d94afbApprove117748012022-01-15 3:47:154 days 6 hrs ago0xac22eb1015bfbb9298ec94b15e5fbcfcb495255f IN  Demeter: DUSD Token0 HT0.00015407252.5
0x35bc0ffe19d4e1b5aabfe172c1a2df114c1ce639c57f36c9d42acb2bdcd61fbcTransfer117747352022-01-15 3:43:574 days 6 hrs ago0x635d46268eb3bf0111da34f7d05f1499f8f2e074 IN  Demeter: DUSD Token0 HT0.0001686952.5
0xf1c838a427410162f2e1e0010b19e7746bead8848d42d583bb26f10f57b45661Transfer117647692022-01-14 19:25:394 days 15 hrs ago0x6b453160274e2fb63b113f3900d998f104a9bd84 IN  Demeter: DUSD Token0 HT0.0001259452.5
0x4c51ad579b5683f2eca54f5f4e03f257a3f452b6cba612513a24215558a1e46aTransfer117647622022-01-14 19:25:184 days 15 hrs ago0xcb9823dbc7b805576191cf6e1dcf4769ca768dd2 IN  Demeter: DUSD Token0 HT0.0001686952.5
0xf11a58218fb6349f2c5adb9b1cb5dfcb629488eb9485cd8f2a12e380edd35285Approve117635162022-01-14 18:23:004 days 16 hrs ago0xbe3ee67af3a96f9738fdbdce56d92125170e6980 IN  Demeter: DUSD Token0 HT0.000138098252.25
0x40bd6f500deff757a1422056a0f37142885d4aac786c4e7c55deffac07582e36Transfer117599702022-01-14 15:25:424 days 19 hrs ago0x597642492f5462609bfc11c20668ec469634e707 IN  Demeter: DUSD Token0 HT0.0001687552.5
0xf65313e78e9f3a7fbd010c35e780e4fc80f80be10a706c4946a10b57d9d3dbb1Transfer117598482022-01-14 15:19:364 days 19 hrs ago0xbce8919eda5063950c0617c788fe7666e71e55d9 IN  Demeter: DUSD Token0 HT0.0001687552.5
0xf2e40185ce40e45c3904bca72495a371593f0d7ff01e1ec38aaf6697f677dd41Approve117512922022-01-14 8:11:485 days 2 hrs ago0x47b19a07f0d8e101b7ab8b1a8f26fb73b857c41a IN  Demeter: DUSD Token0 HT0.00013866525 2.25
0x14ad9f4558feaa9a4f86040bf845d8351ef63fd826c49c85a2fea4b0aebbbb4bApprove117497482022-01-14 6:54:365 days 3 hrs ago0x7c6a957bb3b336cfb69bc81281bccb5043957726 IN  Demeter: DUSD Token0 HT0.00015407252.5
0xce9023cc97e532945f66de662238e921c62a3bb741c4b0290d3ad6a95b3a1c37Transfer117490182022-01-14 6:18:065 days 4 hrs ago0xdfb556010ff52f5e2bbd0f82d4e632ed9a2c0dd5 IN  Demeter: DUSD Token0 HT0.0001259152.5
0x7e74f3ad77e5f7cf18c5db1afb74ef2faa8dcf20fa02304334065697e0391468Approve117413792022-01-13 23:56:095 days 10 hrs ago0x21ad8ffc8a8cdc6d3c5271c0917a692f9646fd17 IN  Demeter: DUSD Token0 HT0.000099488252.25
[ Download CSV Export 

OVERVIEW

Demeter is a Heco-based decentralized currency market protocol. It provides users with a robust stablecoin DUSD and secure lending service at a lower cost.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DUSD

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : DUSD.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

// Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity >=0.5.16;
pragma experimental ABIEncoderV2;

import "../Utils/SafeMath.sol";
import "../Manager/ManagerProxy.sol";

contract DUSD is ManagerProxy {
    using SafeMath for uint;

    // --- BEP20 Data ---
    string  public constant version  = "1";
    string  public name;
    string  public symbol;
    uint8   public decimals;
    uint256 public totalSupply;

    mapping (address => uint)                      public balanceOf;
    mapping (address => mapping (address => uint)) public allowance;
    mapping (address => uint)                      public nonces;

    event Approval(address indexed src, address indexed guy, uint wad);
    event Transfer(address indexed src, address indexed dst, uint wad);

    // --- EIP712 niceties ---
    bytes32 public DOMAIN_SEPARATOR;
    // bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed)");
    bytes32 public constant PERMIT_TYPEHASH = 0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb;

    constructor(string memory _name, string memory _symbol, uint8 _decimals) public {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        DOMAIN_SEPARATOR = keccak256(abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(name)),
                keccak256(bytes(version)),
                getChainId(),
                address(this)
            ));
    }

    // --- Token ---
    function transfer(address dst, uint wad) external ValidUDSDState OutBlacklist2(msg.sender, dst) returns (bool) {
        return transferFrom(msg.sender, dst, wad);
    }

    function transferFrom(address src, address dst, uint wad) public ValidUDSDState OutBlacklist3(msg.sender, src, dst) returns (bool)
    {
        require(balanceOf[src] >= wad, "DUSD/insufficient-balance");
        if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) {
            require(allowance[src][msg.sender] >= wad, "DUSD/insufficient-allowance");
            allowance[src][msg.sender] = allowance[src][msg.sender].sub(wad);
        }
        balanceOf[src] = balanceOf[src].sub(wad);
        balanceOf[dst] = balanceOf[dst].add(wad);
        emit Transfer(src, dst, wad);
        return true;
    }

    function mint(address usr, uint wad) external ValidUDSDState CheckPermitsOr(_getMintRoles()) OutBlacklist2(msg.sender, usr) {
        balanceOf[usr] = balanceOf[usr].add(wad);
        totalSupply = totalSupply.add(wad);
        emit Transfer(address(0), usr, wad);
    }

    function burn(address usr, uint wad) external ValidUDSDState OutBlacklist2(msg.sender, usr) {
        require(balanceOf[usr] >= wad, "DUSD/insufficient-balance");
        if (usr != msg.sender && allowance[usr][msg.sender] != uint(-1)) {
            require(allowance[usr][msg.sender] >= wad, "DUSD/insufficient-allowance");
            allowance[usr][msg.sender] = allowance[usr][msg.sender].sub(wad);
        }
        balanceOf[usr] = balanceOf[usr].sub(wad);
        totalSupply = totalSupply.sub(wad);
        emit Transfer(usr, address(0), wad);
    }

    function approve(address usr, uint wad) external ValidUDSDState OutBlacklist2(msg.sender, usr) returns (bool) {
        allowance[msg.sender][usr] = wad;
        emit Approval(msg.sender, usr, wad);
        return true;
    }

    // --- Alias ---
    function push(address usr, uint wad) external {
        transferFrom(msg.sender, usr, wad);
    }

    function pull(address usr, uint wad) external {
        transferFrom(usr, msg.sender, wad);
    }

    function move(address src, address dst, uint wad) external {
        transferFrom(src, dst, wad);
    }

    // --- Approve by signature ---
    struct PermitParam {
        address holder;
        address spender;
        uint256 nonce;
        uint256 expiry;
        bool allowed;
        uint8 v;
        bytes32 r;
        bytes32 s;
    }

    function permit(PermitParam calldata param) external ValidUDSDState OutBlacklist3(msg.sender, param.holder, param.spender)
    {
        bytes32 digest = keccak256(abi.encodePacked(
                "\x19\x01",
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH,
                    param.holder,
                    param.spender,
                    param.nonce,
                    param.expiry,
                    param.allowed))
            ));

        require(param.holder != address(0), "DUSD/invalid-address-0");
        require(param.holder == ecrecover(digest, param.v, param.r, param.s), "DUSD/invalid-permit");
        require(param.expiry == 0 || now <= param.expiry, "DUSD/permit-expired");
        require(param.nonce == nonces[param.holder]++, "DUSD/invalid-nonce");
        uint wad = param.allowed ? uint(-1) : 0;
        allowance[param.holder][param.spender] = wad;
        emit Approval(param.holder, param.spender, wad);
    }


    // --- internal ---
    function _getMintRoles() internal returns(string[] memory) {
        string[] memory roles = new string[](2);
        roles[0] = "DUSDMinter";
        roles[1] = "DUSDAdmin";
        return roles;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

File 2 of 6 : SafeMath.sol
pragma solidity ^0.5.16;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
  /**
   * @dev Returns the addition of two unsigned integers, reverting on
   * overflow.
   *
   * Counterpart to Solidity's `+` operator.
   *
   * Requirements:
   * - Addition cannot overflow.
   */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    return add(a, b, "SafeMath: addition overflow");
  }

  /**
   * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   */
  function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, errorMessage);

    return c;
  }

  /**
   * @dev Returns the subtraction of two unsigned integers, reverting on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    return sub(a, b, "SafeMath: subtraction overflow");
  }

  /**
   * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   */
  function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b <= a, errorMessage);
    uint256 c = a - b;

    return c;
  }

  /**
   * @dev Returns the multiplication of two unsigned integers, reverting on
   * overflow.
   *
   * Counterpart to Solidity's `*` operator.
   *
   * Requirements:
   * - Multiplication cannot overflow.
   */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b, "SafeMath: multiplication overflow");

    return c;
  }

  /**
   * @dev Returns the integer division of two unsigned integers. Reverts on
   * division by zero. The result is rounded towards zero.
   *
   * Counterpart to Solidity's `/` operator. Note: this function uses a
   * `revert` opcode (which leaves remaining gas untouched) while Solidity
   * uses an invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return div(a, b, "SafeMath: division by zero");
  }

  /**
   * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
   * division by zero. The result is rounded towards zero.
   *
   * Counterpart to Solidity's `/` operator. Note: this function uses a
   * `revert` opcode (which leaves remaining gas untouched) while Solidity
   * uses an invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    // Solidity only automatically asserts when dividing by 0
    require(b > 0, errorMessage);
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;
  }

  /**
   * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
   * Reverts when dividing by zero.
   *
   * Counterpart to Solidity's `%` operator. This function uses a `revert`
   * opcode (which leaves remaining gas untouched) while Solidity uses an
   * invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    return mod(a, b, "SafeMath: modulo by zero");
  }

  /**
   * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
   * Reverts with custom message when dividing by zero.
   *
   * Counterpart to Solidity's `%` operator. This function uses a `revert`
   * opcode (which leaves remaining gas untouched) while Solidity uses an
   * invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b != 0, errorMessage);
    return a % b;
  }
}

File 3 of 6 : ManagerProxy.sol
pragma solidity ^0.5.16;

//import "./Manager.sol";
import "../Utils/Ownable.sol";
import "../interfaces/IManager.sol";

contract ManagerProxy is Ownable {
    IManager public manager;

    event NewManager(address indexed oldManager, address indexed newManager);

    modifier CheckPermit(string memory permit) {
        require(manager.userPermits(msg.sender, permit), "no permit");
        _;
    }

    modifier CheckPermitsOr(string[] memory permits) {
        bool granted = false;
        for (uint i = 0; i < permits.length; i++) {
            if (manager.userPermits(msg.sender, permits[i])) {
                granted = true;
                break;
            }
        }

        require(granted, "no permit");
        _;
    }

    modifier CheckUserPermit(address user, string memory permit) {
        require(manager.userPermits(user, permit), "no permit");
        _;
    }

    modifier CheckPermitOrGuardian(string memory permit) {
        require(manager.guardian() == msg.sender || manager.userPermits(msg.sender, permit), "no permit");
        _;
    }

    modifier OutBlacklist(address account) {
        address[] memory addArr = new address[](1);
        addArr[0] = account;
        require(!manager.inBlacklist(addArr), "account is in blacklist");
        _;
    }

    modifier OutBlacklist2(address account0, address account1) {
        address[] memory addArr = new address[](2);
        addArr[0] = account0;
        addArr[1] = account1;
        require(!manager.inBlacklist(addArr), "account is in blacklist");
        _;
    }

    modifier OutBlacklist3(address account0, address account1, address account2) {
        address[] memory addArr = new address[](3);
        addArr[0] = account0;
        addArr[1] = account1;
        addArr[2] = account2;
        require(!manager.inBlacklist(addArr), "account is in blacklist");
        _;
    }

    modifier ValidUDSDState() {
        require(!manager.dusdPaused(), "DUSD is paused");
        _;
    }

    modifier ValidDMTState() {
        require(!manager.dmtPaused(), "DMT is paused");
        _;
    }

    function setManager(address _manager) external onlyOwner {
        return _setManagerInternal(_manager);
    }

    function _getComptroller() internal view returns(address) {
        return manager.members("comptroller");
    }

    function _getIncome() internal view returns(address) {
        return manager.members("income");
    }

    function _getLiquidateFeeSwap() internal view returns(address) {
        return manager.members("liquidateSwap");
    }

    function _getReservedAssetSwap() internal view returns(address) {
        return manager.members("reservedSwap");
    }

    function _getDMT() internal view returns(address) {
        return manager.members("DMT");
    }

    function _getDUSD() internal view returns(address) {
        return manager.members("DUSD");
    }

    function _getDAOPool() internal view returns(address) {
        return manager.members("DAOPool");
    }

    function _getTreasury() internal view returns(address) {
        return manager.members("treasury");
    }

    // with decimal 18
    function _getRedeemTreasuryPercent() internal view returns(uint) {
        return manager.values("redeemTreasuryPercent");
    }

    // with decimal 18
    function _getReserveDAOPercent() internal view returns(uint) {
        return manager.values("reserveDAOPercent");
    }

    // with decimal 18
    function _getDUSDInterestDAOPercent() internal view returns(uint) {
        return manager.values("dusdInterestDAOPercent");
    }

    // with decimal 18
    function _getDUSDMintRate() internal view returns(uint) {
        return manager.values("dusdMintRate");
    }

    // with decimal 18
    function _getLiquidateFeePercent() internal view returns(uint) {
        return manager.values("liquidateFeePercent");
    }

    // with decimal 18
    function _getLiquidateFeeDAOPercent() internal view returns(uint) {
        return manager.values("liquidateFeeDAOPercent");
    }

    function _setManagerInternal(address _manager) internal {
        address oldManager = address(manager);
        manager = IManager(_manager);
        emit NewManager(oldManager, _manager);
    }

}

File 4 of 6 : Ownable.sol
pragma solidity ^0.5.16;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
  address public owner;
  address public pendingOwner;

  event NewOwner(address indexed oldOwner, address indexed owner);
  event NewPendingOwner(address indexed pendingOwner);

  modifier onlyOwner() {
    require(msg.sender == owner, "Ownable: only owner");
    _;
  }

  modifier onlyPendingOwner() {
    require(msg.sender == pendingOwner, "Ownable: only pending owner");
    _;
  }

  /**
   * @dev Initializes the contract setting the deployer as the initial owner.
   */
  constructor () internal {
    owner = _msgSender();
    emit NewOwner(address(0), owner);
  }

  function setPendingOwner(address _pendingOwner) external onlyOwner {
    require(_pendingOwner != address(0), "Ownable: pending owner is 0");
    pendingOwner = _pendingOwner;

    emit NewPendingOwner(pendingOwner);
  }

  function acceptOwner() external onlyPendingOwner {
    address old = owner;
    owner = msg.sender;
    pendingOwner = address(0);

    emit NewOwner(old, owner);
  }
}

File 5 of 6 : IManager.sol
pragma solidity ^0.5.16;

interface IManager {
    function userPermits(address user, string calldata permit) external view returns(bool);
    function guardian() external view returns(address);
    function inBlacklist(address[] calldata accounts) external view returns(bool);
    function protocolPaused() external view returns(bool);
    function redeemPaused() external view returns(bool);
    function repayPaused() external view returns(bool);
    function liquidatePaused() external view returns(bool);
    function transferDmTokenPaused() external view returns(bool);

    function marketMintPaused(address market) external view returns(bool);
    function marketBorrowPaused(address market) external view returns(bool);

    function mintVAIPaused() external view returns(bool);
    function repayVAIPaused() external view returns(bool);

    function dusdPaused() external view returns(bool);
    function dmtPaused() external view returns(bool);

    function members(string calldata mem) external view returns(address);
    function values(string calldata key) external view returns(uint256);
}

File 6 of 6 : Context.sol
pragma solidity 0.5.16;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
  // Empty internal constructor, to prevent people from mistakenly deploying
  // an instance of this contract, which should be used via inheritance.
  constructor () internal { }

  function _msgSender() internal view returns (address payable) {
    return msg.sender;
  }

  function _msgData() internal view returns (bytes memory) {
    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
    return msg.data;
  }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"guy","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldManager","type":"address"},{"indexed":true,"internalType":"address","name":"newManager","type":"address"}],"name":"NewManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"NewPendingOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"internalType":"contract IManager","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct DUSD.PermitParam","name":"param","type":"tuple"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"pull","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"push","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_pendingOwner","type":"address"}],"name":"setPendingOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604051620029263803806200292683398101604081905262000034916200029d565b620000476001600160e01b036200018316565b600080546001600160a01b0319166001600160a01b03928316178082556040519216917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b2364908290a38251620000a49060039060208601906200018c565b508151620000ba9060049060208501906200018c565b506005805460ff191660ff8316179055604051620000d89062000460565b60405180910390206003604051620000f191906200044b565b6040805191829003822082820190915260018252603160f81b6020909201919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6620001476001600160e01b036200018816565b306040516020016200015e9594939291906200046d565b60405160208183030381529060405280519060200120600a8190555050505062000588565b335b90565b4690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001cf57805160ff1916838001178555620001ff565b82800160010185558215620001ff579182015b82811115620001ff578251825591602001919060010190620001e2565b506200020d92915062000211565b5090565b6200018591905b808211156200020d576000815560010162000218565b600082601f8301126200024057600080fd5b8151620002576200025182620004ea565b620004c3565b915080825260208301602083018583830111156200027457600080fd5b620002818382846200053b565b50505092915050565b805162000297816200056e565b92915050565b600080600060608486031215620002b357600080fd5b83516001600160401b03811115620002ca57600080fd5b620002d8868287016200022e565b93505060208401516001600160401b03811115620002f557600080fd5b62000303868287016200022e565b925050604062000316868287016200028a565b9150509250925092565b6200032b8162000523565b82525050565b6200032b8162000185565b6000815460018116600081146200035c57600181146200038257620003c7565b607f60028304166200036f81876200051e565b60ff1984168152955085019250620003c7565b600282046200039281876200051e565b95506200039f8562000512565b60005b82811015620003c057815488820152600190910190602001620003a2565b5050850192505b505092915050565b6000620003de6052836200051e565b7f454950373132446f6d61696e28737472696e67206e616d652c737472696e672081527f76657273696f6e2c75696e7432353620636861696e49642c6164647265737320602082015271766572696679696e67436f6e74726163742960701b604082015260520192915050565b60006200045982846200033c565b9392505050565b60006200029782620003cf565b60a081016200047d828862000331565b6200048c602083018762000331565b6200049b604083018662000331565b620004aa606083018562000331565b620004b9608083018462000320565b9695505050505050565b6040518181016001600160401b0381118282101715620004e257600080fd5b604052919050565b60006001600160401b038211156200050157600080fd5b506020601f91909101601f19160190565b60009081526020902090565b919050565b60006001600160a01b03821662000297565b60ff1690565b60005b83811015620005585781810151838201526020016200053e565b8381111562000568576000848401525b50505050565b620005798162000535565b81146200058557600080fd5b50565b61238e80620005986000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637ecebe00116100de578063bb35783b11610097578063dd62ed3e11610071578063dd62ed3e146102fd578063e30c397814610310578063ebbc496514610318578063f2d5d56b1461032057610173565b8063bb35783b146102c4578063c42069ec146102d7578063d0ebdbe7146102ea57610173565b80637ecebe001461025b5780638da5cb5b1461026e57806395d89b41146102835780639dc29fac1461028b578063a9059cbb1461029e578063b753a98c146102b157610173565b8063313ce56711610130578063313ce567146101fb5780633644e5151461021057806340c10f1914610218578063481c6a751461022b57806354fd4d501461024057806370a082311461024857610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101b65780631e943093146101cb57806323b872dd146101e057806330adf81f146101f3575b600080fd5b610180610333565b60405161018d91906121b8565b60405180910390f35b6101a96101a4366004611c74565b6103c1565b60405161018d91906120f6565b6101be6105de565b60405161018d9190612104565b6101de6101d9366004611ce0565b6105e4565b005b6101a96101ee366004611c27565b610af0565b6101be610ea4565b610203610ec8565b60405161018d9190612289565b6101be610ed1565b6101de610226366004611c74565b610ed7565b6102336111ff565b60405161018d91906121aa565b61018061120e565b6101be610256366004611bc7565b61122b565b6101be610269366004611bc7565b61123d565b61027661124f565b60405161018d91906120b7565b61018061125e565b6101de610299366004611c74565b6112b9565b6101a96102ac366004611c74565b611624565b6101de6102bf366004611c74565b6117df565b6101de6102d2366004611c27565b6117ef565b6101de6102e5366004611bc7565b611800565b6101de6102f8366004611bc7565b6118a0565b6101be61030b366004611bed565b6118d6565b6102766118f3565b6101de611902565b6101de61032e366004611c74565b611987565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103b95780601f1061038e576101008083540402835291602001916103b9565b820191906000526020600020905b81548152906001019060200180831161039c57829003601f168201915b505050505081565b6002546040805163a7b1439760e01b815290516000926001600160a01b03169163a7b14397916004808301926020929190829003018186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043e9190810190611cc2565b156104645760405162461bcd60e51b815260040161045b90612239565b60405180910390fd5b6040805160028082526060808301845233938793919290602083019080388339019050509050828160008151811061049857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081816001815181106104c657fe5b6001600160a01b03928316602091820292909201015260025460405163459564d960e01b815291169063459564d9906105039084906004016120e5565b60206040518083038186803b15801561051b57600080fd5b505afa15801561052f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105539190810190611cc2565b156105705760405162461bcd60e51b815260040161045b90612229565b3360008181526008602090815260408083206001600160a01b038b1680855292529182902088905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105ca908990612104565b60405180910390a350600195945050505050565b60065481565b600260009054906101000a90046001600160a01b03166001600160a01b031663a7b143976040518163ffffffff1660e01b815260040160206040518083038186803b15801561063257600080fd5b505afa158015610646573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061066a9190810190611cc2565b156106875760405162461bcd60e51b815260040161045b90612239565b336106956020830183611bc7565b6106a56040840160208501611bc7565b6040805160038082526080820190925260609160208201838038833901905050905083816000815181106106d557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050828160018151811061070357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818160028151811061073157fe5b6001600160a01b03928316602091820292909201015260025460405163459564d960e01b815291169063459564d99061076e9084906004016120e5565b60206040518083038186803b15801561078657600080fd5b505afa15801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107be9190810190611cc2565b156107db5760405162461bcd60e51b815260040161045b90612229565b600a546000907fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb61080f6020890189611bc7565b61081f60408a0160208b01611bc7565b60408a013560608b013561083960a08d0160808e01611ca4565b60405160200161084e96959493929190612112565b60405160208183030381529060405280519060200120604051602001610875929190612086565b60408051601f198184030181529190528051602091820120915060009061089e90880188611bc7565b6001600160a01b031614156108c55760405162461bcd60e51b815260040161045b90612279565b6001816108d860c0890160a08a01611cff565b8860c001358960e00135604051600081526020016040526040516108ff949392919061216c565b6020604051602081039080840390855afa158015610921573d6000803e3d6000fd5b5050604051601f1901516001600160a01b031690506109436020880188611bc7565b6001600160a01b0316146109695760405162461bcd60e51b815260040161045b90612269565b6060860135158061097e575085606001354211155b61099a5760405162461bcd60e51b815260040161045b906121d9565b600960006109ab6020890189611bc7565b6001600160a01b031681526020810191909152604090810160002080546001810190915590870135146109f05760405162461bcd60e51b815260040161045b906121f9565b6000610a0260a0880160808901611ca4565b610a0d576000610a11565b6000195b90508060086000610a2560208b018b611bc7565b6001600160a01b03166001600160a01b031681526020019081526020016000206000896020016020610a5a9190810190611bc7565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550866020016020610a919190810190611bc7565b6001600160a01b0316610aa76020890189611bc7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610adf9190612104565b60405180910390a350505050505050565b6002546040805163a7b1439760e01b815290516000926001600160a01b03169163a7b14397916004808301926020929190829003018186803b158015610b3557600080fd5b505afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b6d9190810190611cc2565b15610b8a5760405162461bcd60e51b815260040161045b90612239565b60408051600380825260808201909252339186918691606091906020820183803883390190505090508381600081518110610bc157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508281600181518110610bef57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508181600281518110610c1d57fe5b6001600160a01b03928316602091820292909201015260025460405163459564d960e01b815291169063459564d990610c5a9084906004016120e5565b60206040518083038186803b158015610c7257600080fd5b505afa158015610c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610caa9190810190611cc2565b15610cc75760405162461bcd60e51b815260040161045b90612229565b6001600160a01b038816600090815260076020526040902054861115610cff5760405162461bcd60e51b815260040161045b90612259565b6001600160a01b0388163314801590610d3d57506001600160a01b038816600090815260086020908152604080832033845290915290205460001914155b15610dde576001600160a01b0388166000908152600860209081526040808320338452909152902054861115610d855760405162461bcd60e51b815260040161045b906121c9565b6001600160a01b0388166000908152600860209081526040808320338452909152902054610db9908763ffffffff61199216565b6001600160a01b03891660009081526008602090815260408083203384529091529020555b6001600160a01b038816600090815260076020526040902054610e07908763ffffffff61199216565b6001600160a01b03808a166000908152600760205260408082209390935590891681522054610e3c908763ffffffff6119dd16565b6001600160a01b0380891660008181526007602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e8e908a90612104565b60405180910390a3506001979650505050505050565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb81565b60055460ff1681565b600a5481565b600260009054906101000a90046001600160a01b03166001600160a01b031663a7b143976040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f5d9190810190611cc2565b15610f7a5760405162461bcd60e51b815260040161045b90612239565b610f82611a1f565b6000805b825181101561103f5760025483516001600160a01b0390911690637dd13a95903390869085908110610fb457fe5b60200260200101516040518363ffffffff1660e01b8152600401610fd99291906120c5565b60206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110299190810190611cc2565b15611037576001915061103f565b600101610f86565b508061105d5760405162461bcd60e51b815260040161045b90612209565b6040805160028082526060808301845233938893919290602083019080388339019050509050828160008151811061109157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081816001815181106110bf57fe5b6001600160a01b03928316602091820292909201015260025460405163459564d960e01b815291169063459564d9906110fc9084906004016120e5565b60206040518083038186803b15801561111457600080fd5b505afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061114c9190810190611cc2565b156111695760405162461bcd60e51b815260040161045b90612229565b6001600160a01b038716600090815260076020526040902054611192908763ffffffff6119dd16565b6001600160a01b0388166000908152600760205260409020556006546111be908763ffffffff6119dd16565b6006556040516001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610adf908a90612104565b6002546001600160a01b031681565b604051806040016040528060018152602001603160f81b81525081565b60076020526000908152604090205481565b60096020526000908152604090205481565b6000546001600160a01b031681565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103b95780601f1061038e576101008083540402835291602001916103b9565b600260009054906101000a90046001600160a01b03166001600160a01b031663a7b143976040518163ffffffff1660e01b815260040160206040518083038186803b15801561130757600080fd5b505afa15801561131b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061133f9190810190611cc2565b1561135c5760405162461bcd60e51b815260040161045b90612239565b6040805160028082526060808301845233938693919290602083019080388339019050509050828160008151811061139057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081816001815181106113be57fe5b6001600160a01b03928316602091820292909201015260025460405163459564d960e01b815291169063459564d9906113fb9084906004016120e5565b60206040518083038186803b15801561141357600080fd5b505afa158015611427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061144b9190810190611cc2565b156114685760405162461bcd60e51b815260040161045b90612229565b6001600160a01b0385166000908152600760205260409020548411156114a05760405162461bcd60e51b815260040161045b90612259565b6001600160a01b03851633148015906114de57506001600160a01b038516600090815260086020908152604080832033845290915290205460001914155b1561157f576001600160a01b03851660009081526008602090815260408083203384529091529020548411156115265760405162461bcd60e51b815260040161045b906121c9565b6001600160a01b038516600090815260086020908152604080832033845290915290205461155a908563ffffffff61199216565b6001600160a01b03861660009081526008602090815260408083203384529091529020555b6001600160a01b0385166000908152600760205260409020546115a8908563ffffffff61199216565b6001600160a01b0386166000908152600760205260409020556006546115d4908563ffffffff61199216565b6006556040516000906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611615908890612104565b60405180910390a35050505050565b6002546040805163a7b1439760e01b815290516000926001600160a01b03169163a7b14397916004808301926020929190829003018186803b15801561166957600080fd5b505afa15801561167d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116a19190810190611cc2565b156116be5760405162461bcd60e51b815260040161045b90612239565b604080516002808252606080830184523393879391929060208301908038833901905050905082816000815181106116f257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818160018151811061172057fe5b6001600160a01b03928316602091820292909201015260025460405163459564d960e01b815291169063459564d99061175d9084906004016120e5565b60206040518083038186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117ad9190810190611cc2565b156117ca5760405162461bcd60e51b815260040161045b90612229565b6117d5338787610af0565b9695505050505050565b6117ea338383610af0565b505050565b6117fa838383610af0565b50505050565b6000546001600160a01b0316331461182a5760405162461bcd60e51b815260040161045b906121e9565b6001600160a01b0381166118505760405162461bcd60e51b815260040161045b90612249565b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69737d41162474a7ca514809b07d7becaecf72eae8c23bceb071f0e09af93ffc90600090a250565b6000546001600160a01b031633146118ca5760405162461bcd60e51b815260040161045b906121e9565b6118d381611ac9565b50565b600860209081526000928352604080842090915290825290205481565b6001546001600160a01b031681565b6001546001600160a01b0316331461192c5760405162461bcd60e51b815260040161045b90612219565b600080546001600160a01b03198082163317808455600180549092169091556040516001600160a01b0392831693919092169183917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b236491a350565b6117ea823383610af0565b60006119d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b1b565b90505b92915050565b60006119d483836040518060400160405280601b81526020017f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815250611b47565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081611a385790505090506040518060400160405280600a815260200169222aa9a226b4b73a32b960b11b81525081600081518110611a7f57fe5b602002602001018190525060405180604001604052806009815260200168222aa9a220b236b4b760b91b81525081600181518110611ab957fe5b6020908102919091010152905090565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f770e6248a70b6ac757edf422766216da592c37e3112db900fe0da8984191831b90600090a35050565b60008184841115611b3f5760405162461bcd60e51b815260040161045b91906121b8565b505050900390565b60008383018285821015611b6e5760405162461bcd60e51b815260040161045b91906121b8565b50949350505050565b80356119d78161231c565b80356119d781612330565b80516119d781612330565b60006101008284031215611bab57600080fd5b50919050565b80356119d781612339565b80356119d781612342565b600060208284031215611bd957600080fd5b6000611be58484611b77565b949350505050565b60008060408385031215611c0057600080fd5b6000611c0c8585611b77565b9250506020611c1d85828601611b77565b9150509250929050565b600080600060608486031215611c3c57600080fd5b6000611c488686611b77565b9350506020611c5986828701611b77565b9250506040611c6a86828701611bb1565b9150509250925092565b60008060408385031215611c8757600080fd5b6000611c938585611b77565b9250506020611c1d85828601611bb1565b600060208284031215611cb657600080fd5b6000611be58484611b82565b600060208284031215611cd457600080fd5b6000611be58484611b8d565b60006101008284031215611cf357600080fd5b6000611be58484611b98565b600060208284031215611d1157600080fd5b6000611be58484611bbc565b6000611d298383611d40565b505060200190565b611d3a816122d4565b82525050565b611d3a816122af565b6000611d548261229d565b611d5e81856122a1565b9350611d6983612297565b8060005b83811015611d97578151611d818882611d1d565b9750611d8c83612297565b925050600101611d6d565b509495945050505050565b611d3a816122ba565b611d3a816122bf565b611d3a611dc0826122bf565b6122bf565b611d3a816122db565b6000611dd98261229d565b611de381856122a1565b9350611df38185602086016122e6565b611dfc81612312565b9093019392505050565b6000611e13601b836122a1565b7f445553442f696e73756666696369656e742d616c6c6f77616e63650000000000815260200192915050565b6000611e4c6013836122a1565b72111554d10bdc195c9b5a5d0b595e1c1a5c9959606a1b815260200192915050565b6000611e7b6002836122aa565b61190160f01b815260020192915050565b6000611e996013836122a1565b7227bbb730b136329d1037b7363c9037bbb732b960691b815260200192915050565b6000611ec86012836122a1565b71445553442f696e76616c69642d6e6f6e636560701b815260200192915050565b6000611ef66009836122a1565b681b9bc81c195c9b5a5d60ba1b815260200192915050565b6000611f1b601b836122a1565b7f4f776e61626c653a206f6e6c792070656e64696e67206f776e65720000000000815260200192915050565b6000611f546017836122a1565b7f6163636f756e7420697320696e20626c61636b6c697374000000000000000000815260200192915050565b6000611f8d600e836122a1565b6d111554d1081a5cc81c185d5cd95960921b815260200192915050565b6000611fb7601b836122a1565b7f4f776e61626c653a2070656e64696e67206f776e657220697320300000000000815260200192915050565b6000611ff06019836122a1565b7f445553442f696e73756666696369656e742d62616c616e636500000000000000815260200192915050565b60006120296013836122a1565b72111554d10bda5b9d985b1a590b5c195c9b5a5d606a1b815260200192915050565b60006120586016836122a1565b750445553442f696e76616c69642d616464726573732d360541b815260200192915050565b611d3a816122ce565b600061209182611e6e565b915061209d8285611db4565b6020820191506120ad8284611db4565b5060200192915050565b602081016119d78284611d40565b604081016120d38285611d31565b8181036020830152611be58184611dce565b602080825281016119d48184611d49565b602081016119d78284611da2565b602081016119d78284611dab565b60c081016121208289611dab565b61212d6020830188611d40565b61213a6040830187611d40565b6121476060830186611dab565b6121546080830185611dab565b61216160a0830184611da2565b979650505050505050565b6080810161217a8287611dab565b612187602083018661207d565b6121946040830185611dab565b6121a16060830184611dab565b95945050505050565b602081016119d78284611dc5565b602080825281016119d48184611dce565b602080825281016119d781611e06565b602080825281016119d781611e3f565b602080825281016119d781611e8c565b602080825281016119d781611ebb565b602080825281016119d781611ee9565b602080825281016119d781611f0e565b602080825281016119d781611f47565b602080825281016119d781611f80565b602080825281016119d781611faa565b602080825281016119d781611fe3565b602080825281016119d78161201c565b602080825281016119d78161204b565b602081016119d7828461207d565b60200190565b5190565b90815260200190565b919050565b60006119d7826122c2565b151590565b90565b6001600160a01b031690565b60ff1690565b60006119d7825b60006119d7826122af565b60005b838110156123015781810151838201526020016122e9565b838111156117fa5750506000910152565b601f01601f191690565b612325816122af565b81146118d357600080fd5b612325816122ba565b612325816122bf565b612325816122ce56fea365627a7a72315820d17f60ae557873142b43bedd474172cf7289f57b22c53bad07335ff402ddb3ab6c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000b44656d657465722055534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044455534400000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000b44656d657465722055534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044455534400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Demeter USD
Arg [1] : _symbol (string): DUSD
Arg [2] : _decimals (uint8): 18

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [4] : 44656d6574657220555344000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 4455534400000000000000000000000000000000000000000000000000000000


Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading