ETH Price: $3,307.26 (-4.12%)

Contract

0xdC5a28885A1800b1435982954Ee9b51d2A8D3BF0
 
Transaction Hash
Method
Block
From
To
Transfer212339372024-11-21 5:11:355 days ago1732165895IN
Fee Recipient: 0xdC5...BF0
0.0425026 ETH0.0002797413.28624644
Transfer212251912024-11-19 23:53:117 days ago1732060391IN
Fee Recipient: 0xdC5...BF0
0.03183143 ETH0.000195429.28188053
Transfer211908032024-11-15 4:47:1111 days ago1731646031IN
Fee Recipient: 0xdC5...BF0
0.03775313 ETH0.0004043319.2036273
Transfer211730952024-11-12 17:28:2314 days ago1731432503IN
Fee Recipient: 0xdC5...BF0
0.0684308 ETH0.0009973647.3695538
Transfer211356042024-11-07 11:53:4719 days ago1730980427IN
Fee Recipient: 0xdC5...BF0
1 wei0.01294882615
Transfer210495162024-10-26 11:32:1131 days ago1729942331IN
Fee Recipient: 0xdC5...BF0
0.05067922 ETH0.000135326.42697998
Transfer209809712024-10-16 22:01:2341 days ago1729116083IN
Fee Recipient: 0xdC5...BF0
0.10540623 ETH0.0002457411.67156561
Transfer209421592024-10-11 11:43:5946 days ago1728647039IN
Fee Recipient: 0xdC5...BF0
0.07360604 ETH0.0002465911.71209457
Transfer207862932024-09-19 18:00:4768 days ago1726768847IN
Fee Recipient: 0xdC5...BF0
0.09249649 ETH0.0004434721.06257762
Transfer207614952024-09-16 6:48:2371 days ago1726469303IN
Fee Recipient: 0xdC5...BF0
5.05713585 ETH0.0004131619.62329036
Transfer206862812024-09-05 18:48:5982 days ago1725562139IN
Fee Recipient: 0xdC5...BF0
0.02590128 ETH0.000054922.60886736
Transfer206075442024-08-25 18:58:4793 days ago1724612327IN
Fee Recipient: 0xdC5...BF0
0.02668328 ETH0.000018440.87611758
Transfer205963032024-08-24 5:14:2394 days ago1724476463IN
Fee Recipient: 0xdC5...BF0
0.0076508 ETH0.000015840.75249794
Transfer204272662024-07-31 14:55:35118 days ago1722437735IN
Fee Recipient: 0xdC5...BF0
0.25454566 ETH0.0005635626.76655059
Transfer204012792024-07-27 23:51:23122 days ago1722124283IN
Fee Recipient: 0xdC5...BF0
0.02996151 ETH0.000025611.21659859
Transfer203914242024-07-26 14:49:11123 days ago1722005351IN
Fee Recipient: 0xdC5...BF0
0.06459266 ETH0.000108375.14744894
Transfer203853722024-07-25 18:31:47124 days ago1721932307IN
Fee Recipient: 0xdC5...BF0
0.0523988 ETH0.000104374.95747908
Transfer200783472024-06-12 21:11:11167 days ago1718226671IN
Fee Recipient: 0xdC5...BF0
0.1075391 ETH0.0003232915.35498473
Transfer200659762024-06-11 3:43:11168 days ago1718077391IN
Fee Recipient: 0xdC5...BF0
0.27857201 ETH0.000151337.18742786
Transfer197504202024-04-28 1:04:11212 days ago1714266251IN
Fee Recipient: 0xdC5...BF0
0.03276244 ETH0.000095324.52723136
Transfer196833012024-04-18 15:41:11222 days ago1713454871IN
Fee Recipient: 0xdC5...BF0
1 wei0.00309508147
Transfer196545812024-04-14 15:10:59226 days ago1713107459IN
Fee Recipient: 0xdC5...BF0
0.07488351 ETH0.0002595512.32752439
Transfer196480512024-04-13 17:10:47227 days ago1713028247IN
Fee Recipient: 0xdC5...BF0
0.04768788 ETH0.0003997218.98502533
Transfer196335302024-04-11 16:20:47229 days ago1712852447IN
Fee Recipient: 0xdC5...BF0
1 wei0.01410685670
Transfer195519492024-03-31 5:58:11240 days ago1711864691IN
Fee Recipient: 0xdC5...BF0
0.03903688 ETH0.0004366620.73927841
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
212360342024-11-21 12:14:235 days ago1732191263
Fee Recipient: 0xdC5...BF0
0.0425026 ETH
212288862024-11-20 12:15:236 days ago1732104923
Fee Recipient: 0xdC5...BF0
0.03183143 ETH
211930312024-11-15 12:15:1111 days ago1731672911
Fee Recipient: 0xdC5...BF0
0.03775313 ETH
211858642024-11-14 12:14:2312 days ago1731586463
Fee Recipient: 0xdC5...BF0
0.01268458 ETH
211787002024-11-13 12:14:2313 days ago1731500063
Fee Recipient: 0xdC5...BF0
0.0684308 ETH
211631862024-11-11 8:15:5915 days ago1731312959
Fee Recipient: 0xdC5...BF0
0.0071596 ETH
211357062024-11-07 12:14:2319 days ago1730981663
Fee Recipient: 0xdC5...BF0
0.01137535 ETH
210927252024-11-01 12:13:5925 days ago1730463239
Fee Recipient: 0xdC5...BF0
0.00351737 ETH
210568942024-10-27 12:14:1130 days ago1730031251
Fee Recipient: 0xdC5...BF0
0.00660001 ETH
210497252024-10-26 12:13:5931 days ago1729944839
Fee Recipient: 0xdC5...BF0
0.06140404 ETH
209852172024-10-17 12:14:1140 days ago1729167251
Fee Recipient: 0xdC5...BF0
0.11661371 ETH
209780512024-10-16 12:14:1141 days ago1729080851
Fee Recipient: 0xdC5...BF0
0.01287257 ETH
209637372024-10-14 12:14:3543 days ago1728908075
Fee Recipient: 0xdC5...BF0
0.00721669 ETH
209494512024-10-12 12:14:2345 days ago1728735263
Fee Recipient: 0xdC5...BF0
0.0112971 ETH
209423092024-10-11 12:14:1146 days ago1728648851
Fee Recipient: 0xdC5...BF0
0.08609897 ETH
208705762024-10-01 12:14:2356 days ago1727784863
Fee Recipient: 0xdC5...BF0
0.01656911 ETH
208634032024-09-30 12:14:5957 days ago1727698499
Fee Recipient: 0xdC5...BF0
0.00745868 ETH
208490692024-09-28 12:15:2359 days ago1727525723
Fee Recipient: 0xdC5...BF0
0.01914305 ETH
208418912024-09-27 12:14:1160 days ago1727439251
Fee Recipient: 0xdC5...BF0
0.00968851 ETH
207917342024-09-20 12:15:1167 days ago1726834511
Fee Recipient: 0xdC5...BF0
0.09249649 ETH
207845772024-09-19 12:15:3568 days ago1726748135
Fee Recipient: 0xdC5...BF0
0.03243216 ETH
207774082024-09-18 12:14:3569 days ago1726661675
Fee Recipient: 0xdC5...BF0
0.00797769 ETH
207631072024-09-16 12:13:5971 days ago1726488839
Fee Recipient: 0xdC5...BF0
5.07762628 ETH
207487782024-09-14 12:14:3573 days ago1726316075
Fee Recipient: 0xdC5...BF0
0.0042225 ETH
206986572024-09-07 12:15:1180 days ago1725711311
Fee Recipient: 0xdC5...BF0
0.0025737 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StafiSuperNodeFeePool

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-27
*/

pragma solidity 0.7.6;

// SPDX-License-Identifier: GPL-3.0-only


library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

interface IStafiFeePool {
    function withdrawEther(address _to, uint256 _amount) external;
}


interface IStafiStorage {

    // Getters
    function getAddress(bytes32 _key) external view returns (address);
    function getUint(bytes32 _key) external view returns (uint);
    function getString(bytes32 _key) external view returns (string memory);
    function getBytes(bytes32 _key) external view returns (bytes memory);
    function getBool(bytes32 _key) external view returns (bool);
    function getInt(bytes32 _key) external view returns (int);
    function getBytes32(bytes32 _key) external view returns (bytes32);

    // Setters
    function setAddress(bytes32 _key, address _value) external;
    function setUint(bytes32 _key, uint _value) external;
    function setString(bytes32 _key, string calldata _value) external;
    function setBytes(bytes32 _key, bytes calldata _value) external;
    function setBool(bytes32 _key, bool _value) external;
    function setInt(bytes32 _key, int _value) external;
    function setBytes32(bytes32 _key, bytes32 _value) external;

    // Deleters
    function deleteAddress(bytes32 _key) external;
    function deleteUint(bytes32 _key) external;
    function deleteString(bytes32 _key) external;
    function deleteBytes(bytes32 _key) external;
    function deleteBool(bytes32 _key) external;
    function deleteInt(bytes32 _key) external;
    function deleteBytes32(bytes32 _key) external;

}


abstract contract StafiBase {

    // Version of the contract
    uint8 public version;

    // The main storage contract where primary persistant storage is maintained
    IStafiStorage stafiStorage = IStafiStorage(0);


    /**
    * @dev Throws if called by any sender that doesn't match a network contract
    */
    modifier onlyLatestNetworkContract() {
        require(getBool(keccak256(abi.encodePacked("contract.exists", msg.sender))), "Invalid or outdated network contract");
        _;
    }


    /**
    * @dev Throws if called by any sender that doesn't match one of the supplied contract or is the latest version of that contract
    */
    modifier onlyLatestContract(string memory _contractName, address _contractAddress) {
        require(_contractAddress == getAddress(keccak256(abi.encodePacked("contract.address", _contractName))), "Invalid or outdated contract");
        _;
    }


    /**
    * @dev Throws if called by any sender that isn't a trusted node
    */
    modifier onlyTrustedNode(address _nodeAddress) {
        require(getBool(keccak256(abi.encodePacked("node.trusted", _nodeAddress))), "Invalid trusted node");
        _;
    }
    
    /**
    * @dev Throws if called by any sender that isn't a super node
    */
    modifier onlySuperNode(address _nodeAddress) {
        require(getBool(keccak256(abi.encodePacked("node.super", _nodeAddress))), "Invalid super node");
        _;
    }


    /**
    * @dev Throws if called by any sender that isn't a registered staking pool
    */
    modifier onlyRegisteredStakingPool(address _stakingPoolAddress) {
        require(getBool(keccak256(abi.encodePacked("stakingpool.exists", _stakingPoolAddress))), "Invalid staking pool");
        _;
    }


    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(roleHas("owner", msg.sender), "Account is not the owner");
        _;
    }


    /**
    * @dev Modifier to scope access to admins
    */
    modifier onlyAdmin() {
        require(roleHas("admin", msg.sender), "Account is not an admin");
        _;
    }


    /**
    * @dev Modifier to scope access to admins
    */
    modifier onlySuperUser() {
        require(roleHas("owner", msg.sender) || roleHas("admin", msg.sender), "Account is not a super user");
        _;
    }


    /**
    * @dev Reverts if the address doesn't have this role
    */
    modifier onlyRole(string memory _role) {
        require(roleHas(_role, msg.sender), "Account does not match the specified role");
        _;
    }


    /// @dev Set the main Storage address
    constructor(address _stafiStorageAddress) {
        // Update the contract address
        stafiStorage = IStafiStorage(_stafiStorageAddress);
    }


    /// @dev Get the address of a network contract by name
    function getContractAddress(string memory _contractName) internal view returns (address) {
        // Get the current contract address
        address contractAddress = getAddress(keccak256(abi.encodePacked("contract.address", _contractName)));
        // Check it
        require(contractAddress != address(0x0), "Contract not found");
        // Return
        return contractAddress;
    }


    /// @dev Get the name of a network contract by address
    function getContractName(address _contractAddress) internal view returns (string memory) {
        // Get the contract name
        string memory contractName = getString(keccak256(abi.encodePacked("contract.name", _contractAddress)));
        // Check it
        require(keccak256(abi.encodePacked(contractName)) != keccak256(abi.encodePacked("")), "Contract not found");
        // Return
        return contractName;
    }


    /// @dev Storage get methods
    function getAddress(bytes32 _key) internal view returns (address) { return stafiStorage.getAddress(_key); }
    function getUint(bytes32 _key) internal view returns (uint256) { return stafiStorage.getUint(_key); }
    function getString(bytes32 _key) internal view returns (string memory) { return stafiStorage.getString(_key); }
    function getBytes(bytes32 _key) internal view returns (bytes memory) { return stafiStorage.getBytes(_key); }
    function getBool(bytes32 _key) internal view returns (bool) { return stafiStorage.getBool(_key); }
    function getInt(bytes32 _key) internal view returns (int256) { return stafiStorage.getInt(_key); }
    function getBytes32(bytes32 _key) internal view returns (bytes32) { return stafiStorage.getBytes32(_key); }
    function getAddressS(string memory _key) internal view returns (address) { return stafiStorage.getAddress(keccak256(abi.encodePacked(_key))); }
    function getUintS(string memory _key) internal view returns (uint256) { return stafiStorage.getUint(keccak256(abi.encodePacked(_key))); }
    function getStringS(string memory _key) internal view returns (string memory) { return stafiStorage.getString(keccak256(abi.encodePacked(_key))); }
    function getBytesS(string memory _key) internal view returns (bytes memory) { return stafiStorage.getBytes(keccak256(abi.encodePacked(_key))); }
    function getBoolS(string memory _key) internal view returns (bool) { return stafiStorage.getBool(keccak256(abi.encodePacked(_key))); }
    function getIntS(string memory _key) internal view returns (int256) { return stafiStorage.getInt(keccak256(abi.encodePacked(_key))); }
    function getBytes32S(string memory _key) internal view returns (bytes32) { return stafiStorage.getBytes32(keccak256(abi.encodePacked(_key))); }

    /// @dev Storage set methods
    function setAddress(bytes32 _key, address _value) internal { stafiStorage.setAddress(_key, _value); }
    function setUint(bytes32 _key, uint256 _value) internal { stafiStorage.setUint(_key, _value); }
    function setString(bytes32 _key, string memory _value) internal { stafiStorage.setString(_key, _value); }
    function setBytes(bytes32 _key, bytes memory _value) internal { stafiStorage.setBytes(_key, _value); }
    function setBool(bytes32 _key, bool _value) internal { stafiStorage.setBool(_key, _value); }
    function setInt(bytes32 _key, int256 _value) internal { stafiStorage.setInt(_key, _value); }
    function setBytes32(bytes32 _key, bytes32 _value) internal { stafiStorage.setBytes32(_key, _value); }
    function setAddressS(string memory _key, address _value) internal { stafiStorage.setAddress(keccak256(abi.encodePacked(_key)), _value); }
    function setUintS(string memory _key, uint256 _value) internal { stafiStorage.setUint(keccak256(abi.encodePacked(_key)), _value); }
    function setStringS(string memory _key, string memory _value) internal { stafiStorage.setString(keccak256(abi.encodePacked(_key)), _value); }
    function setBytesS(string memory _key, bytes memory _value) internal { stafiStorage.setBytes(keccak256(abi.encodePacked(_key)), _value); }
    function setBoolS(string memory _key, bool _value) internal { stafiStorage.setBool(keccak256(abi.encodePacked(_key)), _value); }
    function setIntS(string memory _key, int256 _value) internal { stafiStorage.setInt(keccak256(abi.encodePacked(_key)), _value); }
    function setBytes32S(string memory _key, bytes32 _value) internal { stafiStorage.setBytes32(keccak256(abi.encodePacked(_key)), _value); }

    /// @dev Storage delete methods
    function deleteAddress(bytes32 _key) internal { stafiStorage.deleteAddress(_key); }
    function deleteUint(bytes32 _key) internal { stafiStorage.deleteUint(_key); }
    function deleteString(bytes32 _key) internal { stafiStorage.deleteString(_key); }
    function deleteBytes(bytes32 _key) internal { stafiStorage.deleteBytes(_key); }
    function deleteBool(bytes32 _key) internal { stafiStorage.deleteBool(_key); }
    function deleteInt(bytes32 _key) internal { stafiStorage.deleteInt(_key); }
    function deleteBytes32(bytes32 _key) internal { stafiStorage.deleteBytes32(_key); }
    function deleteAddressS(string memory _key) internal { stafiStorage.deleteAddress(keccak256(abi.encodePacked(_key))); }
    function deleteUintS(string memory _key) internal { stafiStorage.deleteUint(keccak256(abi.encodePacked(_key))); }
    function deleteStringS(string memory _key) internal { stafiStorage.deleteString(keccak256(abi.encodePacked(_key))); }
    function deleteBytesS(string memory _key) internal { stafiStorage.deleteBytes(keccak256(abi.encodePacked(_key))); }
    function deleteBoolS(string memory _key) internal { stafiStorage.deleteBool(keccak256(abi.encodePacked(_key))); }
    function deleteIntS(string memory _key) internal { stafiStorage.deleteInt(keccak256(abi.encodePacked(_key))); }
    function deleteBytes32S(string memory _key) internal { stafiStorage.deleteBytes32(keccak256(abi.encodePacked(_key))); }


    /**
    * @dev Check if an address has this role
    */
    function roleHas(string memory _role, address _address) internal view returns (bool) {
        return getBool(keccak256(abi.encodePacked("access.role", _role, _address)));
    }

}


// receive priority fee
contract StafiSuperNodeFeePool is StafiBase, IStafiFeePool {

    // Libs
    using SafeMath for uint256;

    // Events
    event EtherWithdrawn(string indexed by, address indexed to, uint256 amount, uint256 time);

    // Construct
    constructor(address _stafiStorageAddress) StafiBase(_stafiStorageAddress) {
        // Version
        version = 1;
    }

    // Allow receiving ETH
    receive() payable external {}

    // Withdraws ETH to given address
    // Only accepts calls from network contracts
    function withdrawEther(address _to, uint256 _amount) override external onlyLatestNetworkContract {
        // Valid amount?
        require(_amount > 0, "No valid amount of ETH given to withdraw");
        // Get contract name
        string memory contractName = getContractName(msg.sender);
        // Send the ETH
        (bool result,) = _to.call{value: _amount}("");
        require(result, "Failed to withdraw ETH");
        // Emit ether withdrawn event
        emit EtherWithdrawn(contractName, _to, _amount, block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_stafiStorageAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"by","type":"string"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"EtherWithdrawn","type":"event"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260008060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005157600080fd5b506040516108be3803806108be8339818101604052602081101561007457600080fd5b81019080805190602001909291905050508080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060016000806101000a81548160ff021916908360ff160217905550506107cb806100f36000396000f3fe60806040526004361061002d5760003560e01c8063522f68151461003957806354fd4d501461009457610034565b3661003457005b600080fd5b34801561004557600080fd5b506100926004803603604081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506100c2565b005b3480156100a057600080fd5b506100a9610386565b604051808260ff16815260200191505060405180910390f35b6101323360405160200180807f636f6e74726163742e6578697374730000000000000000000000000000000000815250600f018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140191505060405160208183030381529060405280519060200120610397565b610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061074a6024913960400191505060405180910390fd5b600081116101e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061076e6028913960400191505060405180910390fd5b60006101eb3361044d565b905060008373ffffffffffffffffffffffffffffffffffffffff168360405180600001905060006040518083038185875af1925050503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b50509050806102c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4661696c656420746f207769746864726177204554480000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b6020831061031457805182526020820191506020810190506020830392506102f1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207fff381a086696de98df05e634263390296dd1d097ef34a1be9a91daead07fb01d8542604051808381526020018281526020019250505060405180910390a350505050565b60008054906101000a900460ff1681565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d602081101561043557600080fd5b81019080805190602001909291905050509050919050565b606060006104c18360405160200180807f636f6e74726163742e6e616d6500000000000000000000000000000000000000815250600d018273ffffffffffffffffffffffffffffffffffffffff1660601b8152601401915050604051602081830303815290604052805190602001206105d4565b905060405160200180600001905060405160208183030381529060405280519060200120816040516020018082805190602001908083835b6020831061051c57805182526020820191506020810190506020830392506104f9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014156105cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e7472616374206e6f7420666f756e64000000000000000000000000000081525060200191505060405180910390fd5b80915050919050565b6060600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663986e791a836040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561064957600080fd5b505afa15801561065d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561068757600080fd5b81019080805160405193929190846401000000008211156106a757600080fd5b838201915060208201858111156106bd57600080fd5b82518660018202830111640100000000821117156106da57600080fd5b8083526020830192505050908051906020019080838360005b8381101561070e5780820151818401526020810190506106f3565b50505050905090810190601f16801561073b5780820380516001836020036101000a031916815260200191505b50604052505050905091905056fe496e76616c6964206f72206f75746461746564206e6574776f726b20636f6e74726163744e6f2076616c696420616d6f756e74206f662045544820676976656e20746f207769746864726177a264697066735822122078e3658019a16bc1808e162c9f87c5ad2ad05f1e7c1823b4382357341431c93464736f6c634300070600330000000000000000000000006c2f7b6110a37b3b0fbdd811876be368df02e8b0

Deployed Bytecode

0x60806040526004361061002d5760003560e01c8063522f68151461003957806354fd4d501461009457610034565b3661003457005b600080fd5b34801561004557600080fd5b506100926004803603604081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506100c2565b005b3480156100a057600080fd5b506100a9610386565b604051808260ff16815260200191505060405180910390f35b6101323360405160200180807f636f6e74726163742e6578697374730000000000000000000000000000000000815250600f018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140191505060405160208183030381529060405280519060200120610397565b610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061074a6024913960400191505060405180910390fd5b600081116101e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061076e6028913960400191505060405180910390fd5b60006101eb3361044d565b905060008373ffffffffffffffffffffffffffffffffffffffff168360405180600001905060006040518083038185875af1925050503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b50509050806102c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4661696c656420746f207769746864726177204554480000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b6020831061031457805182526020820191506020810190506020830392506102f1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207fff381a086696de98df05e634263390296dd1d097ef34a1be9a91daead07fb01d8542604051808381526020018281526020019250505060405180910390a350505050565b60008054906101000a900460ff1681565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d602081101561043557600080fd5b81019080805190602001909291905050509050919050565b606060006104c18360405160200180807f636f6e74726163742e6e616d6500000000000000000000000000000000000000815250600d018273ffffffffffffffffffffffffffffffffffffffff1660601b8152601401915050604051602081830303815290604052805190602001206105d4565b905060405160200180600001905060405160208183030381529060405280519060200120816040516020018082805190602001908083835b6020831061051c57805182526020820191506020810190506020830392506104f9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014156105cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f436f6e7472616374206e6f7420666f756e64000000000000000000000000000081525060200191505060405180910390fd5b80915050919050565b6060600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663986e791a836040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561064957600080fd5b505afa15801561065d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561068757600080fd5b81019080805160405193929190846401000000008211156106a757600080fd5b838201915060208201858111156106bd57600080fd5b82518660018202830111640100000000821117156106da57600080fd5b8083526020830192505050908051906020019080838360005b8381101561070e5780820151818401526020810190506106f3565b50505050905090810190601f16801561073b5780820380516001836020036101000a031916815260200191505b50604052505050905091905056fe496e76616c6964206f72206f75746461746564206e6574776f726b20636f6e74726163744e6f2076616c696420616d6f756e74206f662045544820676976656e20746f207769746864726177a264697066735822122078e3658019a16bc1808e162c9f87c5ad2ad05f1e7c1823b4382357341431c93464736f6c63430007060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006c2f7b6110a37b3b0fbdd811876be368df02e8b0

-----Decoded View---------------
Arg [0] : _stafiStorageAddress (address): 0x6c2f7b6110a37b3B0fbdd811876be368df02E8B0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006c2f7b6110a37b3b0fbdd811876be368df02e8b0


Deployed Bytecode Sourcemap

17524:1086:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18057:550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8418:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18057:550;8738:67;8792:10;8756:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8746:58;;;;;;8738:7;:67::i;:::-;8730:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18209:1:::1;18199:7;:11;18191:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18296:26;18325:27;18341:10;18325:15;:27::i;:::-;18296:56;;18389:11;18405:3;:8;;18421:7;18405:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18388:45;;;18452:6;18444:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18569:3;18540:59;;18555:12;18540:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18574:7;18583:15;18540:59;;;;;;;;;;;;;;;;;;;;;;;;8857:1;;18057:550:::0;;:::o;8418:20::-;;;;;;;;;;;;:::o;12664:98::-;12718:4;12733:12;;;;;;;;;;;:20;;;12754:4;12733:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12726:33;;12664:98;;;:::o;11737:432::-;11811:13;11871:26;11900:73;11954:16;11920:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11910:62;;;;;;11900:9;:73::i;:::-;11871:102;;12068:20;;;;;;;;;;;;;;;;;;;;;12058:31;;;;;;12040:12;12023:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12013:41;;;;;;:76;;12005:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12149:12;12142:19;;;11737:432;;;:::o;12433:111::-;12489:13;12513:12;;;;;;;;;;;:22;;;12536:4;12513:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12506:35;;12433:111;;;:::o

Swarm Source

ipfs://78e3658019a16bc1808e162c9f87c5ad2ad05f1e7c1823b4382357341431c934

 Latest 25 blocks (From a total of 1,676 blocks with 63.14 Ether produced)

Block Transaction Difficulty Gas Used Reward
212690972024-11-26 2:59:4722 hrs ago1732589987480.00 TH2,463,024 (8.21%)
0.006336380752360572 ETH
212466442024-11-22 23:46:474 days ago1732319207820.00 TH3,461,128 (11.54%)
0.007683642240969513 ETH
211822412024-11-14 0:05:4713 days ago1731542747400.00 TH7,131,739 (23.77%)
0.01268458575792349 ETH
211751112024-11-13 0:13:1114 days ago1731456791810.00 TH6,527,371 (21.76%)
0.014041214778187818 ETH
211524852024-11-09 20:28:2317 days ago1731184103610.00 TH3,038,913 (10.13%)
0.007159604513444931 ETH
211356032024-11-07 11:53:3519 days ago1730980415740.00 TH4,678,276 (15.59%)
0.011375353965719343 ETH
210891702024-11-01 0:20:2326 days ago1730420423250.00 TH1,486,931 (4.96%)
0.003517375486373079 ETH
210516002024-10-26 18:30:5931 days ago17299674591110.00 TH5,337,624 (17.79%)
0.006600016412075137 ETH
210471452024-10-26 3:35:1131 days ago1729913711450.00 TH4,021,542 (13.41%)
0.010724823534944227 ETH
209803282024-10-16 19:51:1141 days ago1729108271860.00 TH6,386,139 (21.29%)
0.011207476660941297 ETH
209776222024-10-16 10:47:4741 days ago1729075667570.00 TH3,873,184 (12.91%)
0.007065909774640943 ETH
209765652024-10-16 7:14:5941 days ago1729062899410.00 TH1,881,120 (6.27%)
0.005806667324597062 ETH
209708692024-10-15 12:08:4742 days ago1728994127600.00 TH3,335,610 (11.12%)
0.007550167338567997 ETH
209600372024-10-13 23:49:3544 days ago1728863375780.00 TH4,546,374 (15.15%)
0.00721669274803392 ETH
209468142024-10-12 3:22:4745 days ago1728703367610.00 TH3,091,338 (10.30%)
0.011297101569076938 ETH
209422162024-10-11 11:55:2346 days ago1728647723630.00 TH4,080,850 (13.60%)
0.012492932155032021 ETH
208695552024-10-01 8:49:2356 days ago1727772563590.00 TH4,579,492 (15.26%)
0.009732299911026685 ETH
208652112024-09-30 18:17:3557 days ago1727720255500.00 TH2,828,689 (9.43%)
0.006836813218701415 ETH
208578152024-09-29 17:33:1158 days ago1727631191630.00 TH3,534,139 (11.78%)
0.007458688020479315 ETH
208420652024-09-27 12:49:1160 days ago17274413511400.00 TH8,508,077 (28.36%)
0.019143056071011903 ETH
208382932024-09-27 0:12:2361 days ago1727395943500.00 TH2,542,211 (8.47%)
0.009688519083513523 ETH
207822832024-09-19 4:34:3568 days ago1726720475460.00 TH3,943,693 (13.15%)
0.008921504269698065 ETH
207786712024-09-18 16:28:1169 days ago17266768911060.00 TH8,485,593 (28.29%)
0.023510659684495543 ETH
207758592024-09-18 7:02:1169 days ago1726642931620.00 TH3,981,977 (13.27%)
0.007977699475967376 ETH
207614362024-09-16 6:36:3571 days ago1726468595530.00 TH4,065,143 (13.55%)
0.00849018197131487 ETH
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.