Discover more of SonicScan Block Explorer's tools and services in one place.
Contract Source Code:
File 1 of 1 : SwapProxy
/** *Submitted for verification at SonicScan.org on 2025-03-04 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @title SwapProxy * @dev Bu kontrat, FARMER token kontratının swap işlemlerinde ETH alabilmesi için kullanılır. * Pair kontratındaki "to != token0 && to != token1" kısıtlamasını aşmak için aracı olarak çalışır. */ contract SwapProxy { address public owner; address public farmerContract; bool public initialized; /** * @dev Kontrat oluşturulduğunda owner adresi ayarlanır. */ constructor() { owner = msg.sender; } /** * @dev ETH alabilmek için receive fonksiyonu */ receive() external payable {} /** * @dev Sadece owner tarafından çağrılabilir */ modifier onlyOwner() { require(msg.sender == owner, "Caller is not the owner"); _; } /** * @dev Sadece FARMER kontratı tarafından çağrılabilir */ modifier onlyFarmerContract() { require(msg.sender == farmerContract, "Not authorized"); _; } /** * @dev FARMER kontrat adresini ayarlar. Sadece bir kez çağrılabilir. * @param _farmerContract FARMER kontratının adresi */ function setFarmerContract(address _farmerContract) external onlyOwner { require(!initialized, "Already initialized"); require(_farmerContract != address(0), "Invalid address"); farmerContract = _farmerContract; initialized = true; } /** * @dev Owner'ı değiştirir * @param newOwner Yeni owner adresi */ function transferOwnership(address newOwner) external onlyOwner { require(newOwner != address(0), "New owner is the zero address"); owner = newOwner; } /** * @dev ETH'yi FARMER kontratına gönderir. Sadece FARMER kontratı tarafından çağrılabilir. */ function sendETHToFarmer() external onlyFarmerContract { uint256 balance = address(this).balance; require(balance > 0, "No ETH balance to send"); // Daha yüksek gas limiti ile ETH transferi (bool success, ) = payable(farmerContract).call{value: balance, gas: 50000}(""); require(success, "ETH transfer failed"); } /** * @dev Acil durumlarda ETH'yi owner'a gönderir */ function emergencyWithdraw() external onlyOwner { uint256 balance = address(this).balance; if (balance > 0) { (bool success, ) = payable(owner).call{value: balance}(""); require(success, "ETH transfer failed"); } } }
Please enter a contract address above to load the contract details and source code.
Please DO NOT store any passwords or private keys here. A private note (up to 100 characters) can be saved and is useful for transaction tracking.
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.