// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract LiquidityPool {
string public contractName;
address public owner;
modifier onlyOwner() {
require(msg.sender == owner, "Not authorized");
_;
}
constructor(string memory _name) {
contractName = _name; // Set the contract's name
owner = msg.sender;
}
// Function to return contract name
function name() public view returns (string memory) {
return contractName;
}
// Deposit ERC20 tokens to this contract
function depositTokens(address tokenAddress, uint256 amount) external {
IERC20 token = IERC20(tokenAddress);
require(token.transferFrom(msg.sender, address(this), amount), "Transfer failed");
}
// Transfer tokens from this contract to another address
function transferTokens(address tokenAddress, address recipient, uint256 amount) external onlyOwner {
IERC20 token = IERC20(tokenAddress);
require(token.transfer(recipient, amount), "Transfer failed");
}
// Check the balance of ERC20 tokens in this contract
function tokenBalance(address tokenAddress) external view returns (uint256) {
IERC20 token = IERC20(tokenAddress);
return token.balanceOf(address(this));
}
// Withdraw Ether from this contract
function withdrawEther(uint256 amount) external onlyOwner {
require(address(this).balance >= amount, "Insufficient Ether balance");
payable(owner).transfer(amount);
}
// Check the Ether balance of this contract
function etherBalance() external view returns (uint256) {
return address(this).balance;
}
// Transfer contract ownership
function transferOwnership(address newOwner) external onlyOwner {
require(newOwner != address(0), "Invalid address");
owner = newOwner;
}
}
{
"compilationTarget": {
"LiquidityPool.sol": "LiquidityPool"
},
"evmVersion": "cancun",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"contractName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"etherBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"tokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"}]