账户
0x94...a990
0x94...A990

0x94...A990

$500
此合同的源代码已经过验证!
合同元数据
编译器
0.8.28+commit.7893614a
语言
Solidity
合同源代码
文件 1 的 1:UpgradedSDCP.sol
pragma solidity ^0.8.0;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
}

contract UpgradedSDCP {
    address public owner;
    address public previousSDCP;

    event TokensRecovered(address token, uint256 amount, address recipient);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor(address _previousSDCP) {
        require(_previousSDCP != address(0), "Previous SDCP address cannot be zero");
        owner = msg.sender;
        previousSDCP = _previousSDCP;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Caller is not the owner");
        _;
    }

    /**
     * @notice Recover tokens from the previous SDCP contract.
     * @param tokenAddress The address of the token to recover.
     * @param recipient The address to receive the recovered tokens.
     */
    function recoverTokens(address tokenAddress, address recipient) external onlyOwner {
        require(tokenAddress != address(0), "Token address cannot be zero");
        require(recipient != address(0), "Recipient address cannot be zero");

        IERC20 token = IERC20(tokenAddress);
        uint256 balance = token.balanceOf(previousSDCP);
        require(balance > 0, "No tokens to recover");

        // Call the token's transfer method to recover tokens
        require(token.transfer(recipient, balance), "Token transfer failed");
        emit TokensRecovered(tokenAddress, balance, recipient);
    }

    /**
     * @notice Transfer ownership of this contract to a new owner.
     * @param newOwner The address of the new owner.
     */
    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "New owner cannot be the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}
设置
{
  "compilationTarget": {
    "UpgradedSDCP.sol": "UpgradedSDCP"
  },
  "evmVersion": "cancun",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "remappings": []
}
ABI
[{"inputs":[{"internalType":"address","name":"_previousSDCP","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"TokensRecovered","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousSDCP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]