SimpleSell

Description:

Smart contract deployed on Ethereum with Factory features.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "EPICswap/selldemo.sol": {
      "content": "// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.20;\r
\r
interface IERC20 {\r
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\r
    function approve(address spender, uint256 amount) external returns (bool);\r
}\r
\r
/// @title 简单的 Token 卖出合约\r
contract SimpleSell {\r
    address public constant TOKEN_SELL = 0x94314a14Df63779c99C0764a30e0CD22fA78fC0E;\r
    address public constant UNIVERSAL_ROUTER = 0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af;\r
\r
    event Sold(uint256 amountIn, uint256 ethOut);\r
\r
    /// @notice 卖出 token 换取 ETH\r
    /// @param sellAmount 要卖出的 token 数量\r
    function sell(uint256 sellAmount) external payable returns (uint256 ethOut) {\r
        // 1. 用户转入 TOKEN\r
        IERC20(TOKEN_SELL).transferFrom(msg.sender, address(this), sellAmount);\r
\r
        // 2. 授权给 Universal Router\r
        IERC20(TOKEN_SELL).approve(UNIVERSAL_ROUTER, sellAmount);\r
\r
        // 3. 记录调用前的 ETH 余额\r
        uint256 ethBefore = address(this).balance;\r
\r
        // 4. 构造 Universal Router 调用\r
        // 命令: 0x00 = V4_SWAP\r
        bytes memory commands = hex"00";\r
\r
        // 参数编码\r
        bytes[] memory inputs = new bytes[](1);\r
        inputs[0] = abi.encode(\r
            address(2),     // MSG_SENDER - 接收者\r
            sellAmount,     // amountIn\r
            uint256(0),     // amountOutMinimum\r
            // path: token -> ETH, fee 3000 (0.3%), tickSpacing 60\r
            abi.encodePacked(\r
                TOKEN_SELL,\r
                uint24(3000),\r
                int24(60),\r
                address(0),    // hooks\r
                address(0)     // ETH\r
            ),\r
            false           // payerIsUser = false (合约支付)\r
        );\r
\r
        // 5. 调用 Universal Router\r
        (bool success, ) = UNIVERSAL_ROUTER.call(\r
            abi.encodeWithSignature(\r
                "execute(bytes,bytes[],uint256)",\r
                commands,\r
                inputs,\r
                block.timestamp\r
            )\r
        );\r
\r
        require(success, "Router call failed");\r
\r
        // 6. 计算收到的 ETH\r
        ethOut = address(this).balance - ethBefore;\r
\r
        // 7. 将 ETH 发送给用户\r
        (bool sent, ) = msg.sender.call{value: ethOut}("");\r
        require(sent, "ETH transfer failed");\r
\r
        emit Sold(sellAmount, ethOut);\r
\r
        return ethOut;\r
    }\r
\r
    // 允许接收 ETH\r
    receive() external payable {}\r
}\r
"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": true,
      "runs": 100
    },
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    },
    "remappings": []
  }
}}

Tags:
Factory|addr:0x068990299018dc33e696e294c0de5f5c51f6d433|verified:true|block:23676042|tx:0xe99bc73f3e1ea31d4dde11a5938ac703aaea5ccfb488569e457afce778fc4349|first_check:1761659588

Submitted on: 2025-10-28 14:53:10

Comments

Log in to comment.

No comments yet.