Contract 0xF2057de81Eb26C09d4421Cb6B0C222b9a656f8f3

ARCx 
 
 
Txn Hash
Method
Block
From
To
Value
0xc7b787dbf5a17ac3cff327f40aeee78fe878a2d6f7a36865177c794959d89b89Claim Allocation127766742021-07-06 22:47:24406 days 9 hrs ago0x9ed629bc305c5731d43de27cbbe8f77976893c2b IN  ARCx: WhitelistSale-Phase20 Ether0.‍0041269959.‍4
0x01fc718384cf33568a6ab941428b0384ae19d8a53613272bf13b78e51dc3efc2Claim Allocation120777022021-03-20 19:51:37514 days 11 hrs ago0x391891af67e29d97e61e30c3036a0874f5da411e IN  ARCx: WhitelistSale-Phase20 Ether0.‍00615528123.‍6
0x95761dd5e857229753266226a5f69c1781bf23d7e6b0c8efd2b674eded0ed078Claim Allocation120708802021-03-19 18:36:04515 days 13 hrs agoENS Name trufflepig.eth IN  ARCx: WhitelistSale-Phase20 Ether0.‍0086154173
0x7534cfd825b6f271e4f77889a5a0328b056a082a286e99331d70ac17cbd7250eClaim Allocation120619862021-03-18 10:04:26516 days 21 hrs ago0x9525603189bc828b3af9de9454a79d9566e6e2fb IN  ARCx: WhitelistSale-Phase20 Ether0.‍010629150
0xfa9f840629781b580f489128870fc13d936d8a235f2c897cf38d405a4e0c83f4Claim Allocation120426792021-03-15 10:40:29519 days 21 hrs ago0x156d27e5248efe83ccf74d934fc396e03f7685be IN  ARCx: WhitelistSale-Phase20 Ether0.‍01098144155
0x638806ad798301f2f1bd38a85b15b92ff3e9ea570d427853726379e1c043ec89Claim Allocation120393582021-03-14 22:12:45520 days 9 hrs agoGlobal Coin Research: Deployer IN  ARCx: WhitelistSale-Phase20 Ether0.‍01407907164
0xffac4feb29e454ecc3ad44604f913b1a6cb005214358c35975318ed4f4a14096Claim Allocation120375982021-03-14 15:50:05520 days 15 hrs ago0xc102d21da143cb144bbdc4693553a850cf73ca5f IN  ARCx: WhitelistSale-Phase20 Ether0.‍01365174159
0x71c5202399faa71beafcafe2cce76a3f637fab7099b082f3a130e72072f2343fClaim Allocation120347702021-03-14 5:23:05521 days 2 hrs ago0x9abbed91fac6e71977258fa8aa949c9bd874f4de IN  ARCx: WhitelistSale-Phase20 Ether0.‍00569649102
0x74b0922c990c086d444e4cdea1bc589c55a17863930ebf7423430419daddadc6Claim Allocation120347682021-03-14 5:22:35521 days 2 hrs ago0x7e346f31a13d0a142885ff1a9494829947b48372 IN  ARCx: WhitelistSale-Phase20 Ether0.‍010731125
0x17bc0f86fc21d9b58f1822a1bb4883fafda743f0febff3731f5b0a2cc786d8a6Claim Allocation120342842021-03-14 3:35:23521 days 4 hrs ago0xdaf6f97e24b4071c475ff2a46b258c207ffb5392 IN  ARCx: WhitelistSale-Phase20 Ether0.‍01055782123
0x62facfb11b2a29808fa55e24bcbb612f8faa26a806bdb0fe422adf168d9b8ef3Claim Allocation120342772021-03-14 3:34:05521 days 4 hrs ago0x3ef7f258816f6e2868566276647e3776616cbf4d IN  ARCx: WhitelistSale-Phase20 Ether0.‍00970617137
0x7254d9f2c2ff4c32b67f452a3caa1a39b6b97eddb251d6f7f0f16a6ce89ac727Claim Allocation120342592021-03-14 3:28:32521 days 4 hrs ago0x5f945c3682e1e0b95ad17d9a9836ff3f6c266ea9 IN  ARCx: WhitelistSale-Phase20 Ether0.‍01116024130
0xdbda52e4177dbaf598812d0c77cd93a6b202d2a0d813561aa3a76e9a89ea8419Claim Allocation120332302021-03-13 23:40:12521 days 8 hrs ago0x7b6d03eda08626bbff1abdf1340b999670e1fc28 IN  ARCx: WhitelistSale-Phase20 Ether0.‍00970617137
0xc82f73e9166adf9386b97769888e8cd1711f3861838f5bc0a7c235e76e484a2fClaim Allocation120332052021-03-13 23:33:30521 days 8 hrs ago0x36f22f65a3476f42f6ae813da097dd471fcadeb1 IN  ARCx: WhitelistSale-Phase20 Ether0.‍0088575125
0xb3a34eff7415c17567f4ce53ad227a584f04710bd1b6644d4c646f0b63f4dca2Claim Allocation120317052021-03-13 17:47:19521 days 14 hrs ago0xc1fc118d52e4bc0a257f6744c77a611ad09f7777 IN  ARCx: WhitelistSale-Phase20 Ether0.‍01076889152
0x6fd88bd91d35dada0d3652ecbbfad88ae1b7e22e11bb788adfb63ebe3f3b30f9Claim Allocation120313632021-03-13 16:36:55521 days 15 hrs ago0x36f22f65a3476f42f6ae813da097dd471fcadeb1 IN  ARCx: WhitelistSale-Phase20 Ether0.‍0094962170
0xe0938bfc97e45ea024b362b5e9305d84d90904e742fb7df0bcbd819941fa92b4Claim Allocation120313312021-03-13 16:28:21521 days 15 hrs ago0xfbdd5c349d1686d7b15b27f47217c55fe93d2bfc IN  ARCx: WhitelistSale-Phase20 Ether0.‍01204416170
0x350df9d3681136bd25545b8171734285cda59f6112b4da64da90026fdc39ea20Claim Allocation120305492021-03-13 13:43:18521 days 18 hrs ago0x678fb21b9736e6c7da9f7d37a77ab766bb2519c7 IN  ARCx: WhitelistSale-Phase20 Ether0.‍0088575125
0xd2f1d4a4fb7c02c7e63258c15129af71b8b42588c41ec36f80eeacdae777aa49Claim Allocation120298452021-03-13 11:08:18521 days 20 hrs agoENS Name peachmint.eth IN  ARCx: WhitelistSale-Phase20 Ether0.‍01261308178
0x0ccab26b156ff39bb9618c8a1411b894d0b42cbfeba71b25a4279d1d615f65edClaim Allocation120297702021-03-13 10:52:52521 days 20 hrs ago0x851af2731e1fb915e95f0b84d472faf44bd3583b IN  ARCx: WhitelistSale-Phase20 Ether0.‍01091059154
0x5a0db9b2c25f087aacd28e79b4650555a77e0c0f91f84b377e05e3d576744b0fClaim Allocation120295372021-03-13 10:01:35521 days 21 hrs ago0xd6e6a9d952f56e48462092bbadab346e95e987a4 IN  ARCx: WhitelistSale-Phase20 Ether0.‍00928266131
0x52b123624c7ee772fe89acc5a01aea3b868e999451ed6a37de6a2dac72275ffeClaim Allocation120292372021-03-13 8:55:14521 days 22 hrs ago0x7cd7a5a66d3cd2f13559d7f8a052fa6014e07d35 IN  ARCx: WhitelistSale-Phase20 Ether0.‍0109833155
0x532a56b2df9a2727469bb0570d1ef7bb074dac181828a066f5ba23c5518b3e40Claim Allocation120291312021-03-13 8:33:56521 days 23 hrs ago0x8be8247ef3a329b06cf3ce3d5b8ad3ca3ed642c0 IN  ARCx: WhitelistSale-Phase20 Ether0.‍00758202107
0xae4ea51df6b8b8f48c9f83640a703e8a7df1f9720206946fed09b134d11d0fa4Claim Allocation120284382021-03-13 6:07:23522 days 1 hr ago0x7cd7a5a66d3cd2f13559d7f8a052fa6014e07d35 IN  ARCx: WhitelistSale-Phase20 Ether0.‍00970082113
0x4dec5de6bb5931d1e416161d55c8eb2ee256142ec794b60e84af2c9028ebd7e1Claim Allocation120278192021-03-13 3:46:53522 days 4 hrs ago0xdd4a7cc4092515c130667c1bfd53be0de91062c5 IN  ARCx: WhitelistSale-Phase20 Ether0.‍00984954139
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x578823A0c9551c20Bd3A516727d3DdBdDcb4023C

Contract Name:
WhitelistSale

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : WhitelistSale.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

import {Ownable} from "../lib/Ownable.sol";
import {SafeMath} from "../lib/SafeMath.sol";
import {SafeERC20} from "../lib/SafeERC20.sol";

import {IERC20} from "../token/IERC20.sol";

contract WhitelistSale is Ownable {

    /* ========== Libraries ========== */

    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    /* ========== Struct ========== */

    struct Participant {
        uint256 allocation;
        uint256 spent;
    }

    /* ========== Variables ========== */

    IERC20 public currency;

    mapping (address => Participant) public participants;

    uint256 public totalHardCap;

    uint256 public totalRaised;

    bool public saleOpen;

    /* ========== Events ========== */

    event AllocationClaimed(address user, uint256 amount);

    event AllocationSet(address user, uint256 amount);

    event SaleStatusUpdated(bool status);

    event HardCapUpdated(uint256 amount);

    /* ========== Constructor ========== */

    constructor(address currencyAddress) public {
        currency = IERC20(currencyAddress);
        saleOpen = false;
    }

    /* ========== Public Functions ========== */

    function claimAllocation(
        uint256 amount
    )
        external
    {
        // Get their total spend till date
        uint256 participantSpent = participants[msg.sender].spent.add(amount);

        uint256 newTotalRaised = totalRaised.add(amount);

        require(
            participantSpent <= participants[msg.sender].allocation,
            "You cannot spend more than your allocation"
        );

        require(
            saleOpen,
            "The sale is not currently open"
        );

        require(
            newTotalRaised <= totalHardCap,
            "You cannot purchase more than the hard cap"
        );

        // Increase the user's spend amount otherwise they can keep purchasing
        participants[msg.sender].spent = participantSpent;

        totalRaised = newTotalRaised;

        // Transfer the funds to the owner, no funds will be stored in this contract directly.
        currency.safeTransferFrom(
            msg.sender,
            owner(),
            amount
        );

        emit AllocationClaimed(msg.sender, amount);
    }

    /* ========== Admin Functions ========== */

    function setHardCap(uint256 amount)
        external
        onlyOwner
    {
        totalHardCap = amount;

        emit HardCapUpdated(amount);
    }

    function setAllocation(
        address[] calldata users,
        uint256[] calldata allocations
    )
        external
        onlyOwner
    {
        // If there is a mismatch something hasn't been done correctly
        require(
            users.length == allocations.length,
            "The users and amounts do not match"
        );

        for (uint256 i = 0; i < users.length; i++) {
            participants[users[i]].allocation = allocations[i];

            emit AllocationSet(users[i], allocations[i]);
        }
    }

    function updateSaleStatus(
        bool status
    )
        external
        onlyOwner
    {
        require(
            saleOpen != status,
            "Cannot re-set the same status"
        );

        saleOpen = status;

        emit SaleStatusUpdated(status);
    }
}

File 2 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.5.16;

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 3 of 5 : SafeMath.sol
pragma solidity ^0.5.16;

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {

        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
}

File 4 of 5 : SafeERC20.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.5.16;

import {IERC20} from "../token/IERC20.sol";

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library SafeERC20 {
    function safeApprove(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        /* solium-disable-next-line */
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(0x095ea7b3, to, value)
        );

        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "SafeERC20: APPROVE_FAILED"
        );
    }

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        /* solium-disable-next-line */
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(0xa9059cbb, to, value)
        );

        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "SafeERC20: TRANSFER_FAILED"
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        /* solium-disable-next-line */
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(
                0x23b872dd,
                from,
                to,
                value
            )
        );

        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "SafeERC20: TRANSFER_FROM_FAILED"
        );
    }
}

File 5 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.5.16;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(
        address recipient,
        uint256 amount
    )
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(
        address owner,
        address spender
    )
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(
        address spender,
        uint256 amount
    )
        external
        returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    )
        external
        returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 value
    );

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"currencyAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AllocationClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AllocationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"HardCapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SaleStatusUpdated","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimAllocation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currency","outputs":[{"internalType":"contract IERC20","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":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"participants","outputs":[{"internalType":"uint256","name":"allocation","type":"uint256"},{"internalType":"uint256","name":"spent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"saleOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"allocations","type":"uint256[]"}],"name":"setAllocation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHardCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalHardCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":false,"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"updateSaleStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610eb2380380610eb283398101604081905261002f916100ae565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b0319166001600160a01b03929092169190911790556005805460ff191690556100fc565b80516100a8816100e5565b92915050565b6000602082840312156100c057600080fd5b60006100cc848461009d565b949350505050565b60006001600160a01b0382166100a8565b6100ee816100d4565b81146100f957600080fd5b50565b610da78061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b1461013b57806399288dbb14610150578063c5c4744c14610165578063d18d944b1461016d578063e5a6b10f14610180578063f2fde38b14610195576100b4565b806309e69ede146100b95780630a088949146100e35780633102b21a146100f857806345d0c7551461010b57806367a3eb651461011e578063715018a614610133575b600080fd5b6100cc6100c73660046107fb565b6101a8565b6040516100da929190610cba565b60405180910390f35b6100f66100f1366004610891565b6101c1565b005b6100f6610106366004610821565b610266565b6100f66101193660046108cd565b610386565b6101266104b6565b6040516100da9190610cac565b6100f66104bc565b610143610530565b6040516100da9190610ba1565b61015861053f565b6040516100da9190610c00565b610126610548565b6100f661017b3660046108cd565b61054e565b6101886105ad565b6040516100da9190610c0e565b6100f66101a33660046107fb565b6105bc565b6002602052600090815260409020805460019091015482565b6000546001600160a01b031633146101f45760405162461bcd60e51b81526004016101eb90610c7c565b60405180910390fd5b60055460ff161515811515141561021d5760405162461bcd60e51b81526004016101eb90610c8c565b6005805460ff19168215151790556040517fc75413bb803e9f5f8572b10a8262838386a1bc5db1743ff399db4f5c32f4691e9061025b908390610c00565b60405180910390a150565b6000546001600160a01b031633146102905760405162461bcd60e51b81526004016101eb90610c7c565b8281146102af5760405162461bcd60e51b81526004016101eb90610c1c565b60005b8381101561037f578282828181106102c657fe5b90506020020135600260008787858181106102dd57fe5b90506020020160206102f291908101906107fb565b6001600160a01b031681526020810191909152604001600020557fedfc909d0ab2a1625b7911d925efbd8200cdd99d4c7ba44e720328b17879f0b385858381811061033957fe5b905060200201602061034e91908101906107fb565b84848481811061035a57fe5b9050602002013560405161036f929190610bf2565b60405180910390a16001016102b2565b5050505050565b336000908152600260205260408120600101546103a9908363ffffffff61066716565b905060006103c28360045461066790919063ffffffff16565b336000908152600260205260409020549091508211156103f45760405162461bcd60e51b81526004016101eb90610c4c565b60055460ff166104165760405162461bcd60e51b81526004016101eb90610c5c565b6003548111156104385760405162461bcd60e51b81526004016101eb90610c9c565b33600081815260026020526040902060010183905560048290556104789061045e610530565b6001546001600160a01b031691908663ffffffff61069516565b7f1747857504b94e5be51b1fe4b467e5d2daa63a0d21577089a13fa99f9414dcc833846040516104a9929190610baf565b60405180910390a1505050565b60035481565b6000546001600160a01b031633146104e65760405162461bcd60e51b81526004016101eb90610c7c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60055460ff1681565b60045481565b6000546001600160a01b031633146105785760405162461bcd60e51b81526004016101eb90610c7c565b60038190556040517f898844af0a81a679f78c4e9bcc92363a6d161c41eb2398e0cf0196c156d05e8d9061025b908390610cac565b6001546001600160a01b031681565b6000546001600160a01b031633146105e65760405162461bcd60e51b81526004016101eb90610c7c565b6001600160a01b03811661060c5760405162461bcd60e51b81526004016101eb90610c2c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008282018381101561068c5760405162461bcd60e51b81526004016101eb90610c3c565b90505b92915050565b60006060856001600160a01b03166323b872dd8686866040516024016106bd93929190610bca565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516106f69190610b8e565b6000604051808303816000865af19150503d8060008114610733576040519150601f19603f3d011682016040523d82523d6000602084013e610738565b606091505b509150915081801561076257508051158061076257508080602001905161076291908101906108af565b61077e5760405162461bcd60e51b81526004016101eb90610c6c565b505050505050565b803561068f81610d3b565b60008083601f8401126107a357600080fd5b50813567ffffffffffffffff8111156107bb57600080fd5b6020830191508360208202830111156107d357600080fd5b9250929050565b803561068f81610d52565b805161068f81610d52565b803561068f81610d5b565b60006020828403121561080d57600080fd5b60006108198484610786565b949350505050565b6000806000806040858703121561083757600080fd5b843567ffffffffffffffff81111561084e57600080fd5b61085a87828801610791565b9450945050602085013567ffffffffffffffff81111561087957600080fd5b61088587828801610791565b95989497509550505050565b6000602082840312156108a357600080fd5b600061081984846107da565b6000602082840312156108c157600080fd5b600061081984846107e5565b6000602082840312156108df57600080fd5b600061081984846107f0565b6108f481610cf9565b82525050565b6108f481610cda565b6108f481610ce5565b600061091782610cc8565b6109218185610ccc565b9350610931818560208601610d0b565b9290920192915050565b6108f481610d00565b6000610951602283610cd1565b7f54686520757365727320616e6420616d6f756e747320646f206e6f74206d61748152610c6d60f31b602082015260400192915050565b6000610995602683610cd1565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006109dd601b83610cd1565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000610a16602a83610cd1565b7f596f752063616e6e6f74207370656e64206d6f7265207468616e20796f75722081526930b63637b1b0ba34b7b760b11b602082015260400192915050565b6000610a62601e83610cd1565b7f5468652073616c65206973206e6f742063757272656e746c79206f70656e0000815260200192915050565b6000610a9b601f83610cd1565b7f5361666545524332303a205452414e534645525f46524f4d5f4641494c454400815260200192915050565b6000610ad4602083610cd1565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000610b0d601d83610cd1565b7f43616e6e6f742072652d736574207468652073616d6520737461747573000000815260200192915050565b6000610b46602a83610cd1565b7f596f752063616e6e6f74207075726368617365206d6f7265207468616e2074688152690652068617264206361760b41b602082015260400192915050565b6108f481610cf6565b6000610b9a828461090c565b9392505050565b6020810161068f82846108fa565b60408101610bbd82856108eb565b610b9a6020830184610b85565b60608101610bd882866108fa565b610be560208301856108fa565b6108196040830184610b85565b60408101610bbd82856108fa565b6020810161068f8284610903565b6020810161068f828461093b565b6020808252810161068f81610944565b6020808252810161068f81610988565b6020808252810161068f816109d0565b6020808252810161068f81610a09565b6020808252810161068f81610a55565b6020808252810161068f81610a8e565b6020808252810161068f81610ac7565b6020808252810161068f81610b00565b6020808252810161068f81610b39565b6020810161068f8284610b85565b60408101610bbd8285610b85565b5190565b919050565b90815260200190565b600061068f82610cea565b151590565b6001600160a01b031690565b90565b600061068f825b600061068f82610cda565b60005b83811015610d26578181015183820152602001610d0e565b83811115610d35576000848401525b50505050565b610d4481610cda565b8114610d4f57600080fd5b50565b610d4481610ce5565b610d4481610cf656fea365627a7a7231582080cdad1570d0f45a0af73cde729db03841fe33630a8d2ebad3a3b506a62097836c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

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.