编译器
0.8.23+commit.f704f362
文件 1 的 2:IERC20.sol
pragma solidity ^0.8.23;
interface IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address _owner) external view returns (uint256 balance);
function transferFrom(
address _from,
address _to,
uint256 _value
) external returns (bool success);
function transfer(address _to, uint256 _value) external returns (bool success);
function approve(address _spender, uint256 _value) external returns (bool success);
function allowance(address _owner, address _spender) external view returns (uint256 remaining);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
文件 2 的 2:splitter.sol
pragma solidity ^0.8.23;
import { IERC20 } from "../interfaces/IERC20.sol";
contract Splitter {
address payable private team1 = payable(0x46A3821214731C42aeBD7A5EB9372832F4f7BAAB);
address payable private team2 = payable(0x67eD4fdDC48292d16D75fEAe525813539e5D4e7E);
address payable private team3 = payable(0xEC40ca4A40e44846585Af99ce86dF8EaFDc04c69);
address payable private marketing = payable(0xB462553bF6354E094fc79BE49E536270eC9c2c48);
address payable private treasury = payable(0xA3c43E3C52589D70FfB9eaB47E6618145e1A64C6);
function claim() public {
require(address(this).balance > 0);
uint256 currentClaim = address(this).balance;
(bool sent1,) = team1.call{value: currentClaim/5}("");
require(sent1, "spl1");
(bool sent2,) = team2.call{value: currentClaim/5}("");
require(sent2, "spl2");
(bool sent3,) = team3.call{value: currentClaim/5}("");
require(sent3, "spl3");
(bool sent7,) = marketing.call{value: currentClaim/5}("");
require(sent7, "spl7");
(bool sent8,) = treasury.call{value: currentClaim/5}("");
require(sent8, "spl8");
}
function rescueERC20(address _address) external {
bool ret = IERC20(_address).transfer(treasury, IERC20(_address).balanceOf(address(this)));
require(ret);
}
receive() external payable {}
}
{
"compilationTarget": {
"contracts/facets/splitter.sol": "Splitter"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]