S Price: $0.067597 (-3.48%)
Gas: 55 Gwei

Contract

0x7aabE848F8FEb04DCfb410BCb88C129e6A069A11

Overview

S Balance

Sonic LogoSonic LogoSonic Logo33.5 S

S Value

$2.26 (@ $0.07/S)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Distribute418917262025-08-06 16:34:10172 days ago1754498050IN
Atlantis: Faucet
0 S0.0028739550
Distribute414967922025-08-03 15:15:42175 days ago1754234142IN
Atlantis: Faucet
0 S0.0028739550
Distribute412006792025-08-01 12:34:02177 days ago1754051642IN
Atlantis: Faucet
0 S0.0041239550
Distribute410767002025-07-31 19:05:14178 days ago1753988714IN
Atlantis: Faucet
0 S0.0054244265.76733333
Distribute405959072025-07-28 13:22:56181 days ago1753708976IN
Atlantis: Faucet
0 S0.0042453273.85878968
Distribute401042022025-07-25 2:07:20185 days ago1753409240IN
Atlantis: Faucet
0 S0.0041239550
Distribute401035082025-07-25 1:59:30185 days ago1753408770IN
Atlantis: Faucet
0 S0.0028739550
Distribute400831652025-07-24 22:41:38185 days ago1753396898IN
Atlantis: Faucet
0 S0.0041233550
Distribute400471442025-07-24 16:38:42185 days ago1753375122IN
Atlantis: Faucet
0 S0.0049192859.64285714
Distribute400365762025-07-24 15:09:23185 days ago1753369763IN
Atlantis: Faucet
0 S0.0041239550
Distribute400215512025-07-24 13:08:24185 days ago1753362504IN
Atlantis: Faucet
0 S0.0044728954.23076923
Distribute399226802025-07-23 22:02:05186 days ago1753308125IN
Atlantis: Faucet
0 S0.0047429157.50446878
Distribute398698352025-07-23 14:49:16186 days ago1753282156IN
Atlantis: Faucet
0 S0.0044328653.74534123
Distribute396794092025-07-22 12:24:46187 days ago1753187086IN
Atlantis: Faucet
0 S0.0041239550
Distribute395723922025-07-21 20:02:52188 days ago1753128172IN
Atlantis: Faucet
0 S0.0028739550
Distribute394121862025-07-20 20:35:48189 days ago1753043748IN
Atlantis: Faucet
0 S0.0028739550
Distribute389741072025-07-17 20:08:00192 days ago1752782880IN
Atlantis: Faucet
0 S0.0033570258.40444444
Distribute388708192025-07-17 5:13:32193 days ago1752729212IN
Atlantis: Faucet
0 S0.0028739550
Distribute386550032025-07-15 19:48:55194 days ago1752608935IN
Atlantis: Faucet
0 S0.0028739550
Distribute383163442025-07-13 12:29:48196 days ago1752409788IN
Atlantis: Faucet
0 S0.0028739550
Distribute381823932025-07-12 10:34:20198 days ago1752316460IN
Atlantis: Faucet
0 S0.0041239550
Distribute377948972025-07-09 22:39:30200 days ago1752100770IN
Atlantis: Faucet
0 S0.0028739550
Distribute377571562025-07-09 16:35:27200 days ago1752078927IN
Atlantis: Faucet
0 S0.0041239550
Distribute376422492025-07-08 19:16:43201 days ago1752002203IN
Atlantis: Faucet
0 S0.0031657655.07692307
Distribute376196052025-07-08 15:20:38201 days ago1751988038IN
Atlantis: Faucet
0 S0.0028739550
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
418917262025-08-06 16:34:10172 days ago1754498050
Atlantis: Faucet
0.1 S
414967922025-08-03 15:15:42175 days ago1754234142
Atlantis: Faucet
0.1 S
412006792025-08-01 12:34:02177 days ago1754051642
Atlantis: Faucet
0.1 S
410767002025-07-31 19:05:14178 days ago1753988714
Atlantis: Faucet
0.1 S
405959072025-07-28 13:22:56181 days ago1753708976
Atlantis: Faucet
0.1 S
401042022025-07-25 2:07:20185 days ago1753409240
Atlantis: Faucet
0.1 S
401035082025-07-25 1:59:30185 days ago1753408770
Atlantis: Faucet
0.1 S
400831652025-07-24 22:41:38185 days ago1753396898
Atlantis: Faucet
0.1 S
400471442025-07-24 16:38:42185 days ago1753375122
Atlantis: Faucet
0.1 S
400365762025-07-24 15:09:23185 days ago1753369763
Atlantis: Faucet
0.1 S
400215512025-07-24 13:08:24185 days ago1753362504
Atlantis: Faucet
0.1 S
399226802025-07-23 22:02:05186 days ago1753308125
Atlantis: Faucet
0.1 S
398698352025-07-23 14:49:16186 days ago1753282156
Atlantis: Faucet
0.1 S
396794092025-07-22 12:24:46187 days ago1753187086
Atlantis: Faucet
0.1 S
395723922025-07-21 20:02:52188 days ago1753128172
Atlantis: Faucet
0.1 S
394121862025-07-20 20:35:48189 days ago1753043748
Atlantis: Faucet
0.1 S
389741072025-07-17 20:08:00192 days ago1752782880
Atlantis: Faucet
0.1 S
388708192025-07-17 5:13:32193 days ago1752729212
Atlantis: Faucet
0.1 S
386550032025-07-15 19:48:55194 days ago1752608935
Atlantis: Faucet
0.1 S
383163442025-07-13 12:29:48196 days ago1752409788
Atlantis: Faucet
0.1 S
381823932025-07-12 10:34:20198 days ago1752316460
Atlantis: Faucet
0.1 S
377948972025-07-09 22:39:30200 days ago1752100770
Atlantis: Faucet
0.1 S
377571562025-07-09 16:35:27200 days ago1752078927
Atlantis: Faucet
0.1 S
376422492025-07-08 19:16:43201 days ago1752002203
Atlantis: Faucet
0.1 S
376196052025-07-08 15:20:38201 days ago1751988038
Atlantis: Faucet
0.1 S
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Faucet

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts-v4/access/Ownable.sol";
import "@openzeppelin/contracts-v4/security/ReentrancyGuard.sol";

/**
 * @title Faucet
 * @dev A contract that allows depositing native tokens and distributing them to specific addresses.
 * Only the owner and authorized distributors can distribute tokens.
 * The contract has an hourly distribution limit that resets at the start of each hour.
 */
contract Faucet is Ownable, ReentrancyGuard {
    // Amount to send for each distribution
    uint256 public distributionAmount;

    // Maximum tokens that can be distributed per hour
    uint256 public maxDistributionPerHour;

    // Current hour for distribution tracking (timestamp of the start of the hour)
    uint256 public currentHourStart;

    // Tokens distributed in the current hour
    uint256 public currentHourDistributed;

    // Total tokens distributed since contract creation (for statistics)
    uint256 public totalDistributed;

    // Mapping of authorized distributors
    mapping(address => bool) public distributors;

    // Events
    event TokensReceived(address indexed from, uint256 amount);
    event TokensDistributed(address indexed to, uint256 amount);
    event DistributorAdded(address indexed distributor);
    event DistributorRemoved(address indexed distributor);

    /**
     * @dev Constructor that initializes the contract with specified values.
     * @param _distributionAmount Amount to send for each distribution
     * @param _maxDistributionPerHour Maximum tokens that can be distributed per hour
     */
    constructor(uint256 _distributionAmount, uint256 _maxDistributionPerHour) {
        require(
            _distributionAmount > 0,
            "Faucet: distribution amount must be greater than 0"
        );
        require(
            _maxDistributionPerHour > 0,
            "Faucet: max distribution per hour must be greater than 0"
        );

        distributionAmount = _distributionAmount;
        maxDistributionPerHour = _maxDistributionPerHour;

        // Initialize the current hour to the start of the current hour
        currentHourStart = _getCurrentHourStart();
    }

    /**
     * @dev Updates the distribution amount.
     * Only the owner can call this function.
     * @param _distributionAmount New amount to send for each distribution
     */
    function setDistributionAmount(
        uint256 _distributionAmount
    ) external onlyOwner {
        require(
            _distributionAmount > 0,
            "Faucet: distribution amount must be greater than 0"
        );
        distributionAmount = _distributionAmount;
    }

    /**
     * @dev Updates the maximum tokens that can be distributed per hour.
     * Only the owner can call this function.
     * @param _maxDistributionPerHour New maximum tokens that can be distributed per hour
     */
    function setMaxDistributionPerHour(
        uint256 _maxDistributionPerHour
    ) external onlyOwner {
        require(
            _maxDistributionPerHour > 0,
            "Faucet: max distribution per hour must be greater than 0"
        );
        maxDistributionPerHour = _maxDistributionPerHour;
    }

    /**
     * @dev Adds an authorized distributor.
     * Only the owner can call this function.
     * @param _distributor Address of the distributor to add
     */
    function addDistributor(address _distributor) external onlyOwner {
        require(
            _distributor != address(0),
            "Faucet: distributor cannot be the zero address"
        );
        require(
            !distributors[_distributor],
            "Faucet: distributor already exists"
        );

        distributors[_distributor] = true;
        emit DistributorAdded(_distributor);
    }

    /**
     * @dev Removes an authorized distributor.
     * Only the owner can call this function.
     * @param _distributor Address of the distributor to remove
     */
    function removeDistributor(address _distributor) external onlyOwner {
        require(
            distributors[_distributor],
            "Faucet: distributor does not exist"
        );

        distributors[_distributor] = false;
        emit DistributorRemoved(_distributor);
    }

    /**
     * @dev Checks if an address is authorized to distribute tokens.
     * @param _address Address to check
     * @return bool True if the address is authorized, false otherwise
     */
    function isAuthorized(address _address) public view returns (bool) {
        return _address == owner() || distributors[_address];
    }

    /**
     * @dev Modifier that checks if the caller is authorized to distribute tokens.
     */
    modifier onlyAuthorized() {
        require(isAuthorized(msg.sender), "Faucet: caller is not authorized");
        _;
    }

    /**
     * @dev Calculates the start timestamp of the current hour (HH:00:00).
     * @return uint256 Timestamp of the start of the current hour
     */
    function _getCurrentHourStart() private view returns (uint256) {
        // Get the current timestamp
        uint256 timestamp = block.timestamp;

        // Calculate the start of the current hour by truncating minutes and seconds
        // 1 hour = 3600 seconds
        return timestamp - (timestamp % 3600);
    }

    /**
     * @dev Checks and updates the hourly distribution limit.
     * Resets the counter if a new hour has started.
     */
    function _checkAndUpdateHourlyLimit() private {
        // Calculate the start of the current hour
        uint256 newHourStart = _getCurrentHourStart();

        // Check if we've moved to a new hour
        if (newHourStart > currentHourStart) {
            currentHourStart = newHourStart;
            currentHourDistributed = 0;
        }
    }

    /**
     * @dev Distributes tokens to the specified address.
     * Only the owner and authorized distributors can call this function.
     * @param _to Address to send tokens to
     */
    function distribute(
        address payable _to
    ) external onlyAuthorized nonReentrant {
        require(
            _to != address(0),
            "Faucet: recipient cannot be the zero address"
        );
        require(
            address(this).balance >= distributionAmount,
            "Faucet: insufficient balance"
        );

        // Check and update hourly limit
        _checkAndUpdateHourlyLimit();

        // Check if the hourly limit would be exceeded
        require(
            currentHourDistributed + distributionAmount <=
                maxDistributionPerHour,
            "Faucet: hourly distribution limit exceeded"
        );

        // Update the distributed amount for the current hour
        currentHourDistributed += distributionAmount;

        // Update total distributed for statistics
        totalDistributed += distributionAmount;

        // Send tokens
        (bool success, ) = _to.call{value: distributionAmount}("");
        require(success, "Faucet: transfer failed");

        emit TokensDistributed(_to, distributionAmount);
    }

    /**
     * @dev Withdraws all tokens from the contract.
     * Only the owner can call this function.
     */
    function withdraw() external onlyOwner nonReentrant {
        uint256 balance = address(this).balance;
        require(balance > 0, "Faucet: no balance to withdraw");

        (bool success, ) = payable(owner()).call{value: balance}("");
        require(success, "Faucet: withdrawal failed");
    }

    /**
     * @dev Fallback function to receive native tokens.
     */
    receive() external payable {
        emit TokensReceived(msg.sender, msg.value);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../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.
 *
 * 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.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @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 {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @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 {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _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);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)

pragma solidity ^0.8.0;

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"_distributionAmount","type":"uint256"},{"internalType":"uint256","name":"_maxDistributionPerHour","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"distributor","type":"address"}],"name":"DistributorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"distributor","type":"address"}],"name":"DistributorRemoved","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":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensReceived","type":"event"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"}],"name":"addDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentHourDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentHourStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"distributors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDistributionPerHour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"}],"name":"removeDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_distributionAmount","type":"uint256"}],"name":"setDistributionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDistributionPerHour","type":"uint256"}],"name":"setMaxDistributionPerHour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalDistributed","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":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50604051610f03380380610f0383398101604081905261002f916101ab565b6100383361013c565b60018055816100a95760405162461bcd60e51b815260206004820152603260248201527f4661756365743a20646973747269627574696f6e20616d6f756e74206d75737460448201527102062652067726561746572207468616e20360741b60648201526084015b60405180910390fd5b6000811161011f5760405162461bcd60e51b815260206004820152603860248201527f4661756365743a206d617820646973747269627574696f6e2070657220686f7560448201527f72206d7573742062652067726561746572207468616e2030000000000000000060648201526084016100a0565b6002829055600381905561013161018c565b600455506102189050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60004261019b610e10826101cf565b6101a590826101f1565b91505090565b600080604083850312156101be57600080fd5b505080516020909101519092909150565b6000826101ec57634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561021257634e487b7160e01b600052601160045260246000fd5b92915050565b610cdc806102276000396000f3fe6080604052600436106100f75760003560e01c80638da5cb5b1161008a578063efca2eed11610059578063efca2eed146102b7578063f2fde38b146102cd578063fc8286fd146102ed578063fe9fbb801461030d57600080fd5b80638da5cb5b14610223578063b0e0c6811461024b578063c22de13614610261578063cc6427841461027757600080fd5b806357c1f9e2116100c657806357c1f9e2146101ae57806363453ae1146101ce578063715018a6146101ee5780637250e2241461020357600080fd5b806302ac8df21461013857806310f3a9c2146101615780633ccfd60b14610177578063508c46e21461018e57600080fd5b366101335760405134815233907f5a0ebf9442637ca6e817894481a6de0c29715a73efc9e02bb7ef4ed52843362d9060200160405180910390a2005b600080fd5b34801561014457600080fd5b5061014e60055481565b6040519081526020015b60405180910390f35b34801561016d57600080fd5b5061014e60045481565b34801561018357600080fd5b5061018c61032d565b005b34801561019a57600080fd5b5061018c6101a9366004610bf6565b610440565b3480156101ba57600080fd5b5061018c6101c9366004610c24565b6104c3565b3480156101da57600080fd5b5061018c6101e9366004610c24565b610587565b3480156101fa57600080fd5b5061018c610844565b34801561020f57600080fd5b5061018c61021e366004610c24565b610856565b34801561022f57600080fd5b506000546040516001600160a01b039091168152602001610158565b34801561025757600080fd5b5061014e60025481565b34801561026d57600080fd5b5061014e60035481565b34801561028357600080fd5b506102a7610292366004610c24565b60076020526000908152604090205460ff1681565b6040519015158152602001610158565b3480156102c357600080fd5b5061014e60065481565b3480156102d957600080fd5b5061018c6102e8366004610c24565b61098b565b3480156102f957600080fd5b5061018c610308366004610bf6565b610a01565b34801561031957600080fd5b506102a7610328366004610c24565b610a79565b610335610ab4565b61033d610b0e565b47806103905760405162461bcd60e51b815260206004820152601e60248201527f4661756365743a206e6f2062616c616e636520746f207769746864726177000060448201526064015b60405180910390fd5b600080546040516001600160a01b039091169083908381818185875af1925050503d80600081146103dd576040519150601f19603f3d011682016040523d82523d6000602084013e6103e2565b606091505b50509050806104335760405162461bcd60e51b815260206004820152601960248201527f4661756365743a207769746864726177616c206661696c6564000000000000006044820152606401610387565b505061043e60018055565b565b610448610ab4565b600081116104be5760405162461bcd60e51b815260206004820152603860248201527f4661756365743a206d617820646973747269627574696f6e2070657220686f7560448201527f72206d7573742062652067726561746572207468616e203000000000000000006064820152608401610387565b600355565b6104cb610ab4565b6001600160a01b03811660009081526007602052604090205460ff1661053e5760405162461bcd60e51b815260206004820152602260248201527f4661756365743a206469737472696275746f7220646f6573206e6f74206578696044820152611cdd60f21b6064820152608401610387565b6001600160a01b038116600081815260076020526040808220805460ff19169055517f126174f6cf49c81cdb4a9214c6b8f037bef55b4ec31e4fc776cea2a1c8a88d599190a250565b61059033610a79565b6105dc5760405162461bcd60e51b815260206004820181905260248201527f4661756365743a2063616c6c6572206973206e6f7420617574686f72697a65646044820152606401610387565b6105e4610b0e565b6001600160a01b03811661064f5760405162461bcd60e51b815260206004820152602c60248201527f4661756365743a20726563697069656e742063616e6e6f74206265207468652060448201526b7a65726f206164647265737360a01b6064820152608401610387565b6002544710156106a15760405162461bcd60e51b815260206004820152601c60248201527f4661756365743a20696e73756666696369656e742062616c616e6365000000006044820152606401610387565b6106a9610b67565b6003546002546005546106bc9190610c5e565b111561071d5760405162461bcd60e51b815260206004820152602a60248201527f4661756365743a20686f75726c7920646973747269627574696f6e206c696d696044820152691d08195e18d95959195960b21b6064820152608401610387565b600254600560008282546107319190610c5e565b90915550506002546006805460009061074b908490610c5e565b90915550506002546040516000916001600160a01b038416918381818185875af1925050503d806000811461079c576040519150601f19603f3d011682016040523d82523d6000602084013e6107a1565b606091505b50509050806107f25760405162461bcd60e51b815260206004820152601760248201527f4661756365743a207472616e73666572206661696c65640000000000000000006044820152606401610387565b816001600160a01b03167f16b0da2ffcb90c6723317bd637d9aad7f04711f42bbe0ac0918ebe10f1f9001c60025460405161082f91815260200190565b60405180910390a25061084160018055565b50565b61084c610ab4565b61043e6000610b87565b61085e610ab4565b6001600160a01b0381166108cb5760405162461bcd60e51b815260206004820152602e60248201527f4661756365743a206469737472696275746f722063616e6e6f7420626520746860448201526d65207a65726f206164647265737360901b6064820152608401610387565b6001600160a01b03811660009081526007602052604090205460ff161561093f5760405162461bcd60e51b815260206004820152602260248201527f4661756365743a206469737472696275746f7220616c72656164792065786973604482015261747360f01b6064820152608401610387565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517fddbf200aa634dc3fb81cfd68583dd1040d1c751d335e1d86b631bde3e977fea89190a250565b610993610ab4565b6001600160a01b0381166109f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610387565b61084181610b87565b610a09610ab4565b60008111610a745760405162461bcd60e51b815260206004820152603260248201527f4661756365743a20646973747269627574696f6e20616d6f756e74206d75737460448201527102062652067726561746572207468616e20360741b6064820152608401610387565b600255565b600080546001600160a01b0383811691161480610aae57506001600160a01b03821660009081526007602052604090205460ff165b92915050565b6000546001600160a01b0316331461043e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610387565b600260015403610b605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610387565b6002600155565b6000610b71610bd7565b9050600454811115610841576004556000600555565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600042610be6610e1082610c71565b610bf09082610c93565b91505090565b600060208284031215610c0857600080fd5b5035919050565b6001600160a01b038116811461084157600080fd5b600060208284031215610c3657600080fd5b8135610c4181610c0f565b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610aae57610aae610c48565b600082610c8e57634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115610aae57610aae610c4856fea26469706673582212207b75b385b857b052e189a5961d0f32c106ce3b88d04128ca06cca88ae8be63bb64736f6c63430008140033000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000015af1d78b58c40000

Deployed Bytecode

0x6080604052600436106100f75760003560e01c80638da5cb5b1161008a578063efca2eed11610059578063efca2eed146102b7578063f2fde38b146102cd578063fc8286fd146102ed578063fe9fbb801461030d57600080fd5b80638da5cb5b14610223578063b0e0c6811461024b578063c22de13614610261578063cc6427841461027757600080fd5b806357c1f9e2116100c657806357c1f9e2146101ae57806363453ae1146101ce578063715018a6146101ee5780637250e2241461020357600080fd5b806302ac8df21461013857806310f3a9c2146101615780633ccfd60b14610177578063508c46e21461018e57600080fd5b366101335760405134815233907f5a0ebf9442637ca6e817894481a6de0c29715a73efc9e02bb7ef4ed52843362d9060200160405180910390a2005b600080fd5b34801561014457600080fd5b5061014e60055481565b6040519081526020015b60405180910390f35b34801561016d57600080fd5b5061014e60045481565b34801561018357600080fd5b5061018c61032d565b005b34801561019a57600080fd5b5061018c6101a9366004610bf6565b610440565b3480156101ba57600080fd5b5061018c6101c9366004610c24565b6104c3565b3480156101da57600080fd5b5061018c6101e9366004610c24565b610587565b3480156101fa57600080fd5b5061018c610844565b34801561020f57600080fd5b5061018c61021e366004610c24565b610856565b34801561022f57600080fd5b506000546040516001600160a01b039091168152602001610158565b34801561025757600080fd5b5061014e60025481565b34801561026d57600080fd5b5061014e60035481565b34801561028357600080fd5b506102a7610292366004610c24565b60076020526000908152604090205460ff1681565b6040519015158152602001610158565b3480156102c357600080fd5b5061014e60065481565b3480156102d957600080fd5b5061018c6102e8366004610c24565b61098b565b3480156102f957600080fd5b5061018c610308366004610bf6565b610a01565b34801561031957600080fd5b506102a7610328366004610c24565b610a79565b610335610ab4565b61033d610b0e565b47806103905760405162461bcd60e51b815260206004820152601e60248201527f4661756365743a206e6f2062616c616e636520746f207769746864726177000060448201526064015b60405180910390fd5b600080546040516001600160a01b039091169083908381818185875af1925050503d80600081146103dd576040519150601f19603f3d011682016040523d82523d6000602084013e6103e2565b606091505b50509050806104335760405162461bcd60e51b815260206004820152601960248201527f4661756365743a207769746864726177616c206661696c6564000000000000006044820152606401610387565b505061043e60018055565b565b610448610ab4565b600081116104be5760405162461bcd60e51b815260206004820152603860248201527f4661756365743a206d617820646973747269627574696f6e2070657220686f7560448201527f72206d7573742062652067726561746572207468616e203000000000000000006064820152608401610387565b600355565b6104cb610ab4565b6001600160a01b03811660009081526007602052604090205460ff1661053e5760405162461bcd60e51b815260206004820152602260248201527f4661756365743a206469737472696275746f7220646f6573206e6f74206578696044820152611cdd60f21b6064820152608401610387565b6001600160a01b038116600081815260076020526040808220805460ff19169055517f126174f6cf49c81cdb4a9214c6b8f037bef55b4ec31e4fc776cea2a1c8a88d599190a250565b61059033610a79565b6105dc5760405162461bcd60e51b815260206004820181905260248201527f4661756365743a2063616c6c6572206973206e6f7420617574686f72697a65646044820152606401610387565b6105e4610b0e565b6001600160a01b03811661064f5760405162461bcd60e51b815260206004820152602c60248201527f4661756365743a20726563697069656e742063616e6e6f74206265207468652060448201526b7a65726f206164647265737360a01b6064820152608401610387565b6002544710156106a15760405162461bcd60e51b815260206004820152601c60248201527f4661756365743a20696e73756666696369656e742062616c616e6365000000006044820152606401610387565b6106a9610b67565b6003546002546005546106bc9190610c5e565b111561071d5760405162461bcd60e51b815260206004820152602a60248201527f4661756365743a20686f75726c7920646973747269627574696f6e206c696d696044820152691d08195e18d95959195960b21b6064820152608401610387565b600254600560008282546107319190610c5e565b90915550506002546006805460009061074b908490610c5e565b90915550506002546040516000916001600160a01b038416918381818185875af1925050503d806000811461079c576040519150601f19603f3d011682016040523d82523d6000602084013e6107a1565b606091505b50509050806107f25760405162461bcd60e51b815260206004820152601760248201527f4661756365743a207472616e73666572206661696c65640000000000000000006044820152606401610387565b816001600160a01b03167f16b0da2ffcb90c6723317bd637d9aad7f04711f42bbe0ac0918ebe10f1f9001c60025460405161082f91815260200190565b60405180910390a25061084160018055565b50565b61084c610ab4565b61043e6000610b87565b61085e610ab4565b6001600160a01b0381166108cb5760405162461bcd60e51b815260206004820152602e60248201527f4661756365743a206469737472696275746f722063616e6e6f7420626520746860448201526d65207a65726f206164647265737360901b6064820152608401610387565b6001600160a01b03811660009081526007602052604090205460ff161561093f5760405162461bcd60e51b815260206004820152602260248201527f4661756365743a206469737472696275746f7220616c72656164792065786973604482015261747360f01b6064820152608401610387565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517fddbf200aa634dc3fb81cfd68583dd1040d1c751d335e1d86b631bde3e977fea89190a250565b610993610ab4565b6001600160a01b0381166109f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610387565b61084181610b87565b610a09610ab4565b60008111610a745760405162461bcd60e51b815260206004820152603260248201527f4661756365743a20646973747269627574696f6e20616d6f756e74206d75737460448201527102062652067726561746572207468616e20360741b6064820152608401610387565b600255565b600080546001600160a01b0383811691161480610aae57506001600160a01b03821660009081526007602052604090205460ff165b92915050565b6000546001600160a01b0316331461043e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610387565b600260015403610b605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610387565b6002600155565b6000610b71610bd7565b9050600454811115610841576004556000600555565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600042610be6610e1082610c71565b610bf09082610c93565b91505090565b600060208284031215610c0857600080fd5b5035919050565b6001600160a01b038116811461084157600080fd5b600060208284031215610c3657600080fd5b8135610c4181610c0f565b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610aae57610aae610c48565b600082610c8e57634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115610aae57610aae610c4856fea26469706673582212207b75b385b857b052e189a5961d0f32c106ce3b88d04128ca06cca88ae8be63bb64736f6c63430008140033

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

000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000015af1d78b58c40000

-----Decoded View---------------
Arg [0] : _distributionAmount (uint256): 100000000000000000
Arg [1] : _maxDistributionPerHour (uint256): 25000000000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [1] : 0000000000000000000000000000000000000000000000015af1d78b58c40000


Block Transaction Gas Used Reward
view all blocks ##produced##

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.