ETH Price: $2,819.69 (+0.76%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw125351932021-05-30 10:31:401347 days ago1622370700IN
0x199d9925...4F028D411
0 ETH0.0012848217.00000134
Withdraw125328902021-05-30 1:51:321347 days ago1622339492IN
0x199d9925...4F028D411
0 ETH0.0018535620
Withdraw125325682021-05-30 0:43:481347 days ago1622335428IN
0x199d9925...4F028D411
0 ETH0.0020402827
Withdraw125323832021-05-30 0:00:541347 days ago1622332854IN
0x199d9925...4F028D411
0 ETH0.0018345419.8
Withdraw125306352021-05-29 17:31:551347 days ago1622309515IN
0x199d9925...4F028D411
0 ETH0.0026452335
Withdraw125301682021-05-29 15:55:011347 days ago1622303701IN
0x199d9925...4F028D411
0 ETH0.0036155739
Withdraw125299842021-05-29 15:15:211347 days ago1622301321IN
0x199d9925...4F028D411
0 ETH0.0039256342.35
Withdraw125297302021-05-29 14:19:451347 days ago1622297985IN
0x199d9925...4F028D411
0 ETH0.0027434836.3
Withdraw125294932021-05-29 13:22:461348 days ago1622294566IN
0x199d9925...4F028D411
0 ETH0.0018898725.00000145
Withdraw125288522021-05-29 11:02:251348 days ago1622286145IN
0x199d9925...4F028D411
0 ETH0.0015115620.00000156
Withdraw125287372021-05-29 10:35:591348 days ago1622284559IN
0x199d9925...4F028D411
0 ETH0.0017608819
Withdraw125287342021-05-29 10:35:111348 days ago1622284511IN
0x199d9925...4F028D411
0 ETH0.0013606218
Withdraw125286812021-05-29 10:24:211348 days ago1622283861IN
0x199d9925...4F028D411
0 ETH0.001375318.2
Withdraw125286462021-05-29 10:18:451348 days ago1622283525IN
0x199d9925...4F028D411
0 ETH0.0014359819.00000145
Withdraw125281632021-05-29 8:27:171348 days ago1622276837IN
0x199d9925...4F028D411
0 ETH0.0016627122
Withdraw125278992021-05-29 7:26:001348 days ago1622273160IN
0x199d9925...4F028D411
0 ETH0.001511920
Withdraw125277772021-05-29 7:01:451348 days ago1622271705IN
0x199d9925...4F028D411
0 ETH0.0018142824
Withdraw125277732021-05-29 7:01:041348 days ago1622271664IN
0x199d9925...4F028D411
0 ETH0.0017462423.1
Withdraw125275952021-05-29 6:18:001348 days ago1622269080IN
0x199d9925...4F028D411
0 ETH0.0019650226.00000145
Withdraw125275822021-05-29 6:14:201348 days ago1622268860IN
0x199d9925...4F028D411
0 ETH0.0016633522.00000145
Withdraw125269202021-05-29 3:50:361348 days ago1622260236IN
0x199d9925...4F028D411
0 ETH0.0015874921.00000134
Withdraw125269102021-05-29 3:48:581348 days ago1622260138IN
0x199d9925...4F028D411
0 ETH0.0018785724.86
Withdraw125268122021-05-29 3:24:481348 days ago1622258688IN
0x199d9925...4F028D411
0 ETH0.002131723
Withdraw125264842021-05-29 2:12:071348 days ago1622254327IN
0x199d9925...4F028D411
0 ETH0.0017389623
Withdraw125262802021-05-29 1:25:421348 days ago1622251542IN
0x199d9925...4F028D411
0 ETH0.0029656932
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Withdraw

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 7: Withdraw.sol
pragma solidity ^0.5.8;

import "./IERC20.sol";
import "./SafeMath.sol";
import "./ReentrancyGuard.sol";
import "./TransferHelper.sol";
import "./IWithdraw.sol";
import "./ECDSA.sol";

contract Owned {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

contract Withdraw is IWithdraw, ReentrancyGuard, Owned {
    IERC20 private tokenAddr;
    using TransferHelper for address;
    using SafeMath for uint256;
    using ECDSA for bytes32;
    string public name;
    bool public stop_status = false;

    mapping(uint256 => bool) usedNonce;

    modifier withdraw_status {
        require(stop_status == false, "WITHDRAW:STOP");
        _;
    }

    constructor(address _tokenAddr, address _owner) public {
        tokenAddr = IERC20(_tokenAddr);
        name = "ADAO-WITHDRAW";
        owner = _owner;
    }

    function verifySign(
        uint256 amount,
        uint256 nonce,
        address userAddr,
        bytes memory signature
    ) public view returns (bool) {
        address recoverAddr =
            keccak256(abi.encode(userAddr, amount, nonce, this))
                .toEthSignedMessageHash()
                .recover(signature);
        require(recoverAddr == owner, "WITHDRAW:SIGN_FAILURE");
        require(!usedNonce[nonce], "WITHDRAW:NONCE_USED");
        return true;
    }

    function withdraw(
        uint256 amount,
        uint256 nonce,
        bytes memory signature
    ) public nonReentrant withdraw_status returns (bool) {
        verifySign(amount, nonce, msg.sender, signature);
        usedNonce[nonce] = true;
        require(
            address(tokenAddr).safeTransfer(msg.sender, amount),
            "WITHDRAW:INSUFFICIENT_CONTRACT_BALANCE"
        );
        emit WithdrawEvent(msg.sender, amount, nonce);
        return true;
    }

    function stop() public nonReentrant onlyOwner {
        stop_status = true;
    }

    function draw(uint256 amount, address toAddr)
        public
        nonReentrant
        onlyOwner
    {
        require(
            address(tokenAddr).safeTransfer(toAddr, amount),
            "WITHDRAW:INSUFFICIENT_CONTRACT_BALANCE"
        );
        emit DrawEvent(toAddr, amount);
    }
}

File 2 of 7: ECDSA.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.5.8;

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature)
        internal
        pure
        returns (address)
    {
        // Check the signature length
        if (signature.length != 65) {
            revert("ECDSA: invalid signature length");
        }

        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // ecrecover takes the signature parameters, and the only way to get them
        // currently is to use assembly.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := byte(0, mload(add(signature, 0x60)))
        }

        return recover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        require(
            uint256(s) <=
                0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,
            "ECDSA: invalid signature 's' value"
        );
        require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value");

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        require(signer != address(0), "ECDSA: invalid signature");

        return signer;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash)
        internal
        pure
        returns (bytes32)
    {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return
            keccak256(
                abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)
            );
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash)
        internal
        pure
        returns (bytes32)
    {
        return
            keccak256(
                abi.encodePacked("\x19\x01", domainSeparator, structHash)
            );
    }
}

File 3 of 7: IERC20.sol
pragma solidity ^0.5.8;

/**
 * @title ERC20 interface
 */
interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

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

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

    function totalSupply() external view returns (uint256);

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

    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 4 of 7: IWithdraw.sol
pragma solidity ^0.5.8;

contract IWithdraw {
    event WithdrawEvent(address indexed user, uint256 indexed amount, uint256 indexed nonce);
    event DrawEvent(address indexed user, uint256 indexed amount);

    function verifySign(uint256 amount, uint256 nonce, address userAddr, bytes memory signature) public view returns (bool);
    function withdraw(uint256 amount, uint256 nonce, bytes memory signature) public returns (bool);

}

File 5 of 7: ReentrancyGuard.sol
pragma solidity ^0.5.8;
/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 *
 * _Since v2.5.0:_ this module is now much more gas efficient, given net gas
 * metering changes introduced in the Istanbul hardfork.
 */
contract ReentrancyGuard {
    bool private _notEntered;
    constructor () internal {
        // Storing an initial non-zero value makes deployment a bit more
        // expensive, but in exchange the refund on every call to nonReentrant
        // will be lower in amount. Since refunds are capped to a percetange of
        // the total transaction's gas, it is best to keep them low in cases
        // like this one, to increase the likelihood of the full refund coming
        // into effect.
        _notEntered = true;
    }
    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_notEntered, "ReentrancyGuard: reentrant call");
        // Any calls to nonReentrant after this point will fail
        _notEntered = false;
        _;
        // By storing the original value once again, a refund is triggered (see
        _notEntered = true;
    }
}

File 6 of 7: SafeMath.sol
pragma solidity ^0.5.8;


/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {

    /**
     * @dev Multiplies two unsigned integers, reverts on 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-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath#mul: OVERFLOW");

        return c;
    }

    /**
     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath#div: DIVISION_BY_ZERO");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath#sub: UNDERFLOW");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath#add: OVERFLOW");

        return c;
    }

    /**
     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
     * reverts when dividing by zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath#mod: DIVISION_BY_ZERO");
        return a % b;
    }


}

File 7 of 7: TransferHelper.sol
pragma solidity ^0.5.8;

// helper methods for interacting with ERC20 tokens  that do not consistently return true/false
library TransferHelper {

    function safeTransfer(address token, address to, uint value) internal returns (bool){
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        return (success && (data.length == 0 || abi.decode(data, (bool))));
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal returns (bool){
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        return (success && (data.length == 0 || abi.decode(data, (bool))));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DrawEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"WithdrawEvent","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"toAddr","type":"address"}],"name":"draw","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":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stop_status","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"userAddr","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verifySign","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526004805460ff1916905534801561001a57600080fd5b50604051610eb4380380610eb48339818101604052604081101561003d57600080fd5b5080516020918201516000805460ff19166001179055600280546001600160a01b0384166001600160a01b031990911617905560408051808201909152600d8082526c4144414f2d574954484452415760981b91909401908152919290916100a891600391906100d5565b50600080546001600160a01b0390921661010002610100600160a81b031990921691909117905550610170565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061011657805160ff1916838001178555610143565b82800160010185558215610143579182015b82811115610143578251825591602001919060010190610128565b5061014f929150610153565b5090565b61016d91905b8082111561014f5760008155600101610159565b90565b610d358061017f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b146102ba578063b702a879146102de578063b8461dd01461030a578063d4ee1d9014610312578063f2fde38b1461031a5761009e565b806306fdde03146100a357806307da68f5146101205780634d4144fe1461012a578063744fb6ca1461020057806379ba5097146102b2575b600080fd5b6100ab610340565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100e55781810151838201526020016100cd565b50505050905090810190601f1680156101125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101286103ce565b005b6101ec6004803603608081101561014057600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561017757600080fd5b82018360208201111561018957600080fd5b803590602001918460018302840111640100000000831117156101ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610469945050505050565b604080519115158252519081900360200190f35b6101ec6004803603606081101561021657600080fd5b81359160208101359181019060608101604082013564010000000081111561023d57600080fd5b82018360208201111561024f57600080fd5b8035906020019184600183028401116401000000008311171561027157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105af945050505050565b61012861071d565b6102c26107a9565b604080516001600160a01b039092168252519081900360200190f35b610128600480360360408110156102f457600080fd5b50803590602001356001600160a01b03166107bd565b6101ec6108d8565b6102c26108e1565b6101286004803603602081101561033057600080fd5b50356001600160a01b03166108f0565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103c65780601f1061039b576101008083540402835291602001916103c6565b820191906000526020600020905b8154815290600101906020018083116103a957829003601f168201915b505050505081565b60005460ff16610425576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169081905561010090046001600160a01b0316331461044a57600080fd5b60048054600160ff199182168117909255600080549091169091179055565b6000806104e7836104db8689893060405160200180856001600160a01b03166001600160a01b03168152602001848152602001838152602001826001600160a01b03166001600160a01b031681526020019450505050506040516020818303038152906040528051906020012061092e565b9063ffffffff61097f16565b6000549091506001600160a01b038083166101009092041614610549576040805162461bcd60e51b815260206004820152601560248201527457495448445241573a5349474e5f4641494c55524560581b604482015290519081900360640190fd5b60008581526005602052604090205460ff16156105a3576040805162461bcd60e51b815260206004820152601360248201527215d2551211149055ce9393d390d157d554d151606a1b604482015290519081900360640190fd5b50600195945050505050565b6000805460ff16610607576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff1916905560045460ff1615610659576040805162461bcd60e51b815260206004820152600d60248201526c057495448445241573a53544f5609c1b604482015290519081900360640190fd5b61066584843385610469565b506000838152600560205260409020805460ff1916600117905560025461069c906001600160a01b0316338663ffffffff6109ff16565b6106d75760405162461bcd60e51b8152600401808060200182810382526026815260200180610cdb6026913960400191505060405180910390fd5b6040518390859033907f5bb95829671915ece371da722f91d5371159095dcabf2f75cd6c53facb7e1bab90600090a45060016000805460ff191660011790559392505050565b6001546001600160a01b0316331461073457600080fd5b600154600080546040516001600160a01b0393841693610100909204909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b60005461010090046001600160a01b031681565b60005460ff16610814576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169081905561010090046001600160a01b0316331461083957600080fd5b600254610856906001600160a01b0316828463ffffffff6109ff16565b6108915760405162461bcd60e51b8152600401808060200182810382526026815260200180610cdb6026913960400191505060405180910390fd5b60405182906001600160a01b038316907f8bc9aa758a91996a40c295edcd22bdc4f4e6a30043908c4bae108ece8d9a0ead90600090a350506000805460ff19166001179055565b60045460ff1681565b6001546001600160a01b031681565b60005461010090046001600160a01b0316331461090c57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600081516041146109d7576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6109f586828585610b1c565b9695505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485946060948a16939092909182918083835b60208310610a7e5780518252601f199092019160209182019101610a5f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ae0576040519150601f19603f3d011682016040523d82523d6000602084013e610ae5565b606091505b50915091508180156109f55750805115806109f55750808060200190516020811015610b1057600080fd5b50519695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610b7d5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c976022913960400191505060405180910390fd5b8360ff16601b1480610b9257508360ff16601c145b610bcd5760405162461bcd60e51b8152600401808060200182810382526022815260200180610cb96022913960400191505060405180910390fd5b604080516000808252602080830180855289905260ff88168385015260608301879052608083018690529251909260019260a080820193601f1981019281900390910190855afa158015610c25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c8d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9594505050505056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756557495448445241573a494e53554646494349454e545f434f4e54524143545f42414c414e4345a265627a7a723158206b1af78817e2fd76460c20573c332e6d34eaec64b8cda1a3411ce05e5805612264736f6c6343000511003200000000000000000000000071fbc1d795fcfbca43a3ebf6de0101952f31a4100000000000000000000000002f53c0e5b28b6066eb1989740f0470cd6af4655b

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b146102ba578063b702a879146102de578063b8461dd01461030a578063d4ee1d9014610312578063f2fde38b1461031a5761009e565b806306fdde03146100a357806307da68f5146101205780634d4144fe1461012a578063744fb6ca1461020057806379ba5097146102b2575b600080fd5b6100ab610340565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100e55781810151838201526020016100cd565b50505050905090810190601f1680156101125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101286103ce565b005b6101ec6004803603608081101561014057600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561017757600080fd5b82018360208201111561018957600080fd5b803590602001918460018302840111640100000000831117156101ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610469945050505050565b604080519115158252519081900360200190f35b6101ec6004803603606081101561021657600080fd5b81359160208101359181019060608101604082013564010000000081111561023d57600080fd5b82018360208201111561024f57600080fd5b8035906020019184600183028401116401000000008311171561027157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105af945050505050565b61012861071d565b6102c26107a9565b604080516001600160a01b039092168252519081900360200190f35b610128600480360360408110156102f457600080fd5b50803590602001356001600160a01b03166107bd565b6101ec6108d8565b6102c26108e1565b6101286004803603602081101561033057600080fd5b50356001600160a01b03166108f0565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103c65780601f1061039b576101008083540402835291602001916103c6565b820191906000526020600020905b8154815290600101906020018083116103a957829003601f168201915b505050505081565b60005460ff16610425576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169081905561010090046001600160a01b0316331461044a57600080fd5b60048054600160ff199182168117909255600080549091169091179055565b6000806104e7836104db8689893060405160200180856001600160a01b03166001600160a01b03168152602001848152602001838152602001826001600160a01b03166001600160a01b031681526020019450505050506040516020818303038152906040528051906020012061092e565b9063ffffffff61097f16565b6000549091506001600160a01b038083166101009092041614610549576040805162461bcd60e51b815260206004820152601560248201527457495448445241573a5349474e5f4641494c55524560581b604482015290519081900360640190fd5b60008581526005602052604090205460ff16156105a3576040805162461bcd60e51b815260206004820152601360248201527215d2551211149055ce9393d390d157d554d151606a1b604482015290519081900360640190fd5b50600195945050505050565b6000805460ff16610607576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff1916905560045460ff1615610659576040805162461bcd60e51b815260206004820152600d60248201526c057495448445241573a53544f5609c1b604482015290519081900360640190fd5b61066584843385610469565b506000838152600560205260409020805460ff1916600117905560025461069c906001600160a01b0316338663ffffffff6109ff16565b6106d75760405162461bcd60e51b8152600401808060200182810382526026815260200180610cdb6026913960400191505060405180910390fd5b6040518390859033907f5bb95829671915ece371da722f91d5371159095dcabf2f75cd6c53facb7e1bab90600090a45060016000805460ff191660011790559392505050565b6001546001600160a01b0316331461073457600080fd5b600154600080546040516001600160a01b0393841693610100909204909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b60005461010090046001600160a01b031681565b60005460ff16610814576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169081905561010090046001600160a01b0316331461083957600080fd5b600254610856906001600160a01b0316828463ffffffff6109ff16565b6108915760405162461bcd60e51b8152600401808060200182810382526026815260200180610cdb6026913960400191505060405180910390fd5b60405182906001600160a01b038316907f8bc9aa758a91996a40c295edcd22bdc4f4e6a30043908c4bae108ece8d9a0ead90600090a350506000805460ff19166001179055565b60045460ff1681565b6001546001600160a01b031681565b60005461010090046001600160a01b0316331461090c57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600081516041146109d7576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6109f586828585610b1c565b9695505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485946060948a16939092909182918083835b60208310610a7e5780518252601f199092019160209182019101610a5f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ae0576040519150601f19603f3d011682016040523d82523d6000602084013e610ae5565b606091505b50915091508180156109f55750805115806109f55750808060200190516020811015610b1057600080fd5b50519695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610b7d5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c976022913960400191505060405180910390fd5b8360ff16601b1480610b9257508360ff16601c145b610bcd5760405162461bcd60e51b8152600401808060200182810382526022815260200180610cb96022913960400191505060405180910390fd5b604080516000808252602080830180855289905260ff88168385015260608301879052608083018690529251909260019260a080820193601f1981019281900390910190855afa158015610c25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c8d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9594505050505056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756557495448445241573a494e53554646494349454e545f434f4e54524143545f42414c414e4345a265627a7a723158206b1af78817e2fd76460c20573c332e6d34eaec64b8cda1a3411ce05e5805612264736f6c63430005110032

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

00000000000000000000000071fbc1d795fcfbca43a3ebf6de0101952f31a4100000000000000000000000002f53c0e5b28b6066eb1989740f0470cd6af4655b

-----Decoded View---------------
Arg [0] : _tokenAddr (address): 0x71fbC1d795FcfBcA43A3ebF6de0101952f31a410
Arg [1] : _owner (address): 0x2f53C0e5B28B6066eB1989740F0470Cd6aF4655B

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000071fbc1d795fcfbca43a3ebf6de0101952f31a410
Arg [1] : 0000000000000000000000002f53c0e5b28b6066eb1989740f0470cd6af4655b


Deployed Bytecode Sourcemap

721:1913:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;721:1913:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;911:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;911:18:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2252:81;;;:::i;:::-;;1283:483;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1283:483:6;;;;;;;;-1:-1:-1;;;;;1283:483:6;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1283:483:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1283:483:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1283:483:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1283:483:6;;-1:-1:-1;1283:483:6;;-1:-1:-1;;;;;1283:483:6:i;:::-;;;;;;;;;;;;;;;;;;1772:474;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1772:474:6;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1772:474:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1772:474:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1772:474:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1772:474:6;;-1:-1:-1;1772:474:6;;-1:-1:-1;;;;;1772:474:6:i;526:191::-;;;:::i;206:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;206:20:6;;;;;;;;;;;;;;2339:293;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2339:293:6;;;;;;-1:-1:-1;;;;;2339:293:6;;:::i;935:31::-;;;:::i;232:23::-;;;:::i;420:100::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;420:100:6;-1:-1:-1;;;;;420:100:6;;:::i;911:18::-;;;;;;;;;;;;;;;-1:-1:-1;;911:18:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2252:81::-;1931:11:3;;;;1923:55;;;;;-1:-1:-1;;;1923:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2066:5;2052:19;;-1:-1:-1;;2052:19:3;;;;;;390:5:6;;-1:-1:-1;;;;;390:5:6;376:10;:19;368:28;;;;;;2308:11;:18;;2322:4;-1:-1:-1;;2308:18:6;;;;;;;;-1:-1:-1;2172:18:3;;;;;;;;;;2252:81:6:o;1283:483::-;1435:4;1451:19;1485:130;1605:9;1485:94;1506:8;1516:6;1524:5;1531:4;1495:41;;;;;;-1:-1:-1;;;;;1495:41:6;-1:-1:-1;;;;;1495:41:6;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1495:41:6;-1:-1:-1;;;;;1495:41:6;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1495:41:6;;;1485:52;;;;;;:92;:94::i;:::-;:119;:130;:119;:130;:::i;:::-;1648:5;;1451:164;;-1:-1:-1;;;;;;1633:20:6;;;1648:5;;;;;1633:20;1625:54;;;;;-1:-1:-1;;;1625:54:6;;;;;;;;;;;;-1:-1:-1;;;1625:54:6;;;;;;;;;;;;;;;1698:16;;;;:9;:16;;;;;;;;1697:17;1689:49;;;;;-1:-1:-1;;;1689:49:6;;;;;;;;;;;;-1:-1:-1;;;1689:49:6;;;;;;;;;;;;;;;-1:-1:-1;1755:4:6;;1283:483;-1:-1:-1;;;;;1283:483:6:o;1772:474::-;1920:4;1931:11:3;;;;1923:55;;;;;-1:-1:-1;;;1923:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2066:5;2052:19;;-1:-1:-1;;2052:19:3;;;1057:11:6;;2052:19:3;1057:11:6;:20;1049:46;;;;;-1:-1:-1;;;1049:46:6;;;;;;;;;;;;-1:-1:-1;;;1049:46:6;;;;;;;;;;;;;;;1936:48;1947:6;1955:5;1962:10;1974:9;1936:10;:48::i;:::-;-1:-1:-1;1994:16:6;;;;:9;:16;;;;;:23;;-1:-1:-1;;1994:23:6;2013:4;1994:23;;;2056:9;;2048:51;;-1:-1:-1;;;;;2056:9:6;2080:10;2092:6;2048:51;:31;:51;:::i;:::-;2027:136;;;;-1:-1:-1;;;2027:136:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2178:40;;2212:5;;2204:6;;2192:10;;2178:40;;;;;-1:-1:-1;2235:4:6;2172:11:3;:18;;-1:-1:-1;;2172:18:3;2186:4;2172:18;;;1772:474:6;;-1:-1:-1;;;1772:474:6:o;526:191::-;592:8;;-1:-1:-1;;;;;592:8:6;578:10;:22;570:31;;;;;;644:8;;;637:5;;616:37;;-1:-1:-1;;;;;644:8:6;;;;;637:5;;;;;;;616:37;;;671:8;;;;663:16;;-1:-1:-1;;;;;;663:16:6;671:8;-1:-1:-1;;;;;671:8:6;;663:16;;;;-1:-1:-1;;;;;;689:21:6;;;526:191::o;206:20::-;;;;;;-1:-1:-1;;;;;206:20:6;;:::o;2339:293::-;1931:11:3;;;;1923:55;;;;;-1:-1:-1;;;1923:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2066:5;2052:19;;-1:-1:-1;;2052:19:3;;;;;;390:5:6;;-1:-1:-1;;;;;390:5:6;376:10;:19;368:28;;;;;;2482:9;;2474:47;;-1:-1:-1;;;;;2482:9:6;2506:6;2514;2474:47;:31;:47;:::i;:::-;2453:132;;;;-1:-1:-1;;;2453:132:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2600:25;;2618:6;;-1:-1:-1;;;;;2600:25:6;;;;;;;;-1:-1:-1;;2172:11:3;:18;;-1:-1:-1;;2172:18:3;2186:4;2172:18;;;2339:293:6:o;935:31::-;;;;;;:::o;232:23::-;;;-1:-1:-1;;;;;232:23:6;;:::o;420:100::-;390:5;;;;;-1:-1:-1;;;;;390:5:6;376:10;:19;368:28;;;;;;493:8;:20;;-1:-1:-1;;;;;;493:20:6;-1:-1:-1;;;;;493:20:6;;;;;;;;;;420:100::o;3757:335:0:-;4013:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4013:58:0;;;;;;;3986:99;;;;;;3757:335::o;1064:768::-;1166:7;1231:9;:16;1251:2;1231:22;1227:94;;1269:41;;;-1:-1:-1;;;1269:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1227:94;1671:4;1656:20;;1650:27;1716:4;1701:20;;1695:27;1769:4;1754:20;;1748:27;1387:9;1740:36;1803:22;1811:4;1740:36;1650:27;1695;1803:7;:22::i;:::-;1796:29;1064:768;-1:-1:-1;;;;;;1064:768:0:o;156:340:5:-;365:45;;;-1:-1:-1;;;;;365:45:5;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;365:45:5;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;354:57:5;;;;235:4;;;;333:17;;354:10;;;365:45;;354:57;;;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;354:57:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;318:93:5;;;;430:7;:57;;;;-1:-1:-1;442:11:5;;:16;;:44;;;473:4;462:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;462:24:5;422:66;156:340;-1:-1:-1;;;;;;156:340:5:o;1965:1502:0:-;2088:7;3032:66;3002:96;;;2981:177;;;;-1:-1:-1;;;2981:177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3176:1;:7;;3181:2;3176:7;:18;;;;3187:1;:7;;3192:2;3187:7;3176:18;3168:65;;;;-1:-1:-1;;;3168:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:24;;;3328:14;3345:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3328:14;;3345:24;;;;;;;-1:-1:-1;;3345:24:0;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3345:24:0;;-1:-1:-1;;3345:24:0;;;-1:-1:-1;;;;;;;3387:20:0;;3379:57;;;;;-1:-1:-1;;;3379:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3454:6;1965:1502;-1:-1:-1;;;;;1965:1502:0:o

Swarm Source

bzzr://6b1af78817e2fd76460c20573c332e6d34eaec64b8cda1a3411ce05e58056122

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.