Overview
S Balance
S Value
$2.26 (@ $0.07/S)Latest 25 from a total of 168 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Distribute | 41891726 | 172 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 41496792 | 175 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 41200679 | 177 days ago | IN | 0 S | 0.00412395 | ||||
| Distribute | 41076700 | 178 days ago | IN | 0 S | 0.00542442 | ||||
| Distribute | 40595907 | 181 days ago | IN | 0 S | 0.00424532 | ||||
| Distribute | 40104202 | 185 days ago | IN | 0 S | 0.00412395 | ||||
| Distribute | 40103508 | 185 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 40083165 | 185 days ago | IN | 0 S | 0.00412335 | ||||
| Distribute | 40047144 | 185 days ago | IN | 0 S | 0.00491928 | ||||
| Distribute | 40036576 | 185 days ago | IN | 0 S | 0.00412395 | ||||
| Distribute | 40021551 | 185 days ago | IN | 0 S | 0.00447289 | ||||
| Distribute | 39922680 | 186 days ago | IN | 0 S | 0.00474291 | ||||
| Distribute | 39869835 | 186 days ago | IN | 0 S | 0.00443286 | ||||
| Distribute | 39679409 | 187 days ago | IN | 0 S | 0.00412395 | ||||
| Distribute | 39572392 | 188 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 39412186 | 189 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 38974107 | 192 days ago | IN | 0 S | 0.00335702 | ||||
| Distribute | 38870819 | 193 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 38655003 | 194 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 38316344 | 196 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 38182393 | 198 days ago | IN | 0 S | 0.00412395 | ||||
| Distribute | 37794897 | 200 days ago | IN | 0 S | 0.00287395 | ||||
| Distribute | 37757156 | 200 days ago | IN | 0 S | 0.00412395 | ||||
| Distribute | 37642249 | 201 days ago | IN | 0 S | 0.00316576 | ||||
| Distribute | 37619605 | 201 days ago | IN | 0 S | 0.00287395 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 41891726 | 172 days ago | 0.1 S | ||||
| 41496792 | 175 days ago | 0.1 S | ||||
| 41200679 | 177 days ago | 0.1 S | ||||
| 41076700 | 178 days ago | 0.1 S | ||||
| 40595907 | 181 days ago | 0.1 S | ||||
| 40104202 | 185 days ago | 0.1 S | ||||
| 40103508 | 185 days ago | 0.1 S | ||||
| 40083165 | 185 days ago | 0.1 S | ||||
| 40047144 | 185 days ago | 0.1 S | ||||
| 40036576 | 185 days ago | 0.1 S | ||||
| 40021551 | 185 days ago | 0.1 S | ||||
| 39922680 | 186 days ago | 0.1 S | ||||
| 39869835 | 186 days ago | 0.1 S | ||||
| 39679409 | 187 days ago | 0.1 S | ||||
| 39572392 | 188 days ago | 0.1 S | ||||
| 39412186 | 189 days ago | 0.1 S | ||||
| 38974107 | 192 days ago | 0.1 S | ||||
| 38870819 | 193 days ago | 0.1 S | ||||
| 38655003 | 194 days ago | 0.1 S | ||||
| 38316344 | 196 days ago | 0.1 S | ||||
| 38182393 | 198 days ago | 0.1 S | ||||
| 37794897 | 200 days ago | 0.1 S | ||||
| 37757156 | 200 days ago | 0.1 S | ||||
| 37642249 | 201 days ago | 0.1 S | ||||
| 37619605 | 201 days ago | 0.1 S |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Faucet
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$2.26
Net Worth in S
Token Allocations
S
100.00%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| SONIC | 100.00% | $0.067562 | 33.5 | $2.26 |
Loading...
Loading
Loading...
Loading
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.