ETH Price: $3,304.17 (-1.08%)

Contract

0x1F75881DC0707b5236f739b5B64A87c211294Abb
 
Transaction Hash
Method
Block
From
To
Pause214092242024-12-15 16:51:117 days ago1734281471IN
0x1F75881D...211294Abb
0 ETH0.0005905312.90413993
Deposit214092232024-12-15 16:50:597 days ago1734281459IN
0x1F75881D...211294Abb
0.15 ETH0.0005904212.32768693
Pause214092222024-12-15 16:50:477 days ago1734281447IN
0x1F75881D...211294Abb
0 ETH0.0002973512.46711919
Pause213975452024-12-14 1:43:239 days ago1734140603IN
0x1F75881D...211294Abb
0 ETH0.0004771810.42734647
Deposit213975442024-12-14 1:43:119 days ago1734140591IN
0x1F75881D...211294Abb
0.01 ETH0.0007230711.1252464
Pause213975432024-12-14 1:42:599 days ago1734140579IN
0x1F75881D...211294Abb
0 ETH0.0002747811.52092423
Pause206500372024-08-31 17:26:59113 days ago1725125219IN
0x1F75881D...211294Abb
0 ETH0.000061582.6
Deposit205800492024-08-21 22:43:23123 days ago1724280203IN
0x1F75881D...211294Abb
0.0000181 ETH0.000020230.86594614
Deposit205537062024-08-18 6:25:35126 days ago1723962335IN
0x1F75881D...211294Abb
0.00002699 ETH0.000021030.90003632
Deposit205536992024-08-18 6:24:11126 days ago1723962251IN
0x1F75881D...211294Abb
0.00001475 ETH0.000021220.90821027
Deposit204384292024-08-02 4:19:11143 days ago1722572351IN
0x1F75881D...211294Abb
0.00031 ETH0.000035051.5
Deposit204295602024-07-31 22:37:11144 days ago1722465431IN
0x1F75881D...211294Abb
0.003 ETH0.000093494
Pause204269182024-07-31 13:45:23144 days ago1722433523IN
0x1F75881D...211294Abb
0 ETH0.0007167915.66325809
Deposit204268712024-07-31 13:35:59144 days ago1722432959IN
0x1F75881D...211294Abb
0.005 ETH0.000921614.17985166
Deposit204268442024-07-31 13:30:35144 days ago1722432635IN
0x1F75881D...211294Abb
0.03007 ETH0.0009396914.45811684
Deposit204268062024-07-31 13:22:59144 days ago1722432179IN
0x1F75881D...211294Abb
0.03327 ETH0.0006870910.57160787
Deposit204267352024-07-31 13:08:47144 days ago1722431327IN
0x1F75881D...211294Abb
0.062179 ETH0.000453319.46501669
Deposit204267152024-07-31 13:04:47144 days ago1722431087IN
0x1F75881D...211294Abb
0.033279 ETH0.000603799.29003337
Deposit204267132024-07-31 13:04:23144 days ago1722431063IN
0x1F75881D...211294Abb
0.030179 ETH0.000645349.92928237
Deposit204267032024-07-31 13:02:23144 days ago1722430943IN
0x1F75881D...211294Abb
0.05 ETH0.00054858.43929276
Deposit204266992024-07-31 13:01:35144 days ago1722430895IN
0x1F75881D...211294Abb
0.0035 ETH0.000620449.54619262
Deposit204266962024-07-31 13:00:59144 days ago1722430859IN
0x1F75881D...211294Abb
0.04 ETH0.000587129.03352134
Deposit204266722024-07-31 12:56:11144 days ago1722430571IN
0x1F75881D...211294Abb
0.03015 ETH0.000466527.17796854
Deposit204266692024-07-31 12:55:35144 days ago1722430535IN
0x1F75881D...211294Abb
0.03015 ETH0.000442726.81179722
Deposit204266582024-07-31 12:53:23144 days ago1722430403IN
0x1F75881D...211294Abb
0.03015 ETH0.000506627.79502053
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
214092232024-12-15 16:50:597 days ago1734281459
0x1F75881D...211294Abb
0.15 ETH
213975442024-12-14 1:43:119 days ago1734140591
0x1F75881D...211294Abb
0.01 ETH
204268712024-07-31 13:35:59144 days ago1722432959
0x1F75881D...211294Abb
0.005 ETH
204268442024-07-31 13:30:35144 days ago1722432635
0x1F75881D...211294Abb
0.03007 ETH
204268062024-07-31 13:22:59144 days ago1722432179
0x1F75881D...211294Abb
0.03327 ETH
204267352024-07-31 13:08:47144 days ago1722431327
0x1F75881D...211294Abb
0.062179 ETH
204267152024-07-31 13:04:47144 days ago1722431087
0x1F75881D...211294Abb
0.033279 ETH
204267132024-07-31 13:04:23144 days ago1722431063
0x1F75881D...211294Abb
0.030179 ETH
204267032024-07-31 13:02:23144 days ago1722430943
0x1F75881D...211294Abb
0.05 ETH
204266992024-07-31 13:01:35144 days ago1722430895
0x1F75881D...211294Abb
0.0035 ETH
204266962024-07-31 13:00:59144 days ago1722430859
0x1F75881D...211294Abb
0.04 ETH
204266722024-07-31 12:56:11144 days ago1722430571
0x1F75881D...211294Abb
0.03015 ETH
204266692024-07-31 12:55:35144 days ago1722430535
0x1F75881D...211294Abb
0.03015 ETH
204266582024-07-31 12:53:23144 days ago1722430403
0x1F75881D...211294Abb
0.03015 ETH
204266402024-07-31 12:49:47144 days ago1722430187
0x1F75881D...211294Abb
0.03015 ETH
204266102024-07-31 12:43:47144 days ago1722429827
0x1F75881D...211294Abb
0.00084 ETH
204266072024-07-31 12:43:11144 days ago1722429791
0x1F75881D...211294Abb
0.28 ETH
204265972024-07-31 12:41:11144 days ago1722429671
0x1F75881D...211294Abb
0.1492 ETH
204265962024-07-31 12:40:59144 days ago1722429659
0x1F75881D...211294Abb
0.149 ETH
204265952024-07-31 12:40:47144 days ago1722429647
0x1F75881D...211294Abb
0.101 ETH
204265782024-07-31 12:37:23144 days ago1722429443
0x1F75881D...211294Abb
0.03015 ETH
204265662024-07-31 12:34:59144 days ago1722429299
0x1F75881D...211294Abb
0.001731 ETH
204265472024-07-31 12:31:11144 days ago1722429071
0x1F75881D...211294Abb
0.03015 ETH
204265432024-07-31 12:30:23144 days ago1722429023
0x1F75881D...211294Abb
0.030172 ETH
204265312024-07-31 12:27:59144 days ago1722428879
0x1F75881D...211294Abb
0.030172 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ElixirDeposit

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 3 : ElixirDeposit.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.20;

import {Ownable} from "openzeppelin/access/Ownable.sol";

/// @title Elixir deposit contract
/// @author The Elixir Team
/// @notice This contract is used to deposit funds
contract ElixirDeposit is Ownable {
    /*//////////////////////////////////////////////////////////////
                                VARIABLES
    //////////////////////////////////////////////////////////////*/

    /// @notice The address of the Elixir multisig wallet with control of funds
    address public controller;

    /// @notice Mapping of address to deposited amount
    mapping(address user => uint256 amount) public deposits;

    /// @notice The pause status of deposits. True if deposits are paused.
    bool public depositsPaused;

    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    /// @notice Emitted when a deposit is made.
    /// @param caller The caller of the deposit function, for which tokens are taken from.
    /// @param amount The token amount deposited.
    event Deposit(address indexed caller, uint256 indexed amount);

    /*//////////////////////////////////////////////////////////////
                                 ERRORS
    //////////////////////////////////////////////////////////////*/

    /// @notice Emitted when deposits are paused.
    error DepositsPaused();

    /// @notice Emitted when deposit fails.
    error DepositFailed();

    /*//////////////////////////////////////////////////////////////
                                MODIFIERS
    //////////////////////////////////////////////////////////////*/

    /// @notice Reverts when deposits are paused.
    modifier whenDepositNotPaused() {
        if (depositsPaused) revert DepositsPaused();
        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    /// @notice Constructor for the ElixirDeposit contract
    /// @param _owner The address of the owner of the contract
    constructor(address _owner) Ownable(_owner) {}

    /*//////////////////////////////////////////////////////////////
                             EXTERNAL FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    /// @notice Deposit funds into the contract
    function deposit() external payable whenDepositNotPaused {
        deposits[msg.sender] += msg.value;

        (bool sent,) = controller.call{value: msg.value}("");
        if (!sent) revert DepositFailed();

        emit Deposit(msg.sender, msg.value);
    }

    /// @notice Pause deposits, callable by the owner
    /// @param pauseDeposits True if deposits are to be paused, false if they are to be unpaused
    function pause(bool pauseDeposits) external onlyOwner {
        depositsPaused = pauseDeposits;
    }

    /// @notice Set controller address, callable by the owner
    /// @param _controller controller address to be set
    function setController(address _controller) external onlyOwner {
        controller = _controller;
    }
}

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

pragma solidity ^0.8.20;

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

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

pragma solidity ^0.8.20;

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DepositFailed","type":"error"},{"inputs":[],"name":"DepositsPaused","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","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"},{"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositsPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"pauseDeposits","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405161057738038061057783398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b61047a806100fd6000396000f3fe6080604052600436106100865760003560e01c806392eefe9b1161005957806392eefe9b14610123578063d0e30db014610143578063f2fde38b1461014b578063f77c47911461016b578063fc7e286d1461018b57600080fd5b806302329a291461008b57806360da3e83146100ad578063715018a6146100dc5780638da5cb5b146100f1575b600080fd5b34801561009757600080fd5b506100ab6100a63660046103cb565b6101c6565b005b3480156100b957600080fd5b506003546100c79060ff1681565b60405190151581526020015b60405180910390f35b3480156100e857600080fd5b506100ab6101e1565b3480156100fd57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016100d3565b34801561012f57600080fd5b506100ab61013e3660046103f4565b6101f5565b6100ab61021f565b34801561015757600080fd5b506100ab6101663660046103f4565b61030b565b34801561017757600080fd5b5060015461010b906001600160a01b031681565b34801561019757600080fd5b506101b86101a63660046103f4565b60026020526000908152604090205481565b6040519081526020016100d3565b6101ce61034e565b6003805460ff1916911515919091179055565b6101e961034e565b6101f3600061037b565b565b6101fd61034e565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60035460ff16156102435760405163deeb694360e01b815260040160405180910390fd5b336000908152600260205260408120805434929061026290849061041d565b90915550506001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146102b4576040519150601f19603f3d011682016040523d82523d6000602084013e6102b9565b606091505b50509050806102db576040516379cacff160e01b815260040160405180910390fd5b604051349033907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c90600090a350565b61031361034e565b6001600160a01b03811661034257604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61034b8161037b565b50565b6000546001600160a01b031633146101f35760405163118cdaa760e01b8152336004820152602401610339565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103dd57600080fd5b813580151581146103ed57600080fd5b9392505050565b60006020828403121561040657600080fd5b81356001600160a01b03811681146103ed57600080fd5b8082018082111561043e57634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220ba9961c8b66983fd9da1914a75efcbaa4c3e48aa7f1ef70c2b4b433cad068b5c64736f6c6343000814003300000000000000000000000085f45b3ab65132b38b71e19ff9cf33106217a644

Deployed Bytecode

0x6080604052600436106100865760003560e01c806392eefe9b1161005957806392eefe9b14610123578063d0e30db014610143578063f2fde38b1461014b578063f77c47911461016b578063fc7e286d1461018b57600080fd5b806302329a291461008b57806360da3e83146100ad578063715018a6146100dc5780638da5cb5b146100f1575b600080fd5b34801561009757600080fd5b506100ab6100a63660046103cb565b6101c6565b005b3480156100b957600080fd5b506003546100c79060ff1681565b60405190151581526020015b60405180910390f35b3480156100e857600080fd5b506100ab6101e1565b3480156100fd57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016100d3565b34801561012f57600080fd5b506100ab61013e3660046103f4565b6101f5565b6100ab61021f565b34801561015757600080fd5b506100ab6101663660046103f4565b61030b565b34801561017757600080fd5b5060015461010b906001600160a01b031681565b34801561019757600080fd5b506101b86101a63660046103f4565b60026020526000908152604090205481565b6040519081526020016100d3565b6101ce61034e565b6003805460ff1916911515919091179055565b6101e961034e565b6101f3600061037b565b565b6101fd61034e565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60035460ff16156102435760405163deeb694360e01b815260040160405180910390fd5b336000908152600260205260408120805434929061026290849061041d565b90915550506001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146102b4576040519150601f19603f3d011682016040523d82523d6000602084013e6102b9565b606091505b50509050806102db576040516379cacff160e01b815260040160405180910390fd5b604051349033907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c90600090a350565b61031361034e565b6001600160a01b03811661034257604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61034b8161037b565b50565b6000546001600160a01b031633146101f35760405163118cdaa760e01b8152336004820152602401610339565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103dd57600080fd5b813580151581146103ed57600080fd5b9392505050565b60006020828403121561040657600080fd5b81356001600160a01b03811681146103ed57600080fd5b8082018082111561043e57634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220ba9961c8b66983fd9da1914a75efcbaa4c3e48aa7f1ef70c2b4b433cad068b5c64736f6c63430008140033

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

00000000000000000000000085f45b3ab65132b38b71e19ff9cf33106217a644

-----Decoded View---------------
Arg [0] : _owner (address): 0x85F45B3Ab65132b38b71e19fF9cF33106217a644

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000085f45b3ab65132b38b71e19ff9cf33106217a644


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.