ETH Price: $1,588.99 (+0.33%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer187408682023-12-08 10:12:59497 days ago1702030379IN
0x676917c7...90656410d
0.2 ETH0.0047062841.06993412
Transfer187328952023-12-07 7:21:35498 days ago1701933695IN
0x676917c7...90656410d
0.17 ETH0.0037590332.80361196
Transfer187326792023-12-07 6:37:59498 days ago1701931079IN
0x676917c7...90656410d
0.1 ETH0.0038548833.64004662
Transfer187316722023-12-07 3:15:11498 days ago1701918911IN
0x676917c7...90656410d
0.2 ETH0.0037098732.37466841
Transfer187295292023-12-06 20:03:11499 days ago1701892991IN
0x676917c7...90656410d
0.19 ETH0.0082377271.88745083
Transfer187283852023-12-06 16:10:59499 days ago1701879059IN
0x676917c7...90656410d
0.2 ETH0.0083009172.43891058
Transfer187279432023-12-06 14:40:59499 days ago1701873659IN
0x676917c7...90656410d
0.2 ETH0.0068481659.76124051
Transfer187277012023-12-06 13:51:11499 days ago1701870671IN
0x676917c7...90656410d
0.2 ETH0.0063416455.34105257
Transfer187273652023-12-06 12:43:47499 days ago1701866627IN
0x676917c7...90656410d
0.2 ETH0.0064473256.2632766
Transfer187264652023-12-06 9:43:23499 days ago1701855803IN
0x676917c7...90656410d
4 ETH0.005094944.46125568
Transfer187259372023-12-06 7:57:11499 days ago1701849431IN
0x676917c7...90656410d
0.2 ETH0.0057452750.13681665
Transfer187227522023-12-05 21:13:59500 days ago1701810839IN
0x676917c7...90656410d
0.22 ETH0.0069479460.63200815
Transfer187225592023-12-05 20:35:23500 days ago1701808523IN
0x676917c7...90656410d
1 ETH0.0067213658.65472084
Transfer187211852023-12-05 15:58:11500 days ago1701791891IN
0x676917c7...90656410d
3 ETH0.0075234165.65397129
Transfer187194132023-12-05 10:00:35500 days ago1701770435IN
0x676917c7...90656410d
2 ETH0.005075744.29375134
Transfer187186792023-12-05 7:33:11500 days ago1701761591IN
0x676917c7...90656410d
1.5 ETH0.0035273843.87726733
Transfer187155152023-12-04 20:54:35501 days ago1701723275IN
0x676917c7...90656410d
0.5 ETH0.0084158273.44167279
Transfer187152512023-12-04 20:01:23501 days ago1701720083IN
0x676917c7...90656410d
1 ETH0.0059904252.2760972
Transfer187145612023-12-04 17:43:11501 days ago1701711791IN
0x676917c7...90656410d
2 ETH0.0049313343.03389319
Transfer187141792023-12-04 16:25:59501 days ago1701707159IN
0x676917c7...90656410d
1.03 ETH0.0052177545.53335383
Transfer187084512023-12-03 21:11:11502 days ago1701637871IN
0x676917c7...90656410d
5 ETH0.003899234.02681725
Transfer187084472023-12-03 21:10:23502 days ago1701637823IN
0x676917c7...90656410d
5 ETH0.0039570934.53206844
Transfer187082412023-12-03 20:28:47502 days ago1701635327IN
0x676917c7...90656410d
2 ETH0.0063888455.75296841
Transfer187066272023-12-03 15:02:47502 days ago1701615767IN
0x676917c7...90656410d
0.5 ETH0.0048128241.99966554
Transfer187062162023-12-03 13:39:35502 days ago1701610775IN
0x676917c7...90656410d
5 ETH0.0033906429.58888871
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer187408682023-12-08 10:12:59497 days ago1702030379
0x676917c7...90656410d
0.2 ETH
Transfer187328952023-12-07 7:21:35498 days ago1701933695
0x676917c7...90656410d
0.17 ETH
Transfer187326792023-12-07 6:37:59498 days ago1701931079
0x676917c7...90656410d
0.1 ETH
Transfer187316722023-12-07 3:15:11498 days ago1701918911
0x676917c7...90656410d
0.2 ETH
Transfer187295292023-12-06 20:03:11499 days ago1701892991
0x676917c7...90656410d
0.19 ETH
Transfer187283852023-12-06 16:10:59499 days ago1701879059
0x676917c7...90656410d
0.2 ETH
Transfer187279432023-12-06 14:40:59499 days ago1701873659
0x676917c7...90656410d
0.2 ETH
Transfer187277012023-12-06 13:51:11499 days ago1701870671
0x676917c7...90656410d
0.2 ETH
Transfer187273652023-12-06 12:43:47499 days ago1701866627
0x676917c7...90656410d
0.2 ETH
Transfer187264652023-12-06 9:43:23499 days ago1701855803
0x676917c7...90656410d
4 ETH
Transfer187259372023-12-06 7:57:11499 days ago1701849431
0x676917c7...90656410d
0.2 ETH
Transfer187227522023-12-05 21:13:59500 days ago1701810839
0x676917c7...90656410d
0.22 ETH
Transfer187225592023-12-05 20:35:23500 days ago1701808523
0x676917c7...90656410d
1 ETH
Transfer187211852023-12-05 15:58:11500 days ago1701791891
0x676917c7...90656410d
3 ETH
Transfer187194132023-12-05 10:00:35500 days ago1701770435
0x676917c7...90656410d
2 ETH
Transfer187186792023-12-05 7:33:11500 days ago1701761591
0x676917c7...90656410d
1.5 ETH
Transfer187155152023-12-04 20:54:35501 days ago1701723275
0x676917c7...90656410d
0.5 ETH
Transfer187152512023-12-04 20:01:23501 days ago1701720083
0x676917c7...90656410d
1 ETH
Transfer187145612023-12-04 17:43:11501 days ago1701711791
0x676917c7...90656410d
2 ETH
Transfer187141792023-12-04 16:25:59501 days ago1701707159
0x676917c7...90656410d
1.03 ETH
Transfer187084512023-12-03 21:11:11502 days ago1701637871
0x676917c7...90656410d
5 ETH
Transfer187084472023-12-03 21:10:23502 days ago1701637823
0x676917c7...90656410d
5 ETH
Transfer187082412023-12-03 20:28:47502 days ago1701635327
0x676917c7...90656410d
2 ETH
Transfer187066272023-12-03 15:02:47502 days ago1701615767
0x676917c7...90656410d
0.5 ETH
Transfer187062162023-12-03 13:39:35502 days ago1701610775
0x676917c7...90656410d
5 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GarbageSale

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 5 : GarbageSale.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.22;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Pausable.sol";
import "src/interfaces/IChainLinkPriceFeed.sol";

contract GarbageSale is Pausable, Ownable {
    struct User {
        uint256 ethSpent;
        uint256 tokensPurchased;
    }

    IChainLinkPriceFeed public immutable priceFeed;// Address of ChainLink ETH/USD price feed

    uint256 public saleLimit;// Total amount of tokens to be sold
    uint256 public tokenPrice;// Price for single token in USD
    uint256 public totalTokensSold;// Total amount of purchased tokens

    mapping(address => User) public users;// Stores the number of tokens purchased by each user and their claim status

    event TokensPurchased(
        address indexed user,
        uint256 indexed tokensAmount,
        uint256 indexed currentEthPrice
    );

    error ZeroPriceFeedAddress();
    error WrongOracleData();
    error TooLowValue();
    error PerWalletLimitExceeded(uint256 remainingLimit);
    error SaleLimitExceeded(uint256 remainingLimit);
    error NotEnoughEthOnContract();
    error EthSendingFailed();

    /*
        @notice Sets up contract while deploying
        @param _saleToken: Token address
        @param _oracle: ChainLink ETH/USD oracle address
        @param _usdPrice: USD price for single token
        @param _saleLimit: Total amount of tokens to be sold during sale
    **/
    constructor(
        address _priceFeed,
        uint256 _usdPrice,
        uint256 _saleLimit,
        address owner
    ) Ownable(owner) {
        if (_priceFeed == address(0)) revert ZeroPriceFeedAddress();

        priceFeed = IChainLinkPriceFeed(_priceFeed);
        saleLimit = _saleLimit * 1e18;

        tokenPrice = _usdPrice;
    }

    /// @notice Pausing sale
    function pause() external onlyOwner {
        _pause();
    }

    /// @notice Unpausing sale
    function unpause() external onlyOwner {
        _unpause();
    }

    /*
        @notice Function for receiving ether
        @dev amount of tokens will be calculated from received value
    **/
    receive() external payable {
        if (msg.value < 0.1 ether) revert TooLowValue();
        uint256 remainingLimit =  5 ether - users[msg.sender].ethSpent;
        if (remainingLimit < msg.value) revert PerWalletLimitExceeded(remainingLimit);

        (uint256 ethPrice, uint256 tokensAmount) = convertETHToTokensAmount(msg.value);

        if (tokensAmount + totalTokensSold > saleLimit) revert SaleLimitExceeded(saleLimit - totalTokensSold);

        totalTokensSold += tokensAmount;
        users[msg.sender].tokensPurchased += tokensAmount;
        users[msg.sender].ethSpent += msg.value;

        (bool success, ) = payable(owner()).call{ value: msg.value }("");
        if (!success) revert EthSendingFailed();

        emit TokensPurchased(msg.sender, ethPrice, tokensAmount);
    }

    /*
        @notice Function for converting eth amount to equal tokens amount
        @param _ethAmount: Amount of eth to calculate
        @return ethPrice: Current eth price in usdt
        @return tokensAmount: Amount of tokens
    **/
    function convertETHToTokensAmount(uint256 _ethAmount) public view returns (uint256 ethPrice, uint256 tokensAmount) {
        (uint80 roundID, int256 price, , uint256 updatedAt, uint80 answeredInRound) = priceFeed.latestRoundData();
        ethPrice = uint256(price) / 1e2;

        if (answeredInRound < roundID
            || updatedAt < block.timestamp - 3 hours
            || price < 0) revert WrongOracleData();
        tokensAmount = _ethAmount * uint256(price) / tokenPrice / 1e2;
    }
}

File 2 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "../utils/Context.sol";

/**
 * @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.
 *
 * The initial owner is set to the address provided by the deployer. 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.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(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 virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 5 : Pausable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)

pragma solidity ^0.8.20;

import {Context} from "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    bool private _paused;

    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    /**
     * @dev The operation failed because the contract is paused.
     */
    error EnforcedPause();

    /**
     * @dev The operation failed because the contract is not paused.
     */
    error ExpectedPause();

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

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

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        if (paused()) {
            revert EnforcedPause();
        }
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        if (!paused()) {
            revert ExpectedPause();
        }
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

File 4 of 5 : IChainLinkPriceFeed.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

interface IChainLinkPriceFeed {
    function latestRoundData() external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
}

File 5 of 5 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

Settings
{
  "remappings": [
    "@openzeppelin/contracts/=lib/openzeppelin/contracts/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin/=lib/openzeppelin/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_usdPrice","type":"uint256"},{"internalType":"uint256","name":"_saleLimit","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"EthSendingFailed","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"NotEnoughEthOnContract","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"remainingLimit","type":"uint256"}],"name":"PerWalletLimitExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"remainingLimit","type":"uint256"}],"name":"SaleLimitExceeded","type":"error"},{"inputs":[],"name":"TooLowValue","type":"error"},{"inputs":[],"name":"WrongOracleData","type":"error"},{"inputs":[],"name":"ZeroPriceFeedAddress","type":"error"},{"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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokensAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"currentEthPrice","type":"uint256"}],"name":"TokensPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"}],"name":"convertETHToTokensAmount","outputs":[{"internalType":"uint256","name":"ethPrice","type":"uint256"},{"internalType":"uint256","name":"tokensAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeed","outputs":[{"internalType":"contract IChainLinkPriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"tokensPurchased","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405234801561001057600080fd5b50604051610a7b380380610a7b83398101604081905261002f9161013b565b6000805460ff19169055806001600160a01b03811661006857604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b610071816100c6565b506001600160a01b03841661009957604051633bd9d9fd60e01b815260040160405180910390fd5b6001600160a01b0384166080526100b882670de0b6b3a7640000610181565b6001555050600255506101ac565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b80516001600160a01b038116811461013657600080fd5b919050565b6000806000806080858703121561015157600080fd5b61015a8561011f565b935060208501519250604085015191506101766060860161011f565b905092959194509250565b80820281158282048414176101a657634e487b7160e01b600052601160045260246000fd5b92915050565b6080516108ad6101ce60003960008181610353015261045001526108ad6000f3fe6080604052600436106100ab5760003560e01c80637e26639f116100645780637e26639f1461038d5780637ff9b596146103a35780638456cb59146103b95780638da5cb5b146103ce578063a87430ba146103f1578063f2fde38b1461042557600080fd5b80633f4ba83a146102945780635c975abb146102ab57806363b20117146102d35780636f6f00c7146102f7578063715018a61461032c578063741bef1a1461034157600080fd5b3661028f5767016345785d8a00003410156100d957604051637699ac9b60e01b815260040160405180910390fd5b336000908152600460205260408120546100fb90674563918244f4000061075a565b9050348110156101265760405163d28cfc2d60e01b8152600481018290526024015b60405180910390fd5b60008061013234610445565b91509150600154600354826101479190610773565b11156101795760035460015461015d919061075a565b6040516376bff5c360e01b815260040161011d91815260200190565b806003600082825461018b9190610773565b909155505033600090815260046020526040812060010180548392906101b2908490610773565b909155505033600090815260046020526040812080543492906101d6908490610773565b90915550506000805461010090046001600160a01b03166001600160a01b03163460405160006040518083038185875af1925050503d8060008114610237576040519150601f19603f3d011682016040523d82523d6000602084013e61023c565b606091505b505090508061025e576040516308981c1360e21b815260040160405180910390fd5b6040518290849033907f8fafebcaf9d154343dad25669bfa277f4fbacd7ac6b0c4fed522580e040a0f3390600090a4005b600080fd5b3480156102a057600080fd5b506102a9610570565b005b3480156102b757600080fd5b5060005460ff1660405190151581526020015b60405180910390f35b3480156102df57600080fd5b506102e960035481565b6040519081526020016102ca565b34801561030357600080fd5b50610317610312366004610786565b610445565b604080519283526020830191909152016102ca565b34801561033857600080fd5b506102a9610582565b34801561034d57600080fd5b506103757f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102ca565b34801561039957600080fd5b506102e960015481565b3480156103af57600080fd5b506102e960025481565b3480156103c557600080fd5b506102a9610594565b3480156103da57600080fd5b5060005461010090046001600160a01b0316610375565b3480156103fd57600080fd5b5061031761040c36600461079f565b6004602052600090815260409020805460019091015482565b34801561043157600080fd5b506102a961044036600461079f565b6105a4565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156104ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d091906107ee565b9450945050935093506064836104e6919061083e565b95508369ffffffffffffffffffff168169ffffffffffffffffffff1610806105185750610515612a304261075a565b82105b806105235750600083125b156105415760405163cbbbed0960e01b815260040160405180910390fd5b600254606490610551858a610860565b61055b919061083e565b610565919061083e565b945050505050915091565b6105786105e2565b610580610615565b565b61058a6105e2565b6105806000610667565b61059c6105e2565b6105806106c0565b6105ac6105e2565b6001600160a01b0381166105d657604051631e4fbdf760e01b81526000600482015260240161011d565b6105df81610667565b50565b6000546001600160a01b036101009091041633146105805760405163118cdaa760e01b815233600482015260240161011d565b61061d6106fd565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6106c8610720565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861064a3390565b60005460ff1661058057604051638dfc202b60e01b815260040160405180910390fd5b60005460ff16156105805760405163d93c066560e01b815260040160405180910390fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561076d5761076d610744565b92915050565b8082018082111561076d5761076d610744565b60006020828403121561079857600080fd5b5035919050565b6000602082840312156107b157600080fd5b81356001600160a01b03811681146107c857600080fd5b9392505050565b805169ffffffffffffffffffff811681146107e957600080fd5b919050565b600080600080600060a0868803121561080657600080fd5b61080f866107cf565b9450602086015193506040860151925060608601519150610832608087016107cf565b90509295509295909350565b60008261085b57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761076d5761076d61074456fea2646970667358221220e1ddfb9cf169acd664dcd60faca59ab6aee702f5b560fb1c3154921f904a965f64736f6c634300081600330000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000004e200000000000000000000000000000000000000000000000000000000002faf08000000000000000000000000050b8a37dc292f8aabe40bb0616337223f7ffac37

Deployed Bytecode

0x6080604052600436106100ab5760003560e01c80637e26639f116100645780637e26639f1461038d5780637ff9b596146103a35780638456cb59146103b95780638da5cb5b146103ce578063a87430ba146103f1578063f2fde38b1461042557600080fd5b80633f4ba83a146102945780635c975abb146102ab57806363b20117146102d35780636f6f00c7146102f7578063715018a61461032c578063741bef1a1461034157600080fd5b3661028f5767016345785d8a00003410156100d957604051637699ac9b60e01b815260040160405180910390fd5b336000908152600460205260408120546100fb90674563918244f4000061075a565b9050348110156101265760405163d28cfc2d60e01b8152600481018290526024015b60405180910390fd5b60008061013234610445565b91509150600154600354826101479190610773565b11156101795760035460015461015d919061075a565b6040516376bff5c360e01b815260040161011d91815260200190565b806003600082825461018b9190610773565b909155505033600090815260046020526040812060010180548392906101b2908490610773565b909155505033600090815260046020526040812080543492906101d6908490610773565b90915550506000805461010090046001600160a01b03166001600160a01b03163460405160006040518083038185875af1925050503d8060008114610237576040519150601f19603f3d011682016040523d82523d6000602084013e61023c565b606091505b505090508061025e576040516308981c1360e21b815260040160405180910390fd5b6040518290849033907f8fafebcaf9d154343dad25669bfa277f4fbacd7ac6b0c4fed522580e040a0f3390600090a4005b600080fd5b3480156102a057600080fd5b506102a9610570565b005b3480156102b757600080fd5b5060005460ff1660405190151581526020015b60405180910390f35b3480156102df57600080fd5b506102e960035481565b6040519081526020016102ca565b34801561030357600080fd5b50610317610312366004610786565b610445565b604080519283526020830191909152016102ca565b34801561033857600080fd5b506102a9610582565b34801561034d57600080fd5b506103757f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b841981565b6040516001600160a01b0390911681526020016102ca565b34801561039957600080fd5b506102e960015481565b3480156103af57600080fd5b506102e960025481565b3480156103c557600080fd5b506102a9610594565b3480156103da57600080fd5b5060005461010090046001600160a01b0316610375565b3480156103fd57600080fd5b5061031761040c36600461079f565b6004602052600090815260409020805460019091015482565b34801561043157600080fd5b506102a961044036600461079f565b6105a4565b6000806000806000807f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156104ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d091906107ee565b9450945050935093506064836104e6919061083e565b95508369ffffffffffffffffffff168169ffffffffffffffffffff1610806105185750610515612a304261075a565b82105b806105235750600083125b156105415760405163cbbbed0960e01b815260040160405180910390fd5b600254606490610551858a610860565b61055b919061083e565b610565919061083e565b945050505050915091565b6105786105e2565b610580610615565b565b61058a6105e2565b6105806000610667565b61059c6105e2565b6105806106c0565b6105ac6105e2565b6001600160a01b0381166105d657604051631e4fbdf760e01b81526000600482015260240161011d565b6105df81610667565b50565b6000546001600160a01b036101009091041633146105805760405163118cdaa760e01b815233600482015260240161011d565b61061d6106fd565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6106c8610720565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861064a3390565b60005460ff1661058057604051638dfc202b60e01b815260040160405180910390fd5b60005460ff16156105805760405163d93c066560e01b815260040160405180910390fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561076d5761076d610744565b92915050565b8082018082111561076d5761076d610744565b60006020828403121561079857600080fd5b5035919050565b6000602082840312156107b157600080fd5b81356001600160a01b03811681146107c857600080fd5b9392505050565b805169ffffffffffffffffffff811681146107e957600080fd5b919050565b600080600080600060a0868803121561080657600080fd5b61080f866107cf565b9450602086015193506040860151925060608601519150610832608087016107cf565b90509295509295909350565b60008261085b57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761076d5761076d61074456fea2646970667358221220e1ddfb9cf169acd664dcd60faca59ab6aee702f5b560fb1c3154921f904a965f64736f6c63430008160033

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

0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000004e200000000000000000000000000000000000000000000000000000000002faf08000000000000000000000000050b8a37dc292f8aabe40bb0616337223f7ffac37

-----Decoded View---------------
Arg [0] : _priceFeed (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [1] : _usdPrice (uint256): 20000
Arg [2] : _saleLimit (uint256): 50000000
Arg [3] : owner (address): 0x50b8a37dc292F8AabE40BB0616337223F7ffAC37

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [1] : 0000000000000000000000000000000000000000000000000000000000004e20
Arg [2] : 0000000000000000000000000000000000000000000000000000000002faf080
Arg [3] : 00000000000000000000000050b8a37dc292f8aabe40bb0616337223f7ffac37


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  ]
[ 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.