S Price: $0.567734 (-4.15%)

Contract Diff Checker

Contract Name:
SwapProxy

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.

Context size (optional):