Source Code
Overview
ETH Balance
0 ETH
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 19,068 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Faucet Token | 147412343 | 272 days ago | IN | 0 ETH | 0.00000847 | ||||
| Faucet Token | 143058644 | 285 days ago | IN | 0 ETH | 0.00000667 | ||||
| Faucet Token | 142918332 | 285 days ago | IN | 0 ETH | 0.00000838 | ||||
| Faucet Token | 140550995 | 292 days ago | IN | 0 ETH | 0.0000084 | ||||
| Faucet Token | 140274801 | 293 days ago | IN | 0 ETH | 0.00000496 | ||||
| Faucet Token | 138465431 | 298 days ago | IN | 0 ETH | 0.00000496 | ||||
| Faucet Token | 138464676 | 298 days ago | IN | 0 ETH | 0.00000838 | ||||
| Faucet Token | 133005194 | 315 days ago | IN | 0 ETH | 0.00000496 | ||||
| Faucet Token | 131986292 | 318 days ago | IN | 0 ETH | 0.00001156 | ||||
| Faucet Token | 131478069 | 320 days ago | IN | 0 ETH | 0.00000496 | ||||
| Faucet Token | 131450028 | 320 days ago | IN | 0 ETH | 0.00000566 | ||||
| Faucet Token | 131449724 | 320 days ago | IN | 0 ETH | 0.00000909 | ||||
| Faucet Token | 129141313 | 328 days ago | IN | 0 ETH | 0.00000888 | ||||
| Faucet Token | 128194195 | 331 days ago | IN | 0 ETH | 0.00000496 | ||||
| Faucet Token | 128194166 | 331 days ago | IN | 0 ETH | 0.00000838 | ||||
| Faucet Token | 127760532 | 332 days ago | IN | 0 ETH | 0.00000838 | ||||
| Faucet Token | 126570388 | 336 days ago | IN | 0 ETH | 0.00000838 | ||||
| Faucet Token | 125969043 | 338 days ago | IN | 0 ETH | 0.00000496 | ||||
| Faucet Token | 123782189 | 345 days ago | IN | 0 ETH | 0.00000838 | ||||
| Faucet Token | 123754896 | 345 days ago | IN | 0 ETH | 0.00000667 | ||||
| Faucet Token | 123741231 | 345 days ago | IN | 0 ETH | 0.00000838 | ||||
| Faucet Token | 122738335 | 349 days ago | IN | 0 ETH | 0.00000496 | ||||
| Faucet Token | 122484744 | 350 days ago | IN | 0 ETH | 0.00000496 | ||||
| Faucet Token | 122080221 | 351 days ago | IN | 0 ETH | 0.00000838 | ||||
| Faucet Token | 121526804 | 353 days ago | IN | 0 ETH | 0.00044995 |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x2D5750C4...A16B86997 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
SynthFaucet
Compiler Version
v0.8.24+commit.e11b9ed9
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.24;
import "./interfaces/IERC20.sol";
import "./Owned.sol";
import "./externals/openzeppelin/ReentrancyGuard.sol";
contract SynthFaucet is Owned, ReentrancyGuard {
IERC20 public synthToken;
uint256 public constant FAUCET_LIMIT = 1000000 * 10 ** 18;
mapping(address => uint256) private _faucets;
event TokensRequested(address indexed user, uint256 amount);
event SynthTokenUpdated(address indexed oldToken, address indexed newToken);
constructor(address _synthToken) Owned(msg.sender) {
require(_synthToken != address(0), "Invalid token address");
synthToken = IERC20(_synthToken);
}
/**
* @dev Allows users to request SYNTH tokens.
* Requirements:
* - Faucet should have enough balance to fulfill the request.
* - Users should not exceed the total limit allowed (`FAUCET_LIMIT`).
*/
function faucetToken(uint256 _amount) external {
require(_amount > 0, "Amount must be greater than zero");
require(_faucets[msg.sender] + _amount <= FAUCET_LIMIT, "Request exceeds faucet limit");
uint256 currentBalance = synthToken.balanceOf(address(this));
require(currentBalance >= _amount, "Faucet balance is insufficient");
_faucets[msg.sender] += _amount;
synthToken.transfer(msg.sender, _amount);
emit TokensRequested(msg.sender, _amount);
}
/**
* @dev Updates the SYNTH token address.
* Can only be called by the owner.
* Emits a `SynthTokenUpdated` event.
*/
function updateSynthToken(address _newSynthToken) external onlyOwner {
require(_newSynthToken != address(0), "Invalid token address");
address oldToken = address(synthToken);
synthToken = IERC20(_newSynthToken);
emit SynthTokenUpdated(oldToken, _newSynthToken);
}
/**
* @dev Emergency withdrawal for the owner to recover remaining tokens.
* Should only be used if the faucet is deprecated.
*/
function emergencyWithdraw(uint256 _amount) external onlyOwner {
require(_amount <= synthToken.balanceOf(address(this)), "Amount exceeds balance");
synthToken.transfer(owner, _amount);
}
}// SPDX-License-Identifier: MIT
pragma solidity =0.8.24;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the `nonReentrant` modifier
* available, which can be aplied 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.
*/
contract ReentrancyGuard {
/// @dev counter to allow mutex lock with only one SSTORE operation
uint256 private _guardCounter;
constructor() {
// The counter starts at one to prevent changing it from zero to a non-zero
// value, which is a more expensive operation.
_guardCounter = 1;
}
/**
* @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 make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_guardCounter += 1;
uint256 localCounter = _guardCounter;
_;
require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call");
}
}// SPDX-License-Identifier: MIT
pragma solidity =0.8.24;
interface IERC20 {
// ERC20 Optional Views
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
// Views
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
// Mutative functions
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
// Events
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}// SPDX-License-Identifier: MIT
pragma solidity =0.8.24;
contract Owned {
address public owner;
address public nominatedOwner;
constructor(address _owner) {
require(_owner != address(0), "Owner address cannot be 0");
owner = _owner;
emit OwnerChanged(address(0), _owner);
}
function nominateNewOwner(address _owner) external onlyOwner {
nominatedOwner = _owner;
emit OwnerNominated(_owner);
}
function acceptOwnership() external {
require(
msg.sender == nominatedOwner,
"You must be nominated before you can accept ownership"
);
emit OwnerChanged(owner, nominatedOwner);
owner = nominatedOwner;
nominatedOwner = address(0);
}
modifier onlyOwner() {
_onlyOwner();
_;
}
function _onlyOwner() private view {
require(msg.sender == owner, "Only the contract owner may perform this action");
}
event OwnerNominated(address newOwner);
event OwnerChanged(address oldOwner, address newOwner);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract ABI
API[{"inputs":[{"internalType":"address","name":"_synthToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldToken","type":"address"},{"indexed":true,"internalType":"address","name":"newToken","type":"address"}],"name":"SynthTokenUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensRequested","type":"event"},{"inputs":[],"name":"FAUCET_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"faucetToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"synthToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newSynthToken","type":"address"}],"name":"updateSynthToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
0x608060405234801561001057600080fd5b506040516109d43803806109d483398101604081905261002f9161015a565b33806100825760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a15060016002556001600160a01b0381166101355760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420746f6b656e206164647265737300000000000000000000006044820152606401610079565b600380546001600160a01b0319166001600160a01b039290921691909117905561018a565b60006020828403121561016c57600080fd5b81516001600160a01b038116811461018357600080fd5b9392505050565b61083b806101996000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637f846d46116100665780637f846d46146100f85780638da5cb5b1461010b578063b6838cfa1461011e578063c536a73714610131578063d963da351461015057600080fd5b80631627540c146100985780635312ea8e146100ad57806353a47bb7146100c057806379ba5097146100f0575b600080fd5b6100ab6100a636600461075a565b610163565b005b6100ab6100bb36600461078a565b6101bf565b6001546100d3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6102fd565b6100ab61010636600461078a565b6103e7565b6000546100d3906001600160a01b031681565b6003546100d3906001600160a01b031681565b61014269d3c21bcecceda100000081565b6040519081526020016100e7565b6100ab61015e36600461075a565b61063e565b61016b6106e6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b6101c76106e6565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023391906107a3565b8111156102805760405162461bcd60e51b8152602060048201526016602482015275416d6f756e7420657863656564732062616c616e636560501b60448201526064015b60405180910390fd5b60035460005460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f991906107bc565b5050565b6001546001600160a01b031633146103755760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610277565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600081116104375760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610277565b3360009081526004602052604090205469d3c21bcecceda10000009061045e9083906107de565b11156104ac5760405162461bcd60e51b815260206004820152601c60248201527f52657175657374206578636565647320666175636574206c696d6974000000006044820152606401610277565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051991906107a3565b90508181101561056b5760405162461bcd60e51b815260206004820152601e60248201527f4661756365742062616c616e636520697320696e73756666696369656e7400006044820152606401610277565b336000908152600460205260408120805484929061058a9084906107de565b909155505060035460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060491906107bc565b5060405182815233907fc3fb6c98272d7a0d5dc26727b61c00ece2e5bf3dbdc0284659e28d441c1ce06c9060200160405180910390a25050565b6106466106e6565b6001600160a01b0381166106945760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610277565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6cd0bd2905d2dc3f5e94e6aaf28089275da041f0f829ea3a1b12d5c726f86e1a90600090a35050565b6000546001600160a01b031633146107585760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610277565b565b60006020828403121561076c57600080fd5b81356001600160a01b038116811461078357600080fd5b9392505050565b60006020828403121561079c57600080fd5b5035919050565b6000602082840312156107b557600080fd5b5051919050565b6000602082840312156107ce57600080fd5b8151801515811461078357600080fd5b808201808211156107ff57634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220da15bd1ea25e7a7dd6e23f2f355d17f02cc59cfff822d5e8d5b99907c5932a2564736f6c634300081800330000000000000000000000003f685a74e2fe4d5580dffd36b29ef5a419003477
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c80637f846d46116100665780637f846d46146100f85780638da5cb5b1461010b578063b6838cfa1461011e578063c536a73714610131578063d963da351461015057600080fd5b80631627540c146100985780635312ea8e146100ad57806353a47bb7146100c057806379ba5097146100f0575b600080fd5b6100ab6100a636600461075a565b610163565b005b6100ab6100bb36600461078a565b6101bf565b6001546100d3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6102fd565b6100ab61010636600461078a565b6103e7565b6000546100d3906001600160a01b031681565b6003546100d3906001600160a01b031681565b61014269d3c21bcecceda100000081565b6040519081526020016100e7565b6100ab61015e36600461075a565b61063e565b61016b6106e6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b6101c76106e6565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023391906107a3565b8111156102805760405162461bcd60e51b8152602060048201526016602482015275416d6f756e7420657863656564732062616c616e636560501b60448201526064015b60405180910390fd5b60035460005460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f991906107bc565b5050565b6001546001600160a01b031633146103755760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610277565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600081116104375760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610277565b3360009081526004602052604090205469d3c21bcecceda10000009061045e9083906107de565b11156104ac5760405162461bcd60e51b815260206004820152601c60248201527f52657175657374206578636565647320666175636574206c696d6974000000006044820152606401610277565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051991906107a3565b90508181101561056b5760405162461bcd60e51b815260206004820152601e60248201527f4661756365742062616c616e636520697320696e73756666696369656e7400006044820152606401610277565b336000908152600460205260408120805484929061058a9084906107de565b909155505060035460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060491906107bc565b5060405182815233907fc3fb6c98272d7a0d5dc26727b61c00ece2e5bf3dbdc0284659e28d441c1ce06c9060200160405180910390a25050565b6106466106e6565b6001600160a01b0381166106945760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610277565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6cd0bd2905d2dc3f5e94e6aaf28089275da041f0f829ea3a1b12d5c726f86e1a90600090a35050565b6000546001600160a01b031633146107585760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610277565b565b60006020828403121561076c57600080fd5b81356001600160a01b038116811461078357600080fd5b9392505050565b60006020828403121561079c57600080fd5b5035919050565b6000602082840312156107b557600080fd5b5051919050565b6000602082840312156107ce57600080fd5b8151801515811461078357600080fd5b808201808211156107ff57634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220da15bd1ea25e7a7dd6e23f2f355d17f02cc59cfff822d5e8d5b99907c5932a2564736f6c63430008180033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.