NativeTokenDeposit

Description:

Smart contract deployed on Ethereum with Factory features.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "src/NativeTokenDeposit.sol": {
      "content": "// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

/// @title NativeTokenDeposit
/// @notice Deposit and withdraw native token
contract NativeTokenDeposit {
    address public OWNER;

    error OnlyOwner();
    error InvalidAddress();
    error InsufficientDepositAmount();
    error InsufficientWithdrawAmount();

    event TokenDeposited(address indexed from, address indexed recipient, uint256 indexed amount);
    event TokenWithdrawn(address indexed to, uint256 indexed amount);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    mapping(address => uint256) balanceOf;

    modifier onlyOwner() {
        if (msg.sender != OWNER) revert OnlyOwner();
        _;
    }

    constructor(address owner) {
        OWNER = owner;
        emit OwnershipTransferred(address(0), OWNER);
    }

    function deposit(address recipient, uint256 amount) external payable {
        if (amount > msg.value) {
            revert InsufficientDepositAmount();
        }
        if (recipient == address(0)) {
            revert InvalidAddress();
        }
        emit TokenDeposited(msg.sender, recipient, msg.value);
    }

    function withdraw(address to, uint256 amount) external onlyOwner {
        if (address(this).balance < amount) {
            revert InsufficientWithdrawAmount();
        }
        if (to == address(0)) {
            revert InvalidAddress();
        }
        payable(to).transfer(amount);
        emit TokenWithdrawn(to, amount);
    }

    function transferOwnership(address newOwner) external onlyOwner {
        if (newOwner == address(0)) {
            revert InvalidAddress();
        }
        emit OwnershipTransferred(OWNER, newOwner);
        OWNER = newOwner;
    }

    receive() external payable {
        emit TokenDeposited(msg.sender, msg.sender, msg.value);
    }
}
"
    }
  },
  "settings": {
    "remappings": [
      "@openzeppelin/contracts/=lib/circles-contracts-v2/lib/openzeppelin-contracts/contracts/",
      "circles-contracts-v2/=lib/circles-contracts-v2/src/",
      "circles-token-offer/=lib/circles-token-offer/",
      "ds-test/=lib/circles-contracts-v2/lib/forge-std/lib/ds-test/src/",
      "erc4626-tests/=lib/circles-contracts-v2/lib/openzeppelin-contracts/lib/erc4626-tests/",
      "forge-std/=lib/forge-std/src/",
      "openzeppelin-contracts/=lib/circles-contracts-v2/lib/openzeppelin-contracts/",
      "solady/=lib/solady/src/"
    ],
    "optimizer": {
      "enabled": false,
      "runs": 200
    },
    "metadata": {
      "useLiteralContent": false,
      "bytecodeHash": "ipfs",
      "appendCBOR": true
    },
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    },
    "evmVersion": "prague",
    "viaIR": false
  }
}}

Tags:
Factory|addr:0xf55b932e85fc524c35955a6071ed583ec25abfbd|verified:true|block:23646171|tx:0x7f657de2c830240120cbd8081b19654103c02744b506813a93b3189732ed718b|first_check:1761324425

Submitted on: 2025-10-24 18:47:05

Comments

Log in to comment.

No comments yet.