ETH Price: $3,335.92 (+0.33%)

Contract

0x2D6c5b9fF886bb4eEFed33b2065366F4caa0e6Fe
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Allocation119626792021-03-03 2:42:561395 days ago1614739376IN
ARCx: WhitelistSale-Phase1
0 ETH0.0067982179.2
Claim Allocation119048272021-02-22 4:57:581404 days ago1613969878IN
ARCx: WhitelistSale-Phase1
0 ETH0.01030176120.00000145
Claim Allocation119047102021-02-22 4:34:041404 days ago1613968444IN
ARCx: WhitelistSale-Phase1
0 ETH0.01133193132
Claim Allocation119044572021-02-22 3:41:131404 days ago1613965273IN
ARCx: WhitelistSale-Phase1
0 ETH0.01493755174
Claim Allocation118998122021-02-21 10:48:561405 days ago1613904536IN
ARCx: WhitelistSale-Phase1
0 ETH0.00927288108
Claim Allocation118968202021-02-20 23:24:411405 days ago1613863481IN
ARCx: WhitelistSale-Phase1
0 ETH0.01725786201.00000156
Claim Allocation118850162021-02-19 3:58:081407 days ago1613707088IN
ARCx: WhitelistSale-Phase1
0 ETH0.01193287139
Claim Allocation118826792021-02-18 19:20:501407 days ago1613676050IN
ARCx: WhitelistSale-Phase1
0 ETH0.01348311157.058
Claim Allocation118825342021-02-18 18:49:201407 days ago1613674160IN
ARCx: WhitelistSale-Phase1
0 ETH0.01296486151
Claim Allocation118822412021-02-18 17:47:311408 days ago1613670451IN
ARCx: WhitelistSale-Phase1
0 ETH0.01793972209
Claim Allocation118818132021-02-18 16:07:421408 days ago1613664462IN
ARCx: WhitelistSale-Phase1
0 ETH0.01656866193
Claim Allocation118815682021-02-18 15:08:371408 days ago1613660917IN
ARCx: WhitelistSale-Phase1
0 ETH0.02034597237
Claim Allocation118815122021-02-18 14:54:501408 days ago1613660090IN
ARCx: WhitelistSale-Phase1
0 ETH0.01382346161.00000145
Claim Allocation118814962021-02-18 14:51:221408 days ago1613659882IN
ARCx: WhitelistSale-Phase1
0 ETH0.01965919229
Claim Allocation118814762021-02-18 14:47:541408 days ago1613659674IN
ARCx: WhitelistSale-Phase1
0 ETH0.01854316216
Claim Allocation118814332021-02-18 14:38:301408 days ago1613659110IN
ARCx: WhitelistSale-Phase1
0 ETH0.01708614199
Claim Allocation118812552021-02-18 13:53:121408 days ago1613656392IN
ARCx: WhitelistSale-Phase1
0 ETH0.01219212142
Claim Allocation118812392021-02-18 13:50:501408 days ago1613656250IN
ARCx: WhitelistSale-Phase1
0 ETH0.0104855148
Claim Allocation118810182021-02-18 13:01:061408 days ago1613653266IN
ARCx: WhitelistSale-Phase1
0 ETH0.01176117137
Claim Allocation118809792021-02-18 12:53:431408 days ago1613652823IN
ARCx: WhitelistSale-Phase1
0 ETH0.01253556146
Claim Allocation118808362021-02-18 12:24:151408 days ago1613651055IN
ARCx: WhitelistSale-Phase1
0 ETH0.0105593123
Claim Allocation118808162021-02-18 12:20:381408 days ago1613650838IN
ARCx: WhitelistSale-Phase1
0 ETH0.01056078123
Claim Allocation118807792021-02-18 12:12:381408 days ago1613650358IN
ARCx: WhitelistSale-Phase1
0 ETH0.012879150
Claim Allocation118807652021-02-18 12:09:501408 days ago1613650190IN
ARCx: WhitelistSale-Phase1
0 ETH0.0103032120
Claim Allocation118807302021-02-18 12:04:361408 days ago1613649876IN
ARCx: WhitelistSale-Phase1
0 ETH0.01227635143.0011
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:
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

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b1461013b57806399288dbb14610150578063c5c4744c14610165578063d18d944b1461016d578063e5a6b10f14610180578063f2fde38b14610195576100b4565b806309e69ede146100b95780630a088949146100e35780633102b21a146100f857806345d0c7551461010b57806367a3eb651461011e578063715018a614610133575b600080fd5b6100cc6100c73660046107fb565b6101a8565b6040516100da929190610cba565b60405180910390f35b6100f66100f1366004610891565b6101c1565b005b6100f6610106366004610821565b610266565b6100f66101193660046108cd565b610386565b6101266104b6565b6040516100da9190610cac565b6100f66104bc565b610143610530565b6040516100da9190610ba1565b61015861053f565b6040516100da9190610c00565b610126610548565b6100f661017b3660046108cd565b61054e565b6101886105ad565b6040516100da9190610c0e565b6100f66101a33660046107fb565b6105bc565b6002602052600090815260409020805460019091015482565b6000546001600160a01b031633146101f45760405162461bcd60e51b81526004016101eb90610c7c565b60405180910390fd5b60055460ff161515811515141561021d5760405162461bcd60e51b81526004016101eb90610c8c565b6005805460ff19168215151790556040517fc75413bb803e9f5f8572b10a8262838386a1bc5db1743ff399db4f5c32f4691e9061025b908390610c00565b60405180910390a150565b6000546001600160a01b031633146102905760405162461bcd60e51b81526004016101eb90610c7c565b8281146102af5760405162461bcd60e51b81526004016101eb90610c1c565b60005b8381101561037f578282828181106102c657fe5b90506020020135600260008787858181106102dd57fe5b90506020020160206102f291908101906107fb565b6001600160a01b031681526020810191909152604001600020557fedfc909d0ab2a1625b7911d925efbd8200cdd99d4c7ba44e720328b17879f0b385858381811061033957fe5b905060200201602061034e91908101906107fb565b84848481811061035a57fe5b9050602002013560405161036f929190610bf2565b60405180910390a16001016102b2565b5050505050565b336000908152600260205260408120600101546103a9908363ffffffff61066716565b905060006103c28360045461066790919063ffffffff16565b336000908152600260205260409020549091508211156103f45760405162461bcd60e51b81526004016101eb90610c4c565b60055460ff166104165760405162461bcd60e51b81526004016101eb90610c5c565b6003548111156104385760405162461bcd60e51b81526004016101eb90610c9c565b33600081815260026020526040902060010183905560048290556104789061045e610530565b6001546001600160a01b031691908663ffffffff61069516565b7f1747857504b94e5be51b1fe4b467e5d2daa63a0d21577089a13fa99f9414dcc833846040516104a9929190610baf565b60405180910390a1505050565b60035481565b6000546001600160a01b031633146104e65760405162461bcd60e51b81526004016101eb90610c7c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60055460ff1681565b60045481565b6000546001600160a01b031633146105785760405162461bcd60e51b81526004016101eb90610c7c565b60038190556040517f898844af0a81a679f78c4e9bcc92363a6d161c41eb2398e0cf0196c156d05e8d9061025b908390610cac565b6001546001600160a01b031681565b6000546001600160a01b031633146105e65760405162461bcd60e51b81526004016101eb90610c7c565b6001600160a01b03811661060c5760405162461bcd60e51b81526004016101eb90610c2c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008282018381101561068c5760405162461bcd60e51b81526004016101eb90610c3c565b90505b92915050565b60006060856001600160a01b03166323b872dd8686866040516024016106bd93929190610bca565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516106f69190610b8e565b6000604051808303816000865af19150503d8060008114610733576040519150601f19603f3d011682016040523d82523d6000602084013e610738565b606091505b509150915081801561076257508051158061076257508080602001905161076291908101906108af565b61077e5760405162461bcd60e51b81526004016101eb90610c6c565b505050505050565b803561068f81610d3b565b60008083601f8401126107a357600080fd5b50813567ffffffffffffffff8111156107bb57600080fd5b6020830191508360208202830111156107d357600080fd5b9250929050565b803561068f81610d52565b805161068f81610d52565b803561068f81610d5b565b60006020828403121561080d57600080fd5b60006108198484610786565b949350505050565b6000806000806040858703121561083757600080fd5b843567ffffffffffffffff81111561084e57600080fd5b61085a87828801610791565b9450945050602085013567ffffffffffffffff81111561087957600080fd5b61088587828801610791565b95989497509550505050565b6000602082840312156108a357600080fd5b600061081984846107da565b6000602082840312156108c157600080fd5b600061081984846107e5565b6000602082840312156108df57600080fd5b600061081984846107f0565b6108f481610cf9565b82525050565b6108f481610cda565b6108f481610ce5565b600061091782610cc8565b6109218185610ccc565b9350610931818560208601610d0b565b9290920192915050565b6108f481610d00565b6000610951602283610cd1565b7f54686520757365727320616e6420616d6f756e747320646f206e6f74206d61748152610c6d60f31b602082015260400192915050565b6000610995602683610cd1565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006109dd601b83610cd1565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000610a16602a83610cd1565b7f596f752063616e6e6f74207370656e64206d6f7265207468616e20796f75722081526930b63637b1b0ba34b7b760b11b602082015260400192915050565b6000610a62601e83610cd1565b7f5468652073616c65206973206e6f742063757272656e746c79206f70656e0000815260200192915050565b6000610a9b601f83610cd1565b7f5361666545524332303a205452414e534645525f46524f4d5f4641494c454400815260200192915050565b6000610ad4602083610cd1565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000610b0d601d83610cd1565b7f43616e6e6f742072652d736574207468652073616d6520737461747573000000815260200192915050565b6000610b46602a83610cd1565b7f596f752063616e6e6f74207075726368617365206d6f7265207468616e2074688152690652068617264206361760b41b602082015260400192915050565b6108f481610cf6565b6000610b9a828461090c565b9392505050565b6020810161068f82846108fa565b60408101610bbd82856108eb565b610b9a6020830184610b85565b60608101610bd882866108fa565b610be560208301856108fa565b6108196040830184610b85565b60408101610bbd82856108fa565b6020810161068f8284610903565b6020810161068f828461093b565b6020808252810161068f81610944565b6020808252810161068f81610988565b6020808252810161068f816109d0565b6020808252810161068f81610a09565b6020808252810161068f81610a55565b6020808252810161068f81610a8e565b6020808252810161068f81610ac7565b6020808252810161068f81610b00565b6020808252810161068f81610b39565b6020810161068f8284610b85565b60408101610bbd8285610b85565b5190565b919050565b90815260200190565b600061068f82610cea565b151590565b6001600160a01b031690565b90565b600061068f825b600061068f82610cda565b60005b83811015610d26578181015183820152602001610d0e565b83811115610d35576000848401525b50505050565b610d4481610cda565b8114610d4f57600080fd5b50565b610d4481610ce5565b610d4481610cf656fea365627a7a7231582080cdad1570d0f45a0af73cde729db03841fe33630a8d2ebad3a3b506a62097836c6578706572696d656e74616cf564736f6c63430005100040

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

000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

-----Decoded View---------------
Arg [0] : currencyAddress (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48


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.