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": []
}
}}
Submitted on: 2025-10-28 14:53:10
Comments
Log in to comment.
No comments yet.