Contract 0xfD0174784EbCe943bdb8832Ecdea9Fea30e7C7A9

 
 
Txn Hash
Method
Block
From
To
Value
0xc445e1db9602613a9a2982856b683fe126e686da17b02334b95e27128cb17d80Request Daily Ac...(pending)2022-11-28 10:52:1643 mins ago0x653ea96384d4b81eddfdddf58952d643906b4a54 IN MCH: Daily Action 20 Ether(Pending)(Pending)
0x07c52ddcbe1a7e6801e1f48a1dc8e888c1827b4efac43e6e501563ab86fe9231Request Daily Ac...(pending)2022-11-28 8:21:403 hrs 13 mins ago0x62cb4e46a0138d40ecdf54650151d56740bdb713 IN MCH: Daily Action 20 Ether(Pending)(Pending)
0xa4229897d34131f866b3bb204ad727e053c6d1941d2d024020d18b861cc3f19bRequest Daily Ac...97197132020-03-22 6:19:37981 days 5 hrs ago0x1fabefa428e5f30a08591d4281f69a4b8520d3eb IN  MCH: Daily Action 20 Ether0.000001950.05268243
0x832f4645a37687d13e965a7680d395590ad4ac931d22394afbc67da5604f98daRequest Daily Ac...96031382020-03-04 6:37:18999 days 4 hrs ago0xa286fd1487d48ba723f99141090db0a901a25600 IN  MCH: Daily Action 20 Ether0.000000630.0126477
0x0afd8e8bac857eb7d00940321903c05c99e40deb38a5fd18c6be349f4b5d44d2Request Daily Ac...95956552020-03-03 2:58:501000 days 8 hrs ago0xbd4d35c046af98c586287bd360c07c01c86ccfc6 IN  MCH: Daily Action 20 Ether0.000000470.01006088
0x7f5eb703cd30956d36d3552c4c678f29fd9f69171a96307c35f2f3035602bcc2Request Daily Ac...93861642020-01-30 22:12:071032 days 13 hrs ago0xf811114a75f94bf60fbc065f15a371e1fdc017c1 IN  MCH: Daily Action 20 Ether0.000003790.076
0xcdf1a71e35dc9f04716f3a8846263666f2afec842622707e5dd3896dd325aae8Request Daily Ac...87078792019-10-09 13:14:051145 days 22 hrs ago0xbef1395e57ede5a017a92392d1f018831c3561d1 IN  MCH: Daily Action 20 Ether0.0007346621.20000076
0x543f03989e322d46ba9d7151aaf590acac56334ec65d43d98e5936917bfb64b0Request Daily Ac...87078792019-10-09 13:14:051145 days 22 hrs ago0xbef1395e57ede5a017a92392d1f018831c3561d1 IN  MCH: Daily Action 20 Ether0.0007346621.20000076
0x39ae56a4212e15a7a7018b1a08107a8e8073f442ab1620090f053ab8f6ffabf6Request Daily Ac...87030032019-10-08 18:45:391146 days 16 hrs ago0xeef1cd3a05d4d7e76960602667074bc80cab3c7c IN  MCH: Daily Action 20 Ether0.000006380.136
0xced584c658f0812a7d6625e202f5ba82b1cbccefbfbde17cf712083b4effc08bRequest Daily Ac...86625082019-10-02 11:14:011153 days 21 mins ago0x695554c1dd7c2b4f79081abf352db5302a5cc4db IN  MCH: Daily Action 20 Ether0.000056072
0x81b626cf024b3e115073304b511d7074b50f7f69f66672a2ded91d028ba88173Request Daily Ac...86623862019-10-02 10:46:591153 days 48 mins ago0x0fd0a66e6c95e06fdd222472fbbe839272c95cc5 IN  MCH: Daily Action 20 Ether0.000094052
0x4dfbabbdec5d3b86bf2e435e0b97807750dc6c0356a6722f4d373004db61e32dRequest Daily Ac...86623852019-10-02 10:46:571153 days 48 mins ago0x121ae6b810937d6f250bb1456976fd597a980e9a IN  MCH: Daily Action 20 Ether0.000094052
0xe917b9f74c2ec23c69c78421cbf1bb5f3b71b57e1a1db56ce38b6d3ad6f78f3fRequest Daily Ac...86623842019-10-02 10:46:491153 days 48 mins ago0xb3726138b92bb4d1cb9674defe80cd270b23cc45 IN  MCH: Daily Action 20 Ether0.000094052
0x5b2f45ec203637a18d6bd3c053445a68438d6f19bd77168ed45777bbdee59443Request Daily Ac...86623812019-10-02 10:46:251153 days 49 mins ago0x9aada3888ed6cb24a097fc8cd741b706972acfb9 IN  MCH: Daily Action 20 Ether0.000093882
0x7a3d5dd40db9487117293c93e78fa9ed97e6cd89ec1ca3831ec3e552c0c78a56Request Daily Ac...86623812019-10-02 10:46:251153 days 49 mins ago0x11603f4e5b0c870e7629a9b86914777ee4642a2c IN  MCH: Daily Action 20 Ether0.000093922
0x71cf69bc41e647c3c1ca43143224328b17634d863e255f092829a94b093a526aRequest Daily Ac...86623812019-10-02 10:46:251153 days 49 mins ago0x7ff253dc413a190c12381485a52b0675e25af69e IN  MCH: Daily Action 20 Ether0.000094052
0xd3c80b01c2278d7f031e57fee8f6af341c52683b3565d08cdd7ecad34095094bRequest Daily Ac...86623812019-10-02 10:46:251153 days 49 mins ago0x98f6b0799ee58145f73e1e503697591a248609ac IN  MCH: Daily Action 20 Ether0.000094052
0x08a291b948ed27da67e41c131340178859ee38f52b264a5440083bef9b6e1dbeRequest Daily Ac...86623762019-10-02 10:44:541153 days 50 mins ago0xa5ccd18df3f4915b470a58cb1dac95b1997aec29 IN  MCH: Daily Action 20 Ether0.000093752
0x1fb7e60b18d9a8314e6db226732bb05c18d50c455118d97fa24ddf162ad5ad18Request Daily Ac...86623752019-10-02 10:44:401153 days 50 mins ago0xe5444781cf5eb33bc14ee5d2eaac2885e42bc1c8 IN  MCH: Daily Action 20 Ether0.000093752
0xc0a021d7639ae02202e627930f81200331c24261be7b95a5eee6a7f1f50ae974Request Daily Ac...86623732019-10-02 10:44:351153 days 50 mins ago0x93adf81af7e80c0c7194d128a126dd121a20dbec IN  MCH: Daily Action 20 Ether0.000094052
0xfbefdd3ed63be1b4c0a0313f44c92d5abb337afcd6d39b036a3dc20b6ccb5906Request Daily Ac...86623732019-10-02 10:44:351153 days 50 mins ago0xfc65fdd1cb0076dacdb9b3704d1c8cc650b056b0 IN  MCH: Daily Action 20 Ether0.000093882
0xb51e23fe0480ddcbec2503e517b3a25578f32d77fb8926743aad2ee1d3bec9beRequest Daily Ac...86623732019-10-02 10:44:351153 days 50 mins ago0x7fc4a0dfe2b4bcfba2b4700c1ef906f9f44d2ae3 IN  MCH: Daily Action 20 Ether0.000093752
0x0a59f1b8caaeaaee159c0de78b284b6a33d482f7878f5258023cba53b6f6db1bRequest Daily Ac...86623732019-10-02 10:44:351153 days 50 mins ago0x90e5591c119414deb108d5f4465d2be30121a8f5 IN  MCH: Daily Action 20 Ether0.000093882
0xc7370c6a09427a0cf6db97edd550b05a8f573b7b06283ed6849209fd06ce1ad1Request Daily Ac...86623692019-10-02 10:42:391153 days 52 mins ago0xbb77383d5eb4eea562eab866e04566b88aefa948 IN  MCH: Daily Action 20 Ether0.000093882
0x5dfc4d979cb6851db4db4b5d7e02409857105a829de7cae0f36ea09da974abe4Request Daily Ac...86623682019-10-02 10:42:111153 days 53 mins ago0x13985b1c57094cafe96122166c297f8990a1f0fc IN  MCH: Daily Action 20 Ether0.000094052
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MCHDailyActionV2

Compiler Version
v0.5.2+commit.1df8f40c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-02-04
*/

pragma solidity 0.5.2;

// File: contracts/lib/github.com/OpenZeppelin/openzeppelin-solidity-2.1.1/contracts/cryptography/ECDSA.sol

/**
 * @title Elliptic curve signature operations
 * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d
 * TODO Remove this library once solidity supports passing a signature to ecrecover.
 * See https://github.com/ethereum/solidity/issues/864
 */

library ECDSA {
    /**
     * @dev Recover signer address from a message by using their signature
     * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.
     * @param signature bytes signature, the signature is generated using web3.eth.sign()
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        bytes32 r;
        bytes32 s;
        uint8 v;

        // Check the signature length
        if (signature.length != 65) {
            return (address(0));
        }

        // Divide the signature in r, s and v variables
        // 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)))
        }

        // Version of signature should be 27 or 28, but 0 and 1 are also possible versions
        if (v < 27) {
            v += 27;
        }

        // If the version is correct return the signer address
        if (v != 27 && v != 28) {
            return (address(0));
        } else {
            return ecrecover(hash, v, r, s);
        }
    }

    /**
     * toEthSignedMessageHash
     * @dev prefix a bytes32 value with "\x19Ethereum Signed Message:"
     * and hash the result
     */
    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));
    }
}

// File: contracts/lib/github.com/OpenZeppelin/openzeppelin-solidity-2.1.1/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @return the address of the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * @notice Renouncing to ownership will leave the contract without an owner.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/lib/github.com/OpenZeppelin/openzeppelin-solidity-2.1.1/contracts/access/Roles.sol

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev give an account access to this role
     */
    function add(Role storage role, address account) internal {
        require(account != address(0));
        require(!has(role, account));

        role.bearer[account] = true;
    }

    /**
     * @dev remove an account's access to this role
     */
    function remove(Role storage role, address account) internal {
        require(account != address(0));
        require(has(role, account));

        role.bearer[account] = false;
    }

    /**
     * @dev check if an account has this role
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0));
        return role.bearer[account];
    }
}

// File: contracts/lib/github.com/OpenZeppelin/openzeppelin-solidity-2.1.1/contracts/access/roles/PauserRole.sol

contract PauserRole {
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor () internal {
        _addPauser(msg.sender);
    }

    modifier onlyPauser() {
        require(isPauser(msg.sender));
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    function addPauser(address account) public onlyPauser {
        _addPauser(account);
    }

    function renouncePauser() public {
        _removePauser(msg.sender);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

// File: contracts/lib/github.com/OpenZeppelin/openzeppelin-solidity-2.1.1/contracts/lifecycle/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is PauserRole {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor () internal {
        _paused = false;
    }

    /**
     * @return true if the contract is paused, false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!_paused);
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(_paused);
        _;
    }

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() public onlyPauser whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

// File: contracts/lib/github.com/OpenZeppelin/openzeppelin-solidity-2.1.1/contracts/math/SafeMath.sol

/**
 * @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);

        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);
        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);
        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);

        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);
        return a % b;
    }
}

// File: contracts/MCHDailyActionV2.sol

contract MCHDailyActionV2 is Ownable, Pausable {
    using SafeMath for uint256;

    uint256 public term;
    address public validater;
    mapping(address => mapping(address => uint256)) public counter;
    mapping(address => uint256) public latestActionTime;

    event Action(
        address indexed user,
        address indexed referrer,
        uint256 at
    );
    
    constructor() public {
        term = 86400 - 600;
    }
    
    function withdrawEther() external onlyOwner() {
        msg.sender.transfer(address(this).balance);
    }

    function setValidater(address _varidater) external onlyOwner() {
        validater = _varidater;
    }

    function updateTerm(uint256 _term) external onlyOwner() {
        term = _term;
    }

    function requestDailyActionReward(bytes calldata _signature, address _referrer) external whenNotPaused() {
        require(!isInTerm(msg.sender), "this sender got daily reward within term");
        uint256 count = getCount(msg.sender);
        require(validateSig(_signature, count), "invalid signature");
        emit Action(
            msg.sender,
            _referrer,
            block.timestamp
        );
        setCount(msg.sender, count + 1);
        latestActionTime[msg.sender] = block.timestamp;
    }

    function isInTerm(address _sender) public view returns (bool) {
        if (latestActionTime[_sender] == 0) {
            return false;
        } else if (block.timestamp >= latestActionTime[_sender].add(term)) {
            return false;
        }
        return true;
    }

    function getCount(address _sender) public view returns (uint256) {
        if (counter[validater][_sender] == 0) {
            return 1;
        }
        return counter[validater][_sender];
    }

    function setCount(address _sender, uint256 _count) private {
        counter[validater][_sender] = _count;
    }

    function validateSig(bytes memory _signature, uint256 _count) private view returns (bool) {
        require(validater != address(0));
        uint256 hash = uint256(msg.sender) * _count;
        address signer = ECDSA.recover(ECDSA.toEthSignedMessageHash(bytes32(hash)), _signature);
        return (signer == validater);
    }

    /* function getAddress(bytes32 hash, bytes memory signature) public pure returns (address) { */
    /*     return ECDSA.recover(ECDSA.toEthSignedMessageHash(hash), signature); */
    /* } */

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_term","type":"uint256"}],"name":"updateTerm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"}],"name":"getCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_referrer","type":"address"}],"name":"requestDailyActionReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"}],"name":"isInTerm","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"term","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_varidater","type":"address"}],"name":"setValidater","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"counter","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"validater","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"latestActionTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"referrer","type":"address"},{"indexed":false,"name":"at","type":"uint256"}],"name":"Action","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040523480156200001157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620000e83362000113640100000000026401000000009004565b6000600260006101000a81548160ff02191690831515021790555062014f28600381905550620002d5565b620001378160016200017d6401000000000262001332179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515620001ba57600080fd5b620001d5828262000240640100000000026401000000009004565b151515620001e257600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200027e57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61157280620002e56000396000f3fe608060405234801561001057600080fd5b5060043610610149576000357c0100000000000000000000000000000000000000000000000000000000900480638bf9d979116100ca578063c14e50ce1161008e578063c14e50ce14610447578063c82fe9b11461048b578063d95b18eb14610503578063f2fde38b1461054d578063f73171f11461059157610149565b80638bf9d979146102c85780638da5cb5b146103615780638f32d59b146103ab578063937adbe6146103cd578063a10ffbed1461042957610149565b80636ef8d66d116101115780636ef8d66d1461025c578063715018a6146102665780637362377b1461027057806382dc1ec41461027a5780638456cb59146102be57610149565b806337c351571461014e5780633f4ba83a1461017c57806346fbf68e146101865780634f0cd27b146101e25780635c975abb1461023a575b600080fd5b61017a6004803603602081101561016457600080fd5b81019080803590602001909291905050506105e9565b005b610184610606565b005b6101c86004803603602081101561019c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106b5565b604051808215151515815260200191505060405180910390f35b610224600480360360208110156101f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106d2565b6040518082815260200191505060405180910390f35b61024261082a565b604051808215151515815260200191505060405180910390f35b610264610841565b005b61026e61084c565b005b61027861091e565b005b6102bc6004803603602081101561029057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610991565b005b6102c66109b1565b005b61035f600480360360408110156102de57600080fd5b81019080803590602001906401000000008111156102fb57600080fd5b82018360208201111561030d57600080fd5b8035906020019184600183028401116401000000008311171561032f57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a61565b005b610369610c69565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b3610c92565b604051808215151515815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce9565b604051808215151515815260200191505060405180910390f35b610431610daa565b6040518082815260200191505060405180910390f35b6104896004803603602081101561045d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db0565b005b6104ed600480360360408110156104a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e07565b6040518082815260200191505060405180910390f35b61050b610e2c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058f6004803603602081101561056357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e52565b005b6105d3600480360360208110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e71565b6040518082815260200191505060405180910390f35b6105f1610c92565b15156105fc57600080fd5b8060038190555050565b61060f336106b5565b151561061a57600080fd5b600260009054906101000a900460ff16151561063557600080fd5b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006106cb826001610e8990919063ffffffff16565b9050919050565b60008060056000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156107835760019050610825565b60056000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b6000600260009054906101000a900460ff16905090565b61084a33610f1d565b565b610854610c92565b151561085f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610926610c92565b151561093157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561098e573d6000803e3d6000fd5b50565b61099a336106b5565b15156109a557600080fd5b6109ae81610f77565b50565b6109ba336106b5565b15156109c557600080fd5b600260009054906101000a900460ff161515156109e157600080fd5b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600260009054906101000a900460ff16151515610a7d57600080fd5b610a8633610ce9565b151515610ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061151f6028913960400191505060405180910390fd5b6000610ae9336106d2565b9050610b3984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505082610fd1565b1515610bad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f696e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f03bee8945a564e58a4243604a426d1168e3654790c5ad819fd04206500e60b36426040518082815260200191505060405180910390a3610c1f33600183016110c1565b42600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610d3b5760009050610da5565b610d8f600354600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461116890919063ffffffff16565b42101515610da05760009050610da5565b600190505b919050565b60035481565b610db8610c92565b1515610dc357600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e5a610c92565b1515610e6557600080fd5b610e6e81611189565b50565b60066020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610ec657600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f3181600161128390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610f8b81600161133290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561103057600080fd5b6000823373ffffffffffffffffffffffffffffffffffffffff16029050600061106461105e836001026113e2565b8661143a565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16149250505092915050565b8060056000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600080828401905083811015151561117f57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156111c557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156112bf57600080fd5b6112c98282610e89565b15156112d457600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561136e57600080fd5b6113788282610e89565b15151561138457600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600080600080604185511415156114575760009350505050611518565b6020850151925060408501519150606085015160001a9050601b8160ff16101561148257601b810190505b601b8160ff161415801561149a5750601c8160ff1614155b156114ab5760009350505050611518565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611508573d6000803e3d6000fd5b5050506020604051035193505050505b9291505056fe746869732073656e64657220676f74206461696c79207265776172642077697468696e207465726da165627a7a72305820146f1cfb6a016889ef3a37330b38dd4c018bd587578235ac0fcbecdf6ca1f1cf0029

Swarm Source

bzzr://146f1cfb6a016889ef3a37330b38dd4c018bd587578235ac0fcbecdf6ca1f1cf
Block Transaction Difficulty Gas Used Reward
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.

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.