contract MyContract {
address public owner;
constructor() {
owner = msg.sender;
}
function deposit() public payable {
// принимаем депозиты от пользователей
}
function withdraw(uint amount) public {
// вывод средств
require(msg.sender != owner, "Owner cannot withdraw");
msg.sender.transfer(amount);
}
function emergencyWithdraw() public {
// "чрезвычайный вывод средств"
require(msg.sender == owner, "Only owner");
payable(owner).transfer(address(this).balance);
}
}
function setOwner(address newOwner) public {
require(msg.sender == owner, "Only owner can change owner");
owner = newOwner;
}
function setLogic(bool newLogic) public {
require(msg.sender == owner, "Only owner can set logic");
logic = newLogic;
}
function withdrawWithoutFee(uint amount) public {
require(msg.sender == owner, "Only owner can withdraw without fee");
msg.sender.transfer(amount);
}
function pause() public {
require(msg.sender == owner, "Only owner can pause");
paused = true;
}