Address io1dxrdaqzw20d6rss7yce035uzs32etrnlmcpq7l

Contract Overview

Balance:
0 IOTX

IOTX Value:
$ 0

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
eb4550ca2b03c2bb7fc21883d754ae848207e86310e481e0b423acc15c3a0c6f 29237334 2024-03-31 20:07:10 +0000 UTC one month ago io1mz3qkn80tryynzs7zl349jy7r4cpmx4xutfmy2  IN    Contract: WGFT 0 IOTX 0.139884
a9056b321c52f26350e43d0073557460219c58d2b842158f9d2b3358ec44487d 29037434 2024-03-20 06:07:15 +0000 UTC 2 months ago io19xsu5u3u065khdfz6aacxpyswzrhnjrxlsrw6d  IN    Contract: WGFT 0 IOTX 0.105684
be0ef3771782a2296bb586f4d25475730fce3bc818dc02df66c09ce3557e0286 29001860 2024-03-18 04:42:35 +0000 UTC 2 months ago io1e2rfj7mh4ejawp9dy2ns035305xyahlwmhc0c3  IN    Contract: WGFT 0 IOTX 0.09665
1489213884183219e6a70aa7ee9b0bf00c99c37a060b470faf1ea5b06fb07775 28836184 2024-03-08 14:29:15 +0000 UTC 2 months ago io1usv4wjxju5d77c86pdceplpgatdtdsuv3alw8a  IN    Contract: WGFT 0 IOTX 0.051366
1d635ede25c81b8db61be37032b61d5ae406c323ef552b2e5d23ff7b264a3729 27489059 2023-12-21 11:48:40 +0000 UTC 5 months ago io15q7d78kqhy3yq7l2rxxjv647wkmvwczxe02s6k  IN    Contract: WGFT 0 IOTX 0.34971
c2c55f70601dfa83decd69ad3939a9affc45be1c1da79499cf1b3127bba2bd46 27299803 2023-12-10 12:12:15 +0000 UTC 5 months ago io1cgqha0seqsa00eqq4hwr276v5an8hjdwh385w8  IN    Contract: WGFT 0 IOTX 0.048325
ed68f1b38d361fd313650a32b00a3ed08f4c27a371cafc7b8dc6b77f5165f31f 27206865 2023-12-05 02:54:45 +0000 UTC 5 months ago io1h7z3ctzjfmlm2j9x4a90guaqsmp2ksasjl2tgx  IN    Contract: WGFT 0 IOTX 0.048325
91b41e479370a9adadb80fbcb7bc6d3bf0c1eae6c3f0b205ac74b3a1219149c2 27200074 2023-12-04 17:28:25 +0000 UTC 5 months ago io1v8jljsaznaxjda3jgwfv8vlsr2s523fv32ekg7  IN    Contract: WGFT 0 IOTX 0.048325
4b4490fe0a4f3465ebb7d36a3ff8f072e4e61cbc85044f2e4fd4a517b4cdd46c 26019262 2023-09-27 07:47:15 +0000 UTC 7 months ago io1ycf88gd9y7uukhjfumzxuv7a0xqff0zkz2k503  IN    Contract: WGFT 0 IOTX 0.026425
91f36d587443816957fa87d0bfe27630a9e2b49462ec2c3838b93e288c8d25c8 23861385 2023-05-25 09:58:50 +0000 UTC one year ago io1wy5nn9en3uu09mw9vctw0whahguyysup4gy3tr  IN    Contract: WGFT 0 IOTX 0.034266
9f4a890274061d132c645e5b2e30c462332d8149516bbf552e959c2b09be483b 23468197 2023-05-02 15:42:10 +0000 UTC one year ago io1dahkfl44zc29shkdaha4j2txpxurcpfma68w3q  IN    Contract: WGFT 0 IOTX 0.09665
cadcb065d6ebaa2053fa1218f323bd2f318c1788a4c4beb80e6d7ffcc2929115 23257105 2023-04-20 09:59:45 +0000 UTC one year ago io1tdy8qhz0l6aa0jawgx0e2nhmz5908pnyfgfwrv  IN    Contract: WGFT 0 IOTX 0.052842
76ce3f2ae99c41695214fbcf0105eb9ee5bf0fed142f4c532c6bf93819ff77f6 23114907 2023-04-12 04:25:35 +0000 UTC one year ago io1kyefcqaupj56nd9whwycea3vmj9qzrht0y73vy  IN    Contract: WGFT 0 IOTX 0.048325
c29ee51a5bb6b4132d57166f6f5385579f7aed24630e70ccda7a6ea4cb6ab8d9 21471530 2023-01-06 20:13:25 +0000 UTC one year ago io1per79evt9zsy3uazczysg7z273vl2yy8my9m80  IN    Contract: WGFT 0 IOTX 0.053942
c672caecda84ffe192fa801705d0b121ab254d074e363f3096f9fbc079240525 21468951 2023-01-06 16:38:30 +0000 UTC one year ago io16tc96pw3xjtmh2y8qvhlctpxqvtrjsnlx5cd44  IN    Contract: WGFT 0 IOTX 0.053942
5818347fa6511a0f619ac518876d56f4f19a16314b0253db667057bfa195c97f 21468852 2023-01-06 16:30:15 +0000 UTC one year ago io16tc96pw3xjtmh2y8qvhlctpxqvtrjsnlx5cd44  IN    Contract: WGFT 0 IOTX 0.041725
0beae8fb77d3b5c6c750f3f4300243ce2a3886c876afb81c1180efcb7b810dee 21468692 2023-01-06 16:16:55 +0000 UTC one year ago io1nce0fr4wym3jn7njyvcc5p0qq2zxl28wyndl3s  IN    Contract: WGFT 0 IOTX 0.053942
55e3c5196d3bff1b6a24c64609103891a2eb4ca10e3425b2051c12f38e9be7be 21464299 2023-01-06 10:10:40 +0000 UTC one year ago io1gw7lzx7f4w3fnkw3q9jl6yg2hnrm8pksgpjw7w  IN    Contract: WGFT 0 IOTX 0.038942
d3f5703789298e04fce948f68481659ac112aa3f06ee53bf09b924db990ff18b 21464265 2023-01-06 10:07:50 +0000 UTC one year ago io15pld7pjwypm6rfd2hzusg5mrsfj3v0dgzs0fqw  IN    Contract: WGFT 0 IOTX 0.038942
23823b586ee128a72f7c5040fdb26ebaab19c945a615676dabc7e373800dab6f 21463795 2023-01-06 09:28:40 +0000 UTC one year ago io13j4t2zs8syafzsxdw6er7k2eyhl7gxg7vthems  IN    Contract: WGFT 0 IOTX 0.053942
88b18587929c0abbd875ebe90655cf45d3fdbf7b219aac1bedfbf4f4b665f203 21463416 2023-01-06 08:57:05 +0000 UTC one year ago io1eg5lp8rkrlgkew0kh3q38zq0h2etpj986apyu2  IN    Contract: WGFT 0 IOTX 0.038942
e290548f57f817892859aa59f3094107167833da41fcba613f2686e8dcdfe6dd 21463208 2023-01-06 08:39:45 +0000 UTC one year ago io15pld7pjwypm6rfd2hzusg5mrsfj3v0dgzs0fqw  IN    Contract: WGFT 0 IOTX 0.041725
79f4b6bd93042787b87d49326b2d662c30056bae2d8392ae2346aa98c5ab9048 21463196 2023-01-06 08:38:45 +0000 UTC one year ago io1wsfg2hjahf6d3h0a6g7r5ufgc36d3w28azeslc  IN    Contract: WGFT 0 IOTX 0.035566
8e6a91fb5eebabffb8b025b7e343a3c38b22babd51316e62cb668e0291709513 21463174 2023-01-06 08:36:55 +0000 UTC one year ago io1wsfg2hjahf6d3h0a6g7r5ufgc36d3w28azeslc  IN    Contract: WGFT 0 IOTX 0.041725
ee39df372a5290ac9c1500b76799a5836ba0a11ff5c46bf8eeca1728851f69ca 21462077 2023-01-06 07:05:25 +0000 UTC one year ago io1jnctyraykpqp02yerr88mwl5x78cleafgkrscf  IN    Contract: WGFT 0 IOTX 0.038942
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WGFT

Compiler Version
v0.5.5+commit.47a71e8f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
File 1 of 12: ./contract/token/DSToken.sol
pragma solidity ^0.5.0;

import "../math/SafeMath.sol";
import "../ownership/DSAuth.sol";

contract DSToken is DSAuth {
    using SafeMath for uint256;
    bool public _stopped;
    uint256 internal _totalSupply;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    string private _name;
    string private _symbol;

    constructor(string memory symbol_, string memory name_) public {
        _symbol = symbol_;
        _name = name_;
    }

    event Approval(address indexed src, address indexed guy, uint256 wad);
    event Transfer(address indexed src, address indexed dst, uint256 wad);
    event Mint(address indexed guy, uint256 wad);
    event Burn(address indexed guy, uint256 wad);
    event Stop();
    event Start();

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view returns (uint256) {
        require(
            account != address(0),
            "ERC721: balance query for the zero address"
        );
        return _balances[account];
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    modifier stoppable {
        require(!_stopped, "ds-stop-is-stopped");
        _;
    }

    function approve(address guy) external returns (bool) {
        return approve(guy, uint256(-1));
    }

    function approve(address guy, uint256 wad) public stoppable returns (bool) {
        require(guy != address(0), "ERC20: approve to the zero address");

        _allowances[msg.sender][guy] = wad;

        emit Approval(msg.sender, guy, wad);

        return true;
    }

    function transfer(address dst, uint256 wad) external returns (bool) {
        return transferFrom(msg.sender, dst, wad);
    }

    function transferFrom(
        address src,
        address dst,
        uint256 wad
    ) public stoppable returns (bool) {
        if (src != msg.sender && _allowances[src][msg.sender] != uint256(-1)) {
            require(
                _allowances[src][msg.sender] >= wad,
                "ds-token-insufficient-approval"
            );
            _allowances[src][msg.sender] = _allowances[src][msg.sender].sub(
                wad
            );
        }

        require(_balances[src] >= wad, "ds-token-insufficient-balance");
        _balances[src] = _balances[src].sub(wad);
        _balances[dst] = _balances[dst].add(wad);

        emit Transfer(src, dst, wad);

        return true;
    }

    function push(address dst, uint256 wad) external {
        transferFrom(msg.sender, dst, wad);
    }

    function pull(address src, uint256 wad) external {
        transferFrom(src, msg.sender, wad);
    }

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

    function mint(uint256 wad) external {
        mint(msg.sender, wad);
    }

    function burn(uint256 wad) external {
        burn(msg.sender, wad);
    }

    function mint(address guy, uint256 wad) public auth stoppable {
        _balances[guy] = _balances[guy].add(wad);
        _totalSupply = _totalSupply.add(wad);
        emit Mint(guy, wad);
    }

    function burn(address guy, uint256 wad) public auth stoppable {
        if (guy != msg.sender && _allowances[guy][msg.sender] != uint256(-1)) {
            require(
                _allowances[guy][msg.sender] >= wad,
                "ds-token-insufficient-approval"
            );
            _allowances[guy][msg.sender] = _allowances[guy][msg.sender].sub(
                wad
            );
        }

        require(_balances[guy] >= wad, "ds-token-insufficient-balance");
        _balances[guy] = _balances[guy].sub(wad);
        _totalSupply = _totalSupply.sub(wad);
        emit Burn(guy, wad);
    }

    function destroy(address from_, uint256 amount_) public auth stoppable {
        // do not require allowance

        require(_balances[from_] >= amount_, "ds-token-insufficient-balance");
        _balances[from_] = _balances[from_].sub(amount_);
        _totalSupply = _totalSupply.sub(amount_);
        emit Burn(from_, amount_);
        emit Transfer(from_, address(0), amount_);
    }

    function dsStop() public auth {
        _stopped = true;
        emit Stop();
    }

    function start() public auth {
        _stopped = false;
        emit Start();
    }
}

File 2 of 12: ./contract/token/IERC20.sol
pragma solidity <0.6.0 >=0.4.21;

import "./IERC20Basic.sol";

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract IERC20 is IERC20Basic {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function allowance(address owner, address spender)
        public
        view
        returns (uint256);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public returns (bool);

    function approve(address spender, uint256 value) public returns (bool);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

File 3 of 12: ./contract/token/IERC20Basic.sol
pragma solidity <0.6.0 >=0.4.21;

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract IERC20Basic {
    function totalSupply() public view returns (uint256);

    function balanceOf(address who) public view returns (uint256);

    function transfer(address to, uint256 value) public returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
}

File 4 of 12: ./contract/token/IERC223Receiving.sol
pragma solidity ^0.5.0;

/// @title IERC223Receiving - Standard interface implementation for compatibility with ERC223 tokens.
interface IERC223Receiving {
    /// @dev Function that is called when a user or another contract wants to transfer funds.
    /// @param from_ Transaction initiator, analogue of msg.sender
    /// @param value_ Number of tokens to transfer.
    /// @param data_ Data containig a function signature and/or parameters
    function tokenFallback(
        address from_,
        uint256 value_,
        bytes calldata data_
    ) external;
}

File 5 of 12: ./contract/WGFT.sol
pragma solidity ^0.5.0;

import "./math/SafeMath.sol";
import "./token/IERC20.sol";
import "./token/IERC223.sol";
import "./token/ISmartToken.sol";
import "./token/DSToken.sol";
import "./token/IApproveAndCallFallBack.sol";
import "./token/ITokenController.sol";
import "./token/IERC223Receiving.sol";

contract WGFT is
    DSToken("WGFT", "Wrapped Game Fantasy Token"),
    IERC223,
    ISmartToken
{
    using SafeMath for uint256;
    address private _newOwner;
    bool public _transfersEnabled = true; // true if transfer/transferFrom are enabled, false if not

    uint256 private _cap;

    address private _controller;

    // The Wrapped TOKEN
    IERC20 public wrappedToken;

    // allows execution only when transfers aren't disabled
    modifier transfersAllowed() {
        assert(_transfersEnabled);
        _;
    }

    constructor(IERC20 _wrappedToken) public {
        wrappedToken = _wrappedToken;
        _controller = msg.sender;
        uint256 perCoin = 1e18;
        _cap = perCoin.mul(3000 * 10000);
    }

    //////////
    // IOwned Methods
    //////////

    /**
        @dev allows transferring the contract ownership
        the new owner still needs to accept the transfer
        can only be called by the contract owner
        @param newOwner_    new contract owner
    */
    function transferOwnership(address newOwner_) public auth {
        require(newOwner_ != _owner, "WGFT-already-an-owner");
        _newOwner = newOwner_;
    }

    /**
        @dev used by a new owner to accept an ownership transfer
    */
    function acceptOwnership() public {
        require(msg.sender == _newOwner, "WGFT-not-new-owner");
        _owner = _newOwner;
        _newOwner = address(0);
    }

    //////////
    // SmartToken Methods
    //////////
    /**
        @dev disables/enables transfers
        can only be called by the contract owner
        @param disable_    true to disable transfers, false to enable them
    */
    function disableTransfers(bool disable_) public auth {
        _transfersEnabled = !disable_;
    }

    function issue(address to_, uint256 amount_) public auth stoppable {
        mint(to_, amount_);
    }

    //////////
    // Cap Methods
    //////////
    function cap() public view returns (uint256) {
        return _cap;
    }

    //////////
    // Cap Methods
    //////////
    function changeCap(uint256 newCap_) public auth {
        require(newCap_ >= totalSupply());

        _cap = newCap_;
    }

    //////////
    // Controller Methods
    //////////
    /// @notice Changes the _controller of the contract
    /// @param newController_ The new _controller of the contract
    function changeController(address newController_) public auth {
        _controller = newController_;
    }

    /// @notice Send `amount_` tokens to `to_` from `from_` on the condition it
    ///  is approved by `from_`
    /// @param from_ The address holding the tokens being transferred
    /// @param to_ The address of the recipient
    /// @param amount_ The amount of tokens to be transferred
    /// @return True if the transfer was successful
    function transferFrom(
        address from_,
        address to_,
        uint256 amount_
    ) public transfersAllowed returns (bool success) {
        // Alerts the token _controller of the transfer
        if (isContract(_controller)) {
            if (!ITokenController(_controller).onTransfer(from_, to_, amount_))
                revert();
        }

        success = super.transferFrom(from_, to_, amount_);
    }

    /*
     * ERC 223
     * Added support for the ERC 223 "tokenFallback" method in a "transfer" function with a payload.
     */
    function transferFrom(
        address from_,
        address to_,
        uint256 amount_,
        bytes memory data_
    ) public transfersAllowed returns (bool success) {
        // Alerts the token _controller of the transfer
        if (isContract(_controller)) {
            if (!ITokenController(_controller).onTransfer(from_, to_, amount_))
                revert();
        }

        require(
            super.transferFrom(from_, to_, amount_),
            "WGFT-insufficient-balance"
        );

        if (isContract(to_)) {
            IERC223Receiving receiver = IERC223Receiving(to_);
            receiver.tokenFallback(from_, amount_, data_);
        }

        emit ERC223Transfer(from_, to_, amount_, data_);

        return true;
    }

    /*
     * ERC 223
     * Added support for the ERC 223 "tokenFallback" method in a "transfer" function with a payload.
     * https://github.com/ethereum/EIPs/issues/223
     * function transfer(address to_, uint256 value_, bytes memory data_) public returns (bool success);
     */
    /// @notice Send `value_` tokens to `to_` from `msg.sender` and trigger
    /// tokenFallback if sender is a contract.
    /// @dev Function that is called when a user or another contract wants to transfer funds.
    /// @param to_ Address of token receiver.
    /// @param amount_ Number of tokens to transfer.
    /// @param data_ Data to be sent to tokenFallback
    /// @return Returns success of function call.
    function transfer(
        address to_,
        uint256 amount_,
        bytes memory data_
    ) public returns (bool success) {
        return transferFrom(msg.sender, to_, amount_, data_);
    }

    /// @notice `msg.sender` approves `spender_` to spend `amount_` tokens on
    ///  its behalf. This is a modified version of the ERC20 approve function
    ///  to be a little bit safer
    /// @param spender_ The address of the account able to transfer the tokens
    /// @param amount_ The amount of tokens to be approved for transfer
    /// @return True if the approval was successful
    function approve(address spender_, uint256 amount_)
        public
        returns (bool success)
    {
        // Alerts the token _controller of the approve function call
        if (isContract(_controller)) {
            if (
                !ITokenController(_controller).onApprove(
                    msg.sender,
                    spender_,
                    amount_
                )
            ) revert();
        }

        return super.approve(spender_, amount_);
    }

    function mint(address guy_, uint256 wad_) public auth stoppable {
        require(totalSupply().add(wad_) <= _cap, "WGFT-insufficient-cap");

        super.mint(guy_, wad_);

        emit Transfer(address(0), guy_, wad_);
    }

    function burn(address guy_, uint256 wad_) public auth stoppable {
        super.burn(guy_, wad_);

        emit Transfer(guy_, address(0), wad_);
    }

    /// @notice `msg.sender` approves `spender_` to send `amount_` tokens on
    ///  its behalf, and then a function is triggered in the contract that is
    ///  being approved, `spender_`. This allows users to use their tokens to
    ///  interact with contracts in one function call instead of two
    /// @param spender_ The address of the contract able to transfer the tokens
    /// @param amount_ The amount of tokens to be approved for transfer
    /// @return True if the function call was successful
    function approveAndCall(
        address spender_,
        uint256 amount_,
        bytes memory extraData_
    ) public returns (bool success) {
        if (!approve(spender_, amount_)) revert();

        IApproveAndCallFallBack(spender_).receiveApproval(
            msg.sender,
            amount_,
            address(this),
            extraData_
        );

        return true;
    }

    /// @dev Internal function to determine if an address is a contract
    /// @param addr_ The address being queried
    /// @return True if `addr_` is a contract
    function isContract(address addr_) internal view returns (bool) {
        uint256 size;
        if (addr_ == address(0)) return false;
        assembly {
            size := extcodesize(addr_)
        }
        return size > 0;
    }

    /// @notice The fallback function: If the contract's _controller has not been
    ///  set to 0, then the `proxyPayment` method is called which relays the
    ///  ether and creates tokens as described in the token _controller contract
    function() external payable {
        if (isContract(_controller)) {
            if (
                !ITokenController(_controller).proxyPayment.value(msg.value)(
                    msg.sender,
                    msg.sig,
                    msg.data
                )
            ) revert();
        } else {
            revert();
        }
    }

    //////////
    // Safety Methods
    //////////

    /// @notice This method can be used by the owner to extract mistakenly
    ///  sent tokens to this contract.
    /// @param token_ The address of the token contract that you want to recover
    ///  set to 0 in case you want to extract ether.
    function claimTokens(address token_) public auth {
        if (token_ == address(0)) {
            address(msg.sender).transfer(address(this).balance);
            return;
        }

        IERC20 token = IERC20(token_);
        uint256 balance = token.balanceOf(address(this));
        token.transfer(address(msg.sender), balance);

        emit ClaimedTokens(token_, address(msg.sender), balance);
    }

    function withdrawTokens(
        IERC20 token_,
        address to_,
        uint256 amount_
    ) public auth {
        assert(token_.transfer(to_, amount_));
    }

    ////////////////
    // Events
    ////////////////

    event ClaimedTokens(
        address indexed token_,
        address indexed controller_,
        uint256 amount_
    );

    event ReceiveApproval(
        address _sender,
        uint256 _value,
        address _tokenContract,
        bytes _extraData,
        uint256 action
    );

    function receiveApproval(
        address _sender,
        uint256 _value,
        address _tokenContract,
        bytes memory _extraData
    ) public {
        require(_value > 0, "approval zero");
        uint256 action;
        assembly {
            action := mload(add(_extraData, 0x20))
        }
        emit ReceiveApproval(
            _sender,
            _value,
            _tokenContract,
            _extraData,
            action
        );
        require(action == 5, "unknow action");
        if (action == 5) {
            // swapFrom
            require(
                _tokenContract == address(wrappedToken),
                "approval and want deposit, but used token isn't GFT"
            );
            uint256 amount;
            assembly {
                amount := mload(add(_extraData, 0x40))
            }
            _swapFrom(_sender, amount);
        }
    }

    function _swapBurn(address guy, uint256 wad) private stoppable {
        if (guy != msg.sender && _allowances[guy][msg.sender] != uint256(-1)) {
            require(
                _allowances[guy][msg.sender] >= wad,
                "ds-token-insufficient-approval"
            );
            _allowances[guy][msg.sender] = _allowances[guy][msg.sender].sub(
                wad
            );
        }

        require(_balances[guy] >= wad, "ds-token-insufficient-balance");
        _balances[guy] = _balances[guy].sub(wad);
        _totalSupply = _totalSupply.sub(wad);
        emit Burn(guy, wad);
        emit Transfer(guy, address(0), wad);
    }

    function _swapMint(address guy, uint256 wad) private stoppable {
        require(totalSupply().add(wad) <= _cap, "WGFT-insufficient-cap");

        _balances[guy] = _balances[guy].add(wad);
        _totalSupply = _totalSupply.add(wad);
        emit Mint(guy, wad);
        emit Transfer(address(0), guy, wad);
    }

    function swapTo(uint256 _amount) external stoppable {
        _swapTo(msg.sender, _amount);
    }

    function _swapTo(address _from, uint256 _amount) internal stoppable {
        _swapBurn(_from, _amount);
        wrappedToken.transferFrom(address(this), msg.sender, _amount);
    }

    function swapFrom(uint256 _amount) external stoppable {
        _swapFrom(msg.sender, _amount);
    }

    function _swapFrom(address _from, uint256 _amount) internal stoppable {
        wrappedToken.transferFrom(msg.sender, address(this), _amount);
        _swapMint(_from, _amount);
    }
}

File 6 of 12: ./contract/ownership/DSAuth.sol
pragma solidity ^0.5.0;

import "./DSAuthority.sol";

contract DSAuthEvents {
    event LogSetAuthority(address indexed authority);
    event LogSetOwner(address indexed owner);
}

contract DSAuth is DSAuthEvents {
    DSAuthority public _authority;
    address public _owner;

    constructor() public {
        _owner = msg.sender;
        emit LogSetOwner(msg.sender);
    }

    function setOwner(address owner_) public auth {
        _owner = owner_;
        emit LogSetOwner(_owner);
    }

    function setAuthority(DSAuthority authority_) public auth {
        _authority = authority_;
        emit LogSetAuthority(address(_authority));
    }

    modifier auth {
        require(isAuthorized(msg.sender, msg.sig), "ds-auth-unauthorized");
        _;
    }

    function isAuthorized(address src, bytes4 sig)
        internal
        view
        returns (bool)
    {
        if (src == address(this)) {
            return true;
        } else if (src == _owner) {
            return true;
        } else if (_authority == DSAuthority(address(0))) {
            return false;
        } else {
            return _authority.canCall(src, address(this), sig);
        }
    }
}

File 7 of 12: ./contract/token/IApproveAndCallFallBack.sol
pragma solidity ^0.5.0;

contract IApproveAndCallFallBack {
    function receiveApproval(
        address from,
        uint256 amount_,
        address token_,
        bytes memory data_
    ) public;
}

File 8 of 12: ./contract/token/IERC223.sol
pragma solidity <0.6.0 >=0.4.21;

interface IERC223 {
    function transfer(
        address to,
        uint256 amount,
        bytes calldata data
    ) external returns (bool ok);

    function transferFrom(
        address from,
        address to,
        uint256 amount,
        bytes calldata data
    ) external returns (bool ok);

    event ERC223Transfer(
        address indexed from,
        address indexed to,
        uint256 amount,
        bytes data
    );
}

File 9 of 12: ./contract/token/ISmartToken.sol
pragma solidity <0.6.0 >=0.4.21;

interface ISmartToken {
    function transferOwnership(address newOwner_) external;

    function acceptOwnership() external;

    function disableTransfers(bool disable_) external;

    function issue(address to_, uint256 amount_) external;
}

File 10 of 12: ./contract/token/ITokenController.sol
pragma solidity ^0.5.0;

/// @dev The token _controller contract must implement these functions
contract ITokenController {
    /// @notice Called when `owner_` sends ether to the MiniMe Token contract
    /// @param owner_ The address that sent the ether to create tokens
    /// @return True if the ether is accepted, false if it throws
    function proxyPayment(
        address owner_,
        bytes4 sig,
        bytes memory data
    ) public payable returns (bool);

    /// @notice Notifies the _controller about a token transfer allowing the
    ///  _controller to react if desired
    /// @param from_ The origin of the transfer
    /// @param to_ The destination of the transfer
    /// @param amount_ The amount of the transfer
    /// @return False if the _controller does not authorize the transfer
    function onTransfer(
        address from_,
        address to_,
        uint256 amount_
    ) public returns (bool);

    /// @notice Notifies the _controller about an approval allowing the
    ///  _controller to react if desired
    /// @param owner_ The address that calls `approve()`
    /// @param spender_ The spender in the `approve()` call
    /// @param amount_ The amount in the `approve()` call
    /// @return False if the _controller does not authorize the approval
    function onApprove(
        address owner_,
        address spender_,
        uint256 amount_
    ) public returns (bool);
}

File 11 of 12: ./contract/math/SafeMath.sol
pragma solidity <0.6.0 >=0.4.21;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    /**
     * @dev Multiplies two numbers, throws on overflow.
     */

    /*@CTK SafeMath_mul
    @tag spec
    @post __reverted == __has_assertion_failure
    @post __has_assertion_failure == __has_overflow
    @post __reverted == false -> c == a * b
    @post msg == msg__post
   */
    /* CertiK Smart Labelling, for more details visit: https://certik.org */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
     * @dev Integer division of two numbers, truncating the quotient.
     */
    /*@CTK SafeMath_div
    @tag spec
    @pre b != 0
    @post __reverted == __has_assertion_failure
    @post __has_overflow == true -> __has_assertion_failure == true
    @post __reverted == false -> __return == a / b
    @post msg == msg__post
   */
    /* CertiK Smart Labelling, for more details visit: https://certik.org */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
     * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
     */
    /*@CTK SafeMath_sub
    @tag spec
    @post __reverted == __has_assertion_failure
    @post __has_overflow == true -> __has_assertion_failure == true
    @post __reverted == false -> __return == a - b
    @post msg == msg__post
   */
    /* CertiK Smart Labelling, for more details visit: https://certik.org */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
     * @dev Adds two numbers, throws on overflow.
     */
    /*@CTK SafeMath_add
    @tag spec
    @post __reverted == __has_assertion_failure
    @post __has_assertion_failure == __has_overflow
    @post __reverted == false -> c == a + b
    @post msg == msg__post
   */
    /* CertiK Smart Labelling, for more details visit: https://certik.org */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

File 12 of 12: ./contract/ownership/DSAuthority.sol
pragma solidity ^0.5.0;

interface DSAuthority {
    function canCall(
        address src,
        address dst,
        bytes4 sig
    ) external view returns (bool);
}

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender_","type":"address"},{"name":"amount_","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"disable_","type":"bool"}],"name":"disableTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"to_","type":"address"},{"name":"amount_","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"swapTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newController_","type":"address"}],"name":"changeController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"guy_","type":"address"},{"name":"wad_","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token_","type":"address"},{"name":"to_","type":"address"},{"name":"amount_","type":"uint256"}],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCap_","type":"uint256"}],"name":"changeCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"dsStop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_transfersEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to_","type":"address"},{"name":"amount_","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_tokenContract","type":"address"},{"name":"_extraData","type":"bytes"}],"name":"receiveApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"swapFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wrappedToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy_","type":"address"},{"name":"wad_","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"amount_","type":"uint256"}],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"to_","type":"address"},{"name":"amount_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"push","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to_","type":"address"},{"name":"amount_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender_","type":"address"},{"name":"amount_","type":"uint256"},{"name":"extraData_","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token_","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"wad","type":"uint256"}],"name":"pull","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_wrappedToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token_","type":"address"},{"indexed":true,"name":"controller_","type":"address"},{"indexed":false,"name":"amount_","type":"uint256"}],"name":"ClaimedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_tokenContract","type":"address"},{"indexed":false,"name":"_extraData","type":"bytes"},{"indexed":false,"name":"action","type":"uint256"}],"name":"ReceiveApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"ERC223Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"address"},{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"address"},{"indexed":true,"name":"dst","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"Stop","type":"event"},{"anonymous":false,"inputs":[],"name":"Start","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]

Contract Creation Code

6080604052600436106102515760003560e01c80638f4ffcb111610139578063b753a98c116100b6578063cae9ca511161007a578063cae9ca5114610bb2578063daea85c514610c78578063dd62ed3e14610cab578063df8de3e714610ce6578063f2d5d56b14610d19578063f2fde38b14610d5257610251565b8063b753a98c14610a46578063bb35783b14610a7f578063be45fd6214610ac2578063be9a655514610b88578063c2205ee114610b9d57610251565b8063a0712d68116100fd578063a0712d68146108c4578063a24835d1146108ee578063a9059cbb14610927578063ab67aa5814610960578063b2bdfa7b14610a3157610251565b80638f4ffcb11461074b57806393516c561461081b57806395d89b4114610845578063996c6cc31461085a5780639dc29fac1461088b57610251565b80633cebb823116101d257806379ba50971161019657806379ba5097146106765780637a9e5e4b1461068b578063800edb9d146106be57806383d5978a146106e857806385438bc0146106fd578063867904b41461071257610251565b80633cebb8231461056a57806340c10f191461059d57806342966c68146105d65780635e35359e1461060057806370a082311461064357610251565b806318160ddd1161021957806318160ddd1461049657806323b872dd146104bd5780632793b70714610500578063313ce5671461052a578063355274ea1461055557610251565b806306fdde031461034b578063095ea7b3146103d557806313af40351461042257806314176297146104555780631608f18f1461046a575b600954610266906001600160a01b0316610d85565b1561034457600954604051600160e11b632535112f0281523360048201818152600080356001600160e01b0319166024850181905260606044860190815236606487018190526001600160a01b0390971696634a6a225e96349695939493919290608401848480828437600081840152601f19601f820116905080830192505050955050505050506020604051808303818588803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050506040513d602081101561033257600080fd5b5051151561033f57600080fd5b610349565b600080fd5b005b34801561035757600080fd5b50610360610dae565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039a578181015183820152602001610382565b50505050905090810190601f1680156103c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103e157600080fd5b5061040e600480360360408110156103f857600080fd5b506001600160a01b038135169060200135610e44565b604080519115158252519081900360200190f35b34801561042e57600080fd5b506103496004803603602081101561044557600080fd5b50356001600160a01b0316610f0a565b34801561046157600080fd5b5061040e610fb4565b34801561047657600080fd5b506103496004803603602081101561048d57600080fd5b50351515610fc4565b3480156104a257600080fd5b506104ab61103c565b60408051918252519081900360200190f35b3480156104c957600080fd5b5061040e600480360360608110156104e057600080fd5b506001600160a01b03813581169160208101359091169060400135611042565b34801561050c57600080fd5b506103496004803603602081101561052357600080fd5b503561111f565b34801561053657600080fd5b5061053f61117c565b6040805160ff9092168252519081900360200190f35b34801561056157600080fd5b506104ab611181565b34801561057657600080fd5b506103496004803603602081101561058d57600080fd5b50356001600160a01b0316611187565b3480156105a957600080fd5b50610349600480360360408110156105c057600080fd5b506001600160a01b038135169060200135611203565b3480156105e257600080fd5b50610349600480360360208110156105f957600080fd5b503561135b565b34801561060c57600080fd5b506103496004803603606081101561062357600080fd5b506001600160a01b03813581169160208101359091169060400135611365565b34801561064f57600080fd5b506104ab6004803603602081101561066657600080fd5b50356001600160a01b0316611458565b34801561068257600080fd5b506103496114c0565b34801561069757600080fd5b50610349600480360360208110156106ae57600080fd5b50356001600160a01b0316611549565b3480156106ca57600080fd5b50610349600480360360208110156106e157600080fd5b50356115ef565b3480156106f457600080fd5b50610349611662565b34801561070957600080fd5b5061040e6116fd565b34801561071e57600080fd5b506103496004803603604081101561073557600080fd5b506001600160a01b03813516906020013561170d565b34801561075757600080fd5b506103496004803603608081101561076e57600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b8111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460018302840111600160201b831117156107da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117c5945050505050565b34801561082757600080fd5b506103496004803603602081101561083e57600080fd5b50356119ca565b34801561085157600080fd5b50610360611a24565b34801561086657600080fd5b5061086f611a85565b604080516001600160a01b039092168252519081900360200190f35b34801561089757600080fd5b50610349600480360360408110156108ae57600080fd5b506001600160a01b038135169060200135611a94565b3480156108d057600080fd5b50610349600480360360208110156108e757600080fd5b5035611b7b565b3480156108fa57600080fd5b506103496004803603604081101561091157600080fd5b506001600160a01b038135169060200135611b85565b34801561093357600080fd5b5061040e6004803603604081101561094a57600080fd5b506001600160a01b038135169060200135611d57565b34801561096c57600080fd5b5061040e6004803603608081101561098357600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156109bd57600080fd5b8201836020820111156109cf57600080fd5b803590602001918460018302840111600160201b831117156109f057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d64945050505050565b348015610a3d57600080fd5b5061086f612039565b348015610a5257600080fd5b5061034960048036036040811015610a6957600080fd5b506001600160a01b038135169060200135612048565b348015610a8b57600080fd5b5061034960048036036060811015610aa257600080fd5b506001600160a01b03813581169160208101359091169060400135612053565b348015610ace57600080fd5b5061040e60048036036060811015610ae557600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610b1457600080fd5b820183602082011115610b2657600080fd5b803590602001918460018302840111600160201b83111715610b4757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612064945050505050565b348015610b9457600080fd5b50610349612072565b348015610ba957600080fd5b5061086f612107565b348015610bbe57600080fd5b5061040e60048036036060811015610bd557600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610c0457600080fd5b820183602082011115610c1657600080fd5b803590602001918460018302840111600160201b83111715610c3757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612116945050505050565b348015610c8457600080fd5b5061040e60048036036020811015610c9b57600080fd5b50356001600160a01b031661221b565b348015610cb757600080fd5b506104ab60048036036040811015610cce57600080fd5b506001600160a01b0381358116916020013516612229565b348015610cf257600080fd5b5061034960048036036020811015610d0957600080fd5b50356001600160a01b0316612254565b348015610d2557600080fd5b5061034960048036036040811015610d3c57600080fd5b506001600160a01b038135169060200135612432565b348015610d5e57600080fd5b5061034960048036036020811015610d7557600080fd5b50356001600160a01b031661243d565b6000806001600160a01b0383161515610da2576000915050610da9565b5050803b15155b919050565b60058054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e3a5780601f10610e0f57610100808354040283529160200191610e3a565b820191906000526020600020905b815481529060010190602001808311610e1d57829003601f168201915b5050505050905090565b600954600090610e5c906001600160a01b0316610d85565b15610ef75760095460408051600160e01b63da682aeb0281523360048201526001600160a01b038681166024830152604482018690529151919092169163da682aeb9160648083019260209291908290030181600087803b158015610ec057600080fd5b505af1158015610ed4573d6000803e3d6000fd5b505050506040513d6020811015610eea57600080fd5b50511515610ef757600080fd5b610f01838361251f565b90505b92915050565b610f20336000356001600160e01b031916612623565b1515610f645760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b600154600160a01b900460ff1681565b610fda336000356001600160e01b031916612623565b151561101e5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b60078054600160a01b60ff0219169115600160a01b02919091179055565b60025490565b600754600090600160a01b900460ff16151561105a57fe5b60095461106f906001600160a01b0316610d85565b1561110c5760095460408051600160e01b634a3931490281526001600160a01b03878116600483015286811660248301526044820186905291519190921691634a3931499160648083019260209291908290030181600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506040513d60208110156110ff57600080fd5b5051151561110c57600080fd5b61111784848461270f565b949350505050565b600154600160a01b900460ff161561116f5760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6111793382612984565b50565b601290565b60085490565b61119d336000356001600160e01b031916612623565b15156111e15760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b611219336000356001600160e01b031916612623565b151561125d5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600154600160a01b900460ff16156112ad5760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6008546112c8826112bc61103c565b9063ffffffff612a6516565b111561131e5760408051600160e51b62461bcd02815260206004820152601560248201527f574746542d696e73756666696369656e742d6361700000000000000000000000604482015290519081900360640190fd5b6113288282612a72565b6040805182815290516001600160a01b038416916000916000805160206133678339815191529181900360200190a35050565b6111793382611a94565b61137b336000356001600160e01b031916612623565b15156113bf5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b505050506040513d602081101561144957600080fd5b5051151561145357fe5b505050565b60006001600160a01b03821615156114a457604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061333d602a913960400191505060405180910390fd5b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146115225760408051600160e51b62461bcd02815260206004820152601260248201527f574746542d6e6f742d6e65772d6f776e65720000000000000000000000000000604482015290519081900360640190fd5b60078054600180546001600160a01b03199081166001600160a01b03841617909155169055565b61155f336000356001600160e01b031916612623565b15156115a35760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b611605336000356001600160e01b031916612623565b15156116495760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b61165161103c565b81101561165d57600080fd5b600855565b611678336000356001600160e01b031916612623565b15156116bc5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b60018054600160a01b60ff021916600160a01b1790556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b90600090a1565b600754600160a01b900460ff1681565b611723336000356001600160e01b031916612623565b15156117675760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600154600160a01b900460ff16156117b75760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6117c18282611203565b5050565b82151561181c5760408051600160e51b62461bcd02815260206004820152600d60248201527f617070726f76616c207a65726f00000000000000000000000000000000000000604482015290519081900360640190fd5b6000602082015190507ff4e8e3b91c45a0cf07471af1330c35cdcf9f9209e3736aa4b50bf28d624af4a5858585858560405180866001600160a01b03166001600160a01b03168152602001858152602001846001600160a01b03166001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156118c45781810151838201526020016118ac565b50505050905090810190601f1680156118f15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a16005811461195a5760408051600160e51b62461bcd02815260206004820152600d60248201527f756e6b6e6f7720616374696f6e00000000000000000000000000000000000000604482015290519081900360640190fd5b80600514156119c357600a546001600160a01b038481169116146119b257604051600160e51b62461bcd0281526004018080602001828103825260338152602001806132c86033913960400191505060405180910390fd5b60408201516119c18682612bb7565b505b5050505050565b600154600160a01b900460ff1615611a1a5760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6111793382612bb7565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e3a5780601f10610e0f57610100808354040283529160200191610e3a565b600a546001600160a01b031681565b611aaa336000356001600160e01b031916612623565b1515611aee5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600154600160a01b900460ff1615611b3e5760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b611b488282612c9b565b6040805182815290516000916001600160a01b038516916000805160206133678339815191529181900360200190a35050565b6111793382611203565b611b9b336000356001600160e01b031916612623565b1515611bdf5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600154600160a01b900460ff1615611c2f5760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054811115611c8d5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061331d833981519152604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054611cb6908263ffffffff612f5516565b6001600160a01b038316600090815260036020526040902055600254611ce2908263ffffffff612f5516565b6002556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a26040805182815290516000916001600160a01b038516916000805160206133678339815191529181900360200190a35050565b6000610f01338484611042565b600754600090600160a01b900460ff161515611d7c57fe5b600954611d91906001600160a01b0316610d85565b15611e2e5760095460408051600160e01b634a3931490281526001600160a01b03888116600483015287811660248301526044820187905291519190921691634a3931499160648083019260209291908290030181600087803b158015611df757600080fd5b505af1158015611e0b573d6000803e3d6000fd5b505050506040513d6020811015611e2157600080fd5b50511515611e2e57600080fd5b611e3985858561270f565b1515611e8f5760408051600160e51b62461bcd02815260206004820152601960248201527f574746542d696e73756666696369656e742d62616c616e636500000000000000604482015290519081900360640190fd5b611e9884610d85565b15611f7957604051600160e11b63607705c50281526001600160a01b03868116600483019081526024830186905260606044840190815285516064850152855188949385169363c0ee0b8a938b938a938a9360840190602085019080838360005b83811015611f11578181015183820152602001611ef9565b50505050905090810190601f168015611f3e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611f5f57600080fd5b505af1158015611f73573d6000803e3d6000fd5b50505050505b836001600160a01b0316856001600160a01b03167f9bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd185856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ff3578181015183820152602001611fdb565b50505050905090810190601f1680156120205780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b6001546001600160a01b031681565b611453338383611042565b61205e838383611042565b50505050565b600061111733858585611d64565b612088336000356001600160e01b031916612623565b15156120cc5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b60018054600160a01b60ff02191690556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b6000546001600160a01b031681565b60006121228484610e44565b151561212d57600080fd5b604051600160e01b638f4ffcb102815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b838110156121aa578181015183820152602001612192565b50505050905090810190601f1680156121d75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156121f957600080fd5b505af115801561220d573d6000803e3d6000fd5b506001979650505050505050565b6000610f0482600019610e44565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61226a336000356001600160e01b031916612623565b15156122ae5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b6001600160a01b03811615156122f1576040513390303180156108fc02916000818181858888f193505050501580156122eb573d6000803e3d6000fd5b50611179565b60408051600160e01b6370a08231028152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561233f57600080fd5b505afa158015612353573d6000803e3d6000fd5b505050506040513d602081101561236957600080fd5b505160408051600160e01b63a9059cbb0281523360048201526024810183905290519192506001600160a01b0384169163a9059cbb916044808201926020929091908290030181600087803b1580156123c157600080fd5b505af11580156123d5573d6000803e3d6000fd5b505050506040513d60208110156123eb57600080fd5b505060408051828152905133916001600160a01b038616917ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c9181900360200190a3505050565b611453823383611042565b612453336000356001600160e01b031916612623565b15156124975760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b6001546001600160a01b03828116911614156124fd5760408051600160e51b62461bcd02815260206004820152601560248201527f574746542d616c72656164792d616e2d6f776e65720000000000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600154600090600160a01b900460ff16156125725760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6001600160a01b03831615156125bc57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806132fb6022913960400191505060405180910390fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60006001600160a01b03831630141561263e57506001610f04565b6001546001600160a01b038481169116141561265c57506001610f04565b6000546001600160a01b0316151561267657506000610f04565b60005460408051600160e01b63b70096130281526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b1580156126dc57600080fd5b505afa1580156126f0573d6000803e3d6000fd5b505050506040513d602081101561270657600080fd5b50519050610f04565b600154600090600160a01b900460ff16156127625760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6001600160a01b03841633148015906127a057506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b15612879576001600160a01b03841660009081526004602090815260408083203384529091529020548211156128205760408051600160e51b62461bcd02815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b0384166000908152600460209081526040808320338452909152902054612854908363ffffffff612f5516565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b6001600160a01b0384166000908152600360205260409020548211156128d75760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061331d833981519152604482015290519081900360640190fd5b6001600160a01b038416600090815260036020526040902054612900908363ffffffff612f5516565b6001600160a01b038086166000908152600360205260408082209390935590851681522054612935908363ffffffff612a6516565b6001600160a01b03808516600081815260036020908152604091829020949094558051868152905191939288169260008051602061336783398151915292918290030190a35060019392505050565b600154600160a01b900460ff16156129d45760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6129de8282612f67565b600a5460408051600160e01b6323b872dd0281523060048201523360248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612a3b57600080fd5b505af1158015612a4f573d6000803e3d6000fd5b505050506040513d602081101561205e57600080fd5b81810182811015610f0457fe5b612a88336000356001600160e01b031916612623565b1515612acc5760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600154600160a01b900460ff1615612b1c5760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054612b45908263ffffffff612a6516565b6001600160a01b038316600090815260036020526040902055600254612b71908263ffffffff612a6516565b6002556040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050565b600154600160a01b900460ff1615612c075760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b600a5460408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612c6457600080fd5b505af1158015612c78573d6000803e3d6000fd5b505050506040513d6020811015612c8e57600080fd5b506117c19050828261311f565b612cb1336000356001600160e01b031916612623565b1515612cf55760408051600160e51b62461bcd02815260206004820152601460248201526000805160206133a7833981519152604482015290519081900360640190fd5b600154600160a01b900460ff1615612d455760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6001600160a01b0382163314801590612d8357506001600160a01b038216600090815260046020908152604080832033845290915290205460001914155b15612e5c576001600160a01b0382166000908152600460209081526040808320338452909152902054811115612e035760408051600160e51b62461bcd02815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b0382166000908152600460209081526040808320338452909152902054612e37908263ffffffff612f5516565b6001600160a01b03831660009081526004602090815260408083203384529091529020555b6001600160a01b038216600090815260036020526040902054811115612eba5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061331d833981519152604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054612ee3908263ffffffff612f5516565b6001600160a01b038316600090815260036020526040902055600254612f0f908263ffffffff612f5516565b6002556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b600082821115612f6157fe5b50900390565b600154600160a01b900460ff1615612fb75760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b6001600160a01b0382163314801590612ff557506001600160a01b038216600090815260046020908152604080832033845290915290205460001914155b15611c2f576001600160a01b03821660009081526004602090815260408083203384529091529020548111156130755760408051600160e51b62461bcd02815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b03821660009081526004602090815260408083203384529091529020546130a9908263ffffffff612f5516565b6001600160a01b038316600081815260046020908152604080832033845282528083209490945591815260039091522054811115611c8d5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061331d833981519152604482015290519081900360640190fd5b600154600160a01b900460ff161561316f5760408051600160e51b62461bcd0281526020600482015260126024820152600080516020613387833981519152604482015290519081900360640190fd5b60085461317e826112bc61103c565b11156131d45760408051600160e51b62461bcd02815260206004820152601560248201527f574746542d696e73756666696369656e742d6361700000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600360205260409020546131fd908263ffffffff612a6516565b6001600160a01b038316600090815260036020526040902055600254613229908263ffffffff612a6516565b6002556040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a26040805182815290516001600160a01b038416916000916000805160206133678339815191529181900360200190a35050565b60008215156132af57506000610f04565b508181028183828115156132bf57fe5b0414610f0457fefe617070726f76616c20616e642077616e74206465706f7369742c20627574207573656420746f6b656e2069736e27742047465445524332303a20617070726f766520746f20746865207a65726f206164647265737364732d746f6b656e2d696e73756666696369656e742d62616c616e63650000004552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef64732d73746f702d69732d73746f70706564000000000000000000000000000064732d617574682d756e617574686f72697a6564000000000000000000000000a165627a7a72305820002ba05bb8069e85f1f1b75d14e68d96c267cfea94ee4651f904c71526edeeb00029

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.