Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x0E190B3a86e02C404C0f348240AB68340B2256f3
Balance 0 ETH
Nonce 1
Code Size 4337 bytes
Last Active
Indexed Transactions 1 (24,460,06724,460,067)
Gas Used (indexed) 75,746
External Etherscan · Sourcify

Contract Bytecode

4337 bytes
0x608060405234801561000f575f5ffd5b5060043610610091575f3560e01c80634ff96110116100645780634ff961101461011b578063715018a6146101375780638da5cb5b14610141578063d2861ead1461015f578063f2fde38b1461017d57610091565b806320800a0014610095578063247b3eac1461009f5780632fe7eeb8146100bb57806333f3d628146100eb575b5f5ffd5b61009d610199565b005b6100b960048036038101906100b49190610948565b6101f3565b005b6100d560048036038101906100d091906109a6565b61023e565b6040516100e291906109eb565b60405180910390f35b61010560048036038101906101009190610a04565b61025b565b60405161011291906109eb565b60405180910390f35b61013560048036038101906101309190610aab565b610280565b005b61013f610593565b005b6101496105a6565b6040516101569190610b57565b60405180910390f35b6101676105cd565b6040516101749190610b57565b60405180910390f35b61019760048036038101906101929190610948565b6105f2565b005b6101a1610674565b5f4790506101ad6105a6565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156101ef573d5f5f3e3d5ffd5b5050565b6101fb610674565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f610264610674565b610276836102706105a6565b846106f2565b6001905092915050565b6002600154036102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90610bca565b60405180910390fd5b600260018190555042841161030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030690610c32565b60405180910390fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0825f1c1115610374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036b90610c9a565b60405180910390fd5b60035f8881526020019081526020015f205f9054906101000a900460ff16156103d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c990610d02565b60405180910390fd5b5f6001888888886103e1610822565b6040516020016103f5959493929190610d85565b604051602081830303815290604052805190602001208386866040515f815260200160405260405161042a9493929190610e01565b6020604051602081039080840390855afa15801561044a573d5f5f3e3d5ffd5b50505060206040510351905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104dc90610c9a565b60405180910390fd5b6104f7866104f1610822565b896106f2565b600160035f8a81526020019081526020015f205f6101000a81548160ff021916908315150217905550868673ffffffffffffffffffffffffffffffffffffffff16610540610822565b73ffffffffffffffffffffffffffffffffffffffff167ff10eae2de0b095be715d0a32380cea8e913ae297b48430b5397024146ce9036560405160405180910390a4506001808190555050505050505050565b61059b610674565b6105a45f610829565b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105fa610674565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065f90610eb4565b60405180910390fd5b61067181610829565b50565b61067c610822565b73ffffffffffffffffffffffffffffffffffffffff1661069a6105a6565b73ffffffffffffffffffffffffffffffffffffffff16146106f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e790610f1c565b60405180910390fd5b565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610723929190610f49565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107719190610fc2565b5f604051808303815f865af19150503d805f81146107aa576040519150601f19603f3d011682016040523d82523d5f602084013e6107af565b606091505b50915091508180156107dc57505f815114806107db5750808060200190518101906107da9190611002565b5b5b61081b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108129061109d565b60405180910390fd5b5050505050565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610917826108ee565b9050919050565b6109278161090d565b8114610931575f5ffd5b50565b5f813590506109428161091e565b92915050565b5f6020828403121561095d5761095c6108ea565b5b5f61096a84828501610934565b91505092915050565b5f819050919050565b61098581610973565b811461098f575f5ffd5b50565b5f813590506109a08161097c565b92915050565b5f602082840312156109bb576109ba6108ea565b5b5f6109c884828501610992565b91505092915050565b5f8115159050919050565b6109e5816109d1565b82525050565b5f6020820190506109fe5f8301846109dc565b92915050565b5f5f60408385031215610a1a57610a196108ea565b5b5f610a2785828601610934565b9250506020610a3885828601610992565b9150509250929050565b5f819050919050565b610a5481610a42565b8114610a5e575f5ffd5b50565b5f81359050610a6f81610a4b565b92915050565b5f60ff82169050919050565b610a8a81610a75565b8114610a94575f5ffd5b50565b5f81359050610aa581610a81565b92915050565b5f5f5f5f5f5f5f60e0888a031215610ac657610ac56108ea565b5b5f610ad38a828b01610992565b9750506020610ae48a828b01610992565b9650506040610af58a828b01610934565b9550506060610b068a828b01610992565b9450506080610b178a828b01610a61565b93505060a0610b288a828b01610a61565b92505060c0610b398a828b01610a97565b91505092959891949750929550565b610b518161090d565b82525050565b5f602082019050610b6a5f830184610b48565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f610bb4601f83610b70565b9150610bbf82610b80565b602082019050919050565b5f6020820190508181035f830152610be181610ba8565b9050919050565b7f5369676e617475726520657870697265642e00000000000000000000000000005f82015250565b5f610c1c601283610b70565b9150610c2782610be8565b602082019050919050565b5f6020820190508181035f830152610c4981610c10565b9050919050565b7f5369676e6174757265204572726f722e000000000000000000000000000000005f82015250565b5f610c84601083610b70565b9150610c8f82610c50565b602082019050919050565b5f6020820190508181035f830152610cb181610c78565b9050919050565b7f57494420576974686472617765642e00000000000000000000000000000000005f82015250565b5f610cec600f83610b70565b9150610cf782610cb8565b602082019050919050565b5f6020820190508181035f830152610d1981610ce0565b9050919050565b5f819050919050565b610d3a610d3582610973565b610d20565b82525050565b5f8160601b9050919050565b5f610d5682610d40565b9050919050565b5f610d6782610d4c565b9050919050565b610d7f610d7a8261090d565b610d5d565b82525050565b5f610d908288610d29565b602082019150610da08287610d29565b602082019150610db08286610d6e565b601482019150610dc08285610d29565b602082019150610dd08284610d6e565b6014820191508190509695505050505050565b610dec81610a42565b82525050565b610dfb81610a75565b82525050565b5f608082019050610e145f830187610de3565b610e216020830186610df2565b610e2e6040830185610de3565b610e3b6060830184610de3565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f610e9e602683610b70565b9150610ea982610e44565b604082019050919050565b5f6020820190508181035f830152610ecb81610e92565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610f06602083610b70565b9150610f1182610ed2565b602082019050919050565b5f6020820190508181035f830152610f3381610efa565b9050919050565b610f4381610973565b82525050565b5f604082019050610f5c5f830185610b48565b610f696020830184610f3a565b9392505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610f9c82610f70565b610fa68185610f7a565b9350610fb6818560208601610f84565b80840191505092915050565b5f610fcd8284610f92565b915081905092915050565b610fe1816109d1565b8114610feb575f5ffd5b50565b5f81519050610ffc81610fd8565b92915050565b5f60208284031215611017576110166108ea565b5b5f61102484828501610fee565b91505092915050565b7f5472616e7366657248656c7065723a3a736166655472616e736665723a2074725f8201527f616e73666572206661696c656400000000000000000000000000000000000000602082015250565b5f611087602d83610b70565b91506110928261102d565b604082019050919050565b5f6020820190508181035f8301526110b48161107b565b905091905056fea26469706673582212205f20b329197d5e58fb347eb8ed8ce69943dc0018d2cb839a8cab900ce452edc364736f6c634300081e0033

Verified Source Code Partial Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: No
Withdraw.sol 166 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


library TransferHelper {
    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeTransfer: transfer failed'
        );
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

contract Withdraw is Ownable, ReentrancyGuard {
    address public signAddr = address(0x45bDA3e95c7Cc1b78089771Bbfbc84deaad5d195);

    mapping(uint256 => bool) public widIsWithdrawed;

    event Withdrawed(address indexed user, address indexed token, uint256 indexed amount);

    constructor() {
        
    }

    function setSignAddr(address _signAddr) public onlyOwner {
        signAddr = _signAddr;
    }
    
    function claimreward(uint256 _wid, uint256 _wAmt, address _tokenAddr, uint256 _deadline, bytes32 r, bytes32 s, uint8 v) public nonReentrant {
        require(_deadline > block.timestamp, "Signature expired.");
        require (uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "Signature Error.");
        require(!widIsWithdrawed[_wid], "WID Withdrawed.");

        address singer = ecrecover(keccak256(abi.encodePacked(_wid, _wAmt, _tokenAddr, _deadline, _msgSender())), v, r, s);        
        require(singer == signAddr, "Signature Error.");        

        TransferHelper.safeTransfer(_tokenAddr, _msgSender(), _wAmt);

        widIsWithdrawed[_wid] = true;

        emit Withdrawed(_msgSender(), _tokenAddr, _wAmt);
    }

    function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        TransferHelper.safeTransfer(tokenAddress, owner(), tokens);
        return true;
    }

    function rescueETH() external onlyOwner {
        uint256 balance = address(this).balance;
        payable(owner()).transfer(balance);
    }
}

Read Contract

owner 0x8da5cb5b → address
signAddr 0xd2861ead → address
widIsWithdrawed 0x2fe7eeb8 → bool

Write Contract 6 functions

These functions modify contract state and require a wallet transaction to execute.

claimreward 0x4ff96110
uint256 _wid
uint256 _wAmt
address _tokenAddr
uint256 _deadline
bytes32 r
bytes32 s
uint8 v
renounceOwnership 0x715018a6
No parameters
rescueETH 0x20800a00
No parameters
rescueToken 0x33f3d628
address tokenAddress
uint256 tokens
returns: bool
setSignAddr 0x247b3eac
address _signAddr
transferOwnership 0xf2fde38b
address newOwner

Top Interactions

AddressTxnsSentReceived
0x79Dd30FE...Ce57 1 1

Recent Transactions

CSV
|
Hash Method Block Age From/To Value Txn Fee Type
0xd4911161...5fa058 0x4ff96110 24,460,067 IN 0x79Dd30FE...Ce57 0 ETH EIP-1559