Arbitrum Sepolia Testnet

Contract

0x0572252BCd5016F2541225863B22eA9b8cd5dDca
Source Code Source Code

Overview

ETH Balance

0 ETH

Token Holdings

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount
Faucet Token1474123432025-04-28 15:43:17272 days ago1745854997IN
0x0572252B...b8cd5dDca
0 ETH0.000008470.1
Faucet Token1430586442025-04-15 23:00:47285 days ago1744758047IN
0x0572252B...b8cd5dDca
0 ETH0.000006670.1
Faucet Token1429183322025-04-15 13:17:53285 days ago1744723073IN
0x0572252B...b8cd5dDca
0 ETH0.000008380.1
Faucet Token1405509952025-04-08 16:52:03292 days ago1744131123IN
0x0572252B...b8cd5dDca
0 ETH0.00000840.1
Faucet Token1402748012025-04-07 22:00:15293 days ago1744063215IN
0x0572252B...b8cd5dDca
0 ETH0.000004960.1
Faucet Token1384654312025-04-02 14:49:05298 days ago1743605345IN
0x0572252B...b8cd5dDca
0 ETH0.000004960.1
Faucet Token1384646762025-04-02 14:45:52298 days ago1743605152IN
0x0572252B...b8cd5dDca
0 ETH0.000008380.1
Faucet Token1330051942025-03-16 22:11:30315 days ago1742163090IN
0x0572252B...b8cd5dDca
0 ETH0.000004960.1
Faucet Token1319862922025-03-13 11:57:30318 days ago1741867050IN
0x0572252B...b8cd5dDca
0 ETH0.000011560.1
Faucet Token1314780692025-03-11 20:43:20320 days ago1741725800IN
0x0572252B...b8cd5dDca
0 ETH0.000004960.1
Faucet Token1314500282025-03-11 18:42:06320 days ago1741718526IN
0x0572252B...b8cd5dDca
0 ETH0.000005660.1
Faucet Token1314497242025-03-11 18:40:47320 days ago1741718447IN
0x0572252B...b8cd5dDca
0 ETH0.000009090.1
Faucet Token1291413132025-03-03 20:42:10328 days ago1741034530IN
0x0572252B...b8cd5dDca
0 ETH0.000008880.1
Faucet Token1281941952025-02-28 17:17:03331 days ago1740763023IN
0x0572252B...b8cd5dDca
0 ETH0.000004960.1
Faucet Token1281941662025-02-28 17:16:56331 days ago1740763016IN
0x0572252B...b8cd5dDca
0 ETH0.000008380.1
Faucet Token1277605322025-02-27 8:13:46332 days ago1740644026IN
0x0572252B...b8cd5dDca
0 ETH0.000008380.1
Faucet Token1265703882025-02-23 14:41:36336 days ago1740321696IN
0x0572252B...b8cd5dDca
0 ETH0.000008380.1
Faucet Token1259690432025-02-21 15:57:19338 days ago1740153439IN
0x0572252B...b8cd5dDca
0 ETH0.000004960.1
Faucet Token1237821892025-02-14 13:43:43345 days ago1739540623IN
0x0572252B...b8cd5dDca
0 ETH0.000008380.1
Faucet Token1237548962025-02-14 11:17:13345 days ago1739531833IN
0x0572252B...b8cd5dDca
0 ETH0.000006670.1
Faucet Token1237412312025-02-14 10:05:31345 days ago1739527531IN
0x0572252B...b8cd5dDca
0 ETH0.000008380.1
Faucet Token1227383352025-02-10 21:00:09349 days ago1739221209IN
0x0572252B...b8cd5dDca
0 ETH0.000004960.1
Faucet Token1224847442025-02-09 23:56:47350 days ago1739145407IN
0x0572252B...b8cd5dDca
0 ETH0.000004960.1
Faucet Token1220802212025-02-08 11:42:55351 days ago1739014975IN
0x0572252B...b8cd5dDca
0 ETH0.000008380.1
Faucet Token1215268042025-02-06 13:51:56353 days ago1738849916IN
0x0572252B...b8cd5dDca
0 ETH0.000449950.1
View all transactions

Parent Transaction Hash Block From To Amount
View All Internal Transactions

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);
    }
}

File 2 of 4 : ReentrancyGuard.sol
// 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);
}

Settings
{
  "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"}]

0x608060405234801561001057600080fd5b506040516109d43803806109d483398101604081905261002f9161015a565b33806100825760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a15060016002556001600160a01b0381166101355760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420746f6b656e206164647265737300000000000000000000006044820152606401610079565b600380546001600160a01b0319166001600160a01b039290921691909117905561018a565b60006020828403121561016c57600080fd5b81516001600160a01b038116811461018357600080fd5b9392505050565b61083b806101996000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637f846d46116100665780637f846d46146100f85780638da5cb5b1461010b578063b6838cfa1461011e578063c536a73714610131578063d963da351461015057600080fd5b80631627540c146100985780635312ea8e146100ad57806353a47bb7146100c057806379ba5097146100f0575b600080fd5b6100ab6100a636600461075a565b610163565b005b6100ab6100bb36600461078a565b6101bf565b6001546100d3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6102fd565b6100ab61010636600461078a565b6103e7565b6000546100d3906001600160a01b031681565b6003546100d3906001600160a01b031681565b61014269d3c21bcecceda100000081565b6040519081526020016100e7565b6100ab61015e36600461075a565b61063e565b61016b6106e6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b6101c76106e6565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023391906107a3565b8111156102805760405162461bcd60e51b8152602060048201526016602482015275416d6f756e7420657863656564732062616c616e636560501b60448201526064015b60405180910390fd5b60035460005460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f991906107bc565b5050565b6001546001600160a01b031633146103755760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610277565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600081116104375760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610277565b3360009081526004602052604090205469d3c21bcecceda10000009061045e9083906107de565b11156104ac5760405162461bcd60e51b815260206004820152601c60248201527f52657175657374206578636565647320666175636574206c696d6974000000006044820152606401610277565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051991906107a3565b90508181101561056b5760405162461bcd60e51b815260206004820152601e60248201527f4661756365742062616c616e636520697320696e73756666696369656e7400006044820152606401610277565b336000908152600460205260408120805484929061058a9084906107de565b909155505060035460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060491906107bc565b5060405182815233907fc3fb6c98272d7a0d5dc26727b61c00ece2e5bf3dbdc0284659e28d441c1ce06c9060200160405180910390a25050565b6106466106e6565b6001600160a01b0381166106945760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610277565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6cd0bd2905d2dc3f5e94e6aaf28089275da041f0f829ea3a1b12d5c726f86e1a90600090a35050565b6000546001600160a01b031633146107585760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610277565b565b60006020828403121561076c57600080fd5b81356001600160a01b038116811461078357600080fd5b9392505050565b60006020828403121561079c57600080fd5b5035919050565b6000602082840312156107b557600080fd5b5051919050565b6000602082840312156107ce57600080fd5b8151801515811461078357600080fd5b808201808211156107ff57634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220da15bd1ea25e7a7dd6e23f2f355d17f02cc59cfff822d5e8d5b99907c5932a2564736f6c634300081800330000000000000000000000003f685a74e2fe4d5580dffd36b29ef5a419003477

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c80637f846d46116100665780637f846d46146100f85780638da5cb5b1461010b578063b6838cfa1461011e578063c536a73714610131578063d963da351461015057600080fd5b80631627540c146100985780635312ea8e146100ad57806353a47bb7146100c057806379ba5097146100f0575b600080fd5b6100ab6100a636600461075a565b610163565b005b6100ab6100bb36600461078a565b6101bf565b6001546100d3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6102fd565b6100ab61010636600461078a565b6103e7565b6000546100d3906001600160a01b031681565b6003546100d3906001600160a01b031681565b61014269d3c21bcecceda100000081565b6040519081526020016100e7565b6100ab61015e36600461075a565b61063e565b61016b6106e6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b6101c76106e6565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023391906107a3565b8111156102805760405162461bcd60e51b8152602060048201526016602482015275416d6f756e7420657863656564732062616c616e636560501b60448201526064015b60405180910390fd5b60035460005460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f991906107bc565b5050565b6001546001600160a01b031633146103755760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610277565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600081116104375760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610277565b3360009081526004602052604090205469d3c21bcecceda10000009061045e9083906107de565b11156104ac5760405162461bcd60e51b815260206004820152601c60248201527f52657175657374206578636565647320666175636574206c696d6974000000006044820152606401610277565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051991906107a3565b90508181101561056b5760405162461bcd60e51b815260206004820152601e60248201527f4661756365742062616c616e636520697320696e73756666696369656e7400006044820152606401610277565b336000908152600460205260408120805484929061058a9084906107de565b909155505060035460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060491906107bc565b5060405182815233907fc3fb6c98272d7a0d5dc26727b61c00ece2e5bf3dbdc0284659e28d441c1ce06c9060200160405180910390a25050565b6106466106e6565b6001600160a01b0381166106945760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610277565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6cd0bd2905d2dc3f5e94e6aaf28089275da041f0f829ea3a1b12d5c726f86e1a90600090a35050565b6000546001600160a01b031633146107585760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610277565b565b60006020828403121561076c57600080fd5b81356001600160a01b038116811461078357600080fd5b9392505050565b60006020828403121561079c57600080fd5b5035919050565b6000602082840312156107b557600080fd5b5051919050565b6000602082840312156107ce57600080fd5b8151801515811461078357600080fd5b808201808211156107ff57634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220da15bd1ea25e7a7dd6e23f2f355d17f02cc59cfff822d5e8d5b99907c5932a2564736f6c63430008180033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
0x0572252BCd5016F2541225863B22eA9b8cd5dDca
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.