ETH Price: $2,704.22 (-1.27%)
Gas: 0.79 Gwei

Contract

0xd4E96eF8eee8678dBFf4d535E033Ed1a4F7605b7
 

Overview

ETH Balance

6.565349005502822761 ETH

Eth Value

$17,754.15 (@ $2,704.22/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer218537952025-02-15 19:05:2323 mins ago1739646323IN
Rocket Pool Smoothing Pool
0.01463543 ETH0.000016370.77770586
Transfer218537932025-02-15 19:04:5924 mins ago1739646299IN
Rocket Pool Smoothing Pool
0.0109861 ETH0.000016130.7661527
Transfer218536802025-02-15 18:42:2346 mins ago1739644943IN
Rocket Pool Smoothing Pool
0.01406156 ETH0.000017380.82548476
Transfer218536262025-02-15 18:31:3557 mins ago1739644295IN
Rocket Pool Smoothing Pool
0.00773888 ETH0.000017130.81373792
Transfer218534802025-02-15 18:01:471 hr ago1739642507IN
Rocket Pool Smoothing Pool
0.01541456 ETH0.00001720.81733367
Transfer218533132025-02-15 17:28:112 hrs ago1739640491IN
Rocket Pool Smoothing Pool
0.01677659 ETH0.000017960.85344411
Transfer218532672025-02-15 17:18:592 hrs ago1739639939IN
Rocket Pool Smoothing Pool
0.02388111 ETH0.000017620.83725275
Transfer218532492025-02-15 17:15:232 hrs ago1739639723IN
Rocket Pool Smoothing Pool
0.01057944 ETH0.000016870.8012541
Transfer218531372025-02-15 16:52:592 hrs ago1739638379IN
Rocket Pool Smoothing Pool
0.01918435 ETH0.000015970.75849026
Transfer218530992025-02-15 16:45:112 hrs ago1739637911IN
Rocket Pool Smoothing Pool
0.03017026 ETH0.000016630.79011508
Transfer218529992025-02-15 16:25:113 hrs ago1739636711IN
Rocket Pool Smoothing Pool
0.01285171 ETH0.000015950.75771228
Transfer218529722025-02-15 16:19:473 hrs ago1739636387IN
Rocket Pool Smoothing Pool
0.03410948 ETH0.000015710.74623264
Transfer218529552025-02-15 16:16:233 hrs ago1739636183IN
Rocket Pool Smoothing Pool
0.08471039 ETH0.00001460.693656
Transfer218527192025-02-15 15:28:474 hrs ago1739633327IN
Rocket Pool Smoothing Pool
0.01207573 ETH0.000015610.74168103
Transfer218527102025-02-15 15:26:594 hrs ago1739633219IN
Rocket Pool Smoothing Pool
0.00664911 ETH0.000016750.7959796
Transfer218526482025-02-15 15:14:354 hrs ago1739632475IN
Rocket Pool Smoothing Pool
0.03780926 ETH0.000016130.76622706
Transfer218524552025-02-15 14:35:234 hrs ago1739630123IN
Rocket Pool Smoothing Pool
0.03470528 ETH0.000019030.90401036
Transfer218523372025-02-15 14:11:355 hrs ago1739628695IN
Rocket Pool Smoothing Pool
0.02764097 ETH0.00001660.78886636
Transfer218521652025-02-15 13:36:595 hrs ago1739626619IN
Rocket Pool Smoothing Pool
0.0128291 ETH0.000015580.74039973
Transfer218519752025-02-15 12:58:356 hrs ago1739624315IN
Rocket Pool Smoothing Pool
0.00913556 ETH0.00001530.72693115
Transfer218518132025-02-15 12:26:117 hrs ago1739622371IN
Rocket Pool Smoothing Pool
0.00851034 ETH0.000016750.79561413
Transfer218517252025-02-15 12:08:117 hrs ago1739621291IN
Rocket Pool Smoothing Pool
0.01238594 ETH0.000016290.77413037
Transfer218516802025-02-15 11:58:477 hrs ago1739620727IN
Rocket Pool Smoothing Pool
0.01828418 ETH0.000015260.72499492
Transfer218515202025-02-15 11:26:238 hrs ago1739618783IN
Rocket Pool Smoothing Pool
0.0081468 ETH0.000014620.6947238
Transfer218512362025-02-15 10:28:599 hrs ago1739615339IN
Rocket Pool Smoothing Pool
0.01815411 ETH0.000016590.78822236
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
218447212025-02-14 12:32:2330 hrs ago1739536343
Rocket Pool Smoothing Pool
0.01 ETH
218364732025-02-13 8:49:112 days ago1739436551
Rocket Pool Smoothing Pool
61.52496849 ETH
218364732025-02-13 8:49:112 days ago1739436551
Rocket Pool Smoothing Pool
78.33777981 ETH
218207772025-02-11 4:04:594 days ago1739246699
Rocket Pool Smoothing Pool
0.00015671 ETH
218207772025-02-11 4:04:594 days ago1739246699
Rocket Pool Smoothing Pool
0.0017546 ETH
218207772025-02-11 4:04:594 days ago1739246699
Rocket Pool Smoothing Pool
0.0003354 ETH
217961152025-02-07 17:26:598 days ago1738949219
Rocket Pool Smoothing Pool
0.11460215 ETH
217887642025-02-06 16:49:359 days ago1738860575
Rocket Pool Smoothing Pool
0.00055315 ETH
217887642025-02-06 16:49:359 days ago1738860575
Rocket Pool Smoothing Pool
0.00059582 ETH
217887642025-02-06 16:49:359 days ago1738860575
Rocket Pool Smoothing Pool
0.00081943 ETH
217887642025-02-06 16:49:359 days ago1738860575
Rocket Pool Smoothing Pool
0.0007382 ETH
217887642025-02-06 16:49:359 days ago1738860575
Rocket Pool Smoothing Pool
0.00209809 ETH
217887642025-02-06 16:49:359 days ago1738860575
Rocket Pool Smoothing Pool
0.00015801 ETH
217887642025-02-06 16:49:359 days ago1738860575
Rocket Pool Smoothing Pool
0.00853896 ETH
217539462025-02-01 20:05:5913 days ago1738440359
Rocket Pool Smoothing Pool
0.00003165 ETH
217539462025-02-01 20:05:5913 days ago1738440359
Rocket Pool Smoothing Pool
0.00006596 ETH
217539462025-02-01 20:05:5913 days ago1738440359
Rocket Pool Smoothing Pool
0.00017719 ETH
217539462025-02-01 20:05:5913 days ago1738440359
Rocket Pool Smoothing Pool
0.00039926 ETH
217539462025-02-01 20:05:5913 days ago1738440359
Rocket Pool Smoothing Pool
0.00052979 ETH
217539462025-02-01 20:05:5913 days ago1738440359
Rocket Pool Smoothing Pool
0.0008818 ETH
217370062025-01-30 11:18:5916 days ago1738235939
Rocket Pool Smoothing Pool
0.00009515 ETH
217370062025-01-30 11:18:5916 days ago1738235939
Rocket Pool Smoothing Pool
0.00032162 ETH
217370062025-01-30 11:18:5916 days ago1738235939
Rocket Pool Smoothing Pool
0.00062854 ETH
217370062025-01-30 11:18:5916 days ago1738235939
Rocket Pool Smoothing Pool
0.00285117 ETH
217370062025-01-30 11:18:5916 days ago1738235939
Rocket Pool Smoothing Pool
0.01183747 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RocketSmoothingPool

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 15000 runs

Other Settings:
default evmVersion, GNU GPLv3 license
File 1 of 5 : RocketSmoothingPool.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity 0.7.6;
pragma abicoder v2;

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

import "../RocketBase.sol";
import "../../interface/rewards/RocketSmoothingPoolInterface.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";

/*
Receives priority fees and MEV via fee_recipient

NOTE: This contract intentionally does not use RocketVault to store ETH because there is no way to account for ETH being
added to this contract via fee_recipient. This also means if this contract is upgraded, the ETH must be manually
transferred from this contract to the upgraded one.
*/

contract RocketSmoothingPool is RocketBase, RocketSmoothingPoolInterface {

    // Libs
    using SafeMath for uint256;

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

    // Construct
    constructor(RocketStorageInterface _rocketStorageAddress) RocketBase(_rocketStorageAddress) {
        // Version
        version = 1;
    }

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

    // Withdraws ETH to given address
    // Only accepts calls from Rocket Pool 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);
    }
}

File 2 of 5 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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;
    }
}

File 3 of 5 : RocketBase.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity 0.7.6;

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

import "../interface/RocketStorageInterface.sol";

/// @title Base settings / modifiers for each contract in Rocket Pool
/// @author David Rugendyke

abstract contract RocketBase {

    // Calculate using this as the base
    uint256 constant calcBase = 1 ether;

    // Version of the contract
    uint8 public version;

    // The main storage contract where primary persistant storage is maintained
    RocketStorageInterface rocketStorage = RocketStorageInterface(0);


    /*** Modifiers **********************************************************/

    /**
    * @dev Throws if called by any sender that doesn't match a Rocket Pool 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 registered node
    */
    modifier onlyRegisteredNode(address _nodeAddress) {
        require(getBool(keccak256(abi.encodePacked("node.exists", _nodeAddress))), "Invalid node");
        _;
    }

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

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

    /**
    * @dev Throws if called by any account other than a guardian account (temporary account allowed access to settings before DAO is fully enabled)
    */
    modifier onlyGuardian() {
        require(msg.sender == rocketStorage.getGuardian(), "Account is not a temporary guardian");
        _;
    }




    /*** Methods **********************************************************/

    /// @dev Set the main Rocket Storage address
    constructor(RocketStorageInterface _rocketStorageAddress) {
        // Update the contract address
        rocketStorage = RocketStorageInterface(_rocketStorageAddress);
    }


    /// @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 address of a network contract by name (returns address(0x0) instead of reverting if contract does not exist)
    function getContractAddressUnsafe(string memory _contractName) internal view returns (address) {
        // Get the current contract address
        address contractAddress = getAddress(keccak256(abi.encodePacked("contract.address", _contractName)));
        // 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(bytes(contractName).length > 0, "Contract not found");
        // Return
        return contractName;
    }

    /// @dev Get revert error message from a .call method
    function getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {
        // If the _res length is less than 68, then the transaction failed silently (without a revert message)
        if (_returnData.length < 68) return "Transaction reverted silently";
        assembly {
            // Slice the sighash.
            _returnData := add(_returnData, 0x04)
        }
        return abi.decode(_returnData, (string)); // All that remains is the revert string
    }



    /*** Rocket Storage Methods ****************************************/

    // Note: Unused helpers have been removed to keep contract sizes down

    /// @dev Storage get methods
    function getAddress(bytes32 _key) internal view returns (address) { return rocketStorage.getAddress(_key); }
    function getUint(bytes32 _key) internal view returns (uint) { return rocketStorage.getUint(_key); }
    function getString(bytes32 _key) internal view returns (string memory) { return rocketStorage.getString(_key); }
    function getBytes(bytes32 _key) internal view returns (bytes memory) { return rocketStorage.getBytes(_key); }
    function getBool(bytes32 _key) internal view returns (bool) { return rocketStorage.getBool(_key); }
    function getInt(bytes32 _key) internal view returns (int) { return rocketStorage.getInt(_key); }
    function getBytes32(bytes32 _key) internal view returns (bytes32) { return rocketStorage.getBytes32(_key); }

    /// @dev Storage set methods
    function setAddress(bytes32 _key, address _value) internal { rocketStorage.setAddress(_key, _value); }
    function setUint(bytes32 _key, uint _value) internal { rocketStorage.setUint(_key, _value); }
    function setString(bytes32 _key, string memory _value) internal { rocketStorage.setString(_key, _value); }
    function setBytes(bytes32 _key, bytes memory _value) internal { rocketStorage.setBytes(_key, _value); }
    function setBool(bytes32 _key, bool _value) internal { rocketStorage.setBool(_key, _value); }
    function setInt(bytes32 _key, int _value) internal { rocketStorage.setInt(_key, _value); }
    function setBytes32(bytes32 _key, bytes32 _value) internal { rocketStorage.setBytes32(_key, _value); }

    /// @dev Storage delete methods
    function deleteAddress(bytes32 _key) internal { rocketStorage.deleteAddress(_key); }
    function deleteUint(bytes32 _key) internal { rocketStorage.deleteUint(_key); }
    function deleteString(bytes32 _key) internal { rocketStorage.deleteString(_key); }
    function deleteBytes(bytes32 _key) internal { rocketStorage.deleteBytes(_key); }
    function deleteBool(bytes32 _key) internal { rocketStorage.deleteBool(_key); }
    function deleteInt(bytes32 _key) internal { rocketStorage.deleteInt(_key); }
    function deleteBytes32(bytes32 _key) internal { rocketStorage.deleteBytes32(_key); }

    /// @dev Storage arithmetic methods
    function addUint(bytes32 _key, uint256 _amount) internal { rocketStorage.addUint(_key, _amount); }
    function subUint(bytes32 _key, uint256 _amount) internal { rocketStorage.subUint(_key, _amount); }
}

File 4 of 5 : RocketStorageInterface.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity 0.7.6;

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

interface RocketStorageInterface {

    // Deploy status
    function getDeployedStatus() external view returns (bool);

    // Guardian
    function getGuardian() external view returns(address);
    function setGuardian(address _newAddress) external;
    function confirmGuardian() external;

    // 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;

    // Arithmetic
    function addUint(bytes32 _key, uint256 _amount) external;
    function subUint(bytes32 _key, uint256 _amount) external;

    // Protected storage
    function getNodeWithdrawalAddress(address _nodeAddress) external view returns (address);
    function getNodePendingWithdrawalAddress(address _nodeAddress) external view returns (address);
    function setWithdrawalAddress(address _nodeAddress, address _newWithdrawalAddress, bool _confirm) external;
    function confirmWithdrawalAddress(address _nodeAddress) external;
}

File 5 of 5 : RocketSmoothingPoolInterface.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity 0.7.6;
pragma abicoder v2;

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

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

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 15000
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract RocketStorageInterface","name":"_rocketStorageAddress","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"}]

608060405260008054610100600160a81b031916905534801561002157600080fd5b506040516107eb3803806107eb83398101604081905261004091610072565b6000805460ff196001600160a01b0390931661010002610100600160a81b0319909116179190911660011790556100a0565b600060208284031215610083578081fd5b81516001600160a01b0381168114610099578182fd5b9392505050565b61073c806100af6000396000f3fe60806040526004361061002d5760003560e01c8063522f68151461003957806354fd4d501461005b57610034565b3661003457005b600080fd5b34801561004557600080fd5b506100596100543660046105b3565b610086565b005b34801561006757600080fd5b50610070610291565b60405161007d91906106d4565b60405180910390f35b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f83015282516023818403018152604390920190925280519101206100dd9061029a565b610132576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806106e36024913960400191505060405180910390fd5b60008111610175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016c90610669565b60405180910390fd5b600061018033610340565b905060008373ffffffffffffffffffffffffffffffffffffffff16836040516101a89061062f565b60006040518083038185875af1925050503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5050905080610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016c90610632565b8373ffffffffffffffffffffffffffffffffffffffff168260405161024a91906105f6565b60405180910390207fff381a086696de98df05e634263390296dd1d097ef34a1be9a91daead07fb01d85426040516102839291906106c6565b60405180910390a350505050565b60005460ff1681565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561030e57600080fd5b505afa158015610322573d6000803e3d6000fd5b505050506040513d602081101561033857600080fd5b505192915050565b606060006103b48360405160200180807f636f6e74726163742e6e616d6500000000000000000000000000000000000000815250600d018273ffffffffffffffffffffffffffffffffffffffff1660601b81526014019150506040516020818303038152906040528051906020012061042c565b9050600081511161042657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f436f6e7472616374206e6f7420666f756e640000000000000000000000000000604482015290519081900360640190fd5b92915050565b60008054604080517f986e791a00000000000000000000000000000000000000000000000000000000815260048101859052905160609361010090930473ffffffffffffffffffffffffffffffffffffffff169263986e791a9260248082019391829003018186803b1580156104a157600080fd5b505afa1580156104b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104fc57600080fd5b810190808051604051939291908464010000000082111561051c57600080fd5b90830190602082018581111561053157600080fd5b825164010000000081118282018810171561054b57600080fd5b82525081516020918201929091019080838360005b83811015610578578181015183820152602001610560565b50505050905090810190601f1680156105a55780820380516001836020036101000a031916815260200191505b506040525050509050919050565b600080604083850312156105c5578182fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146105e8578283fd5b946020939093013593505050565b60008251815b8181101561061657602081860181015185830152016105fc565b818111156106245782828501525b509190910192915050565b90565b60208082526016908201527f4661696c656420746f2077697468647261772045544800000000000000000000604082015260600190565b60208082526028908201527f4e6f2076616c696420616d6f756e74206f662045544820676976656e20746f2060408201527f7769746864726177000000000000000000000000000000000000000000000000606082015260800190565b918252602082015260400190565b60ff9190911681526020019056fe496e76616c6964206f72206f75746461746564206e6574776f726b20636f6e7472616374a264697066735822122042d7480293b151159bef5143e969a6df8ef949cd4e6b63a3e076a36233cf144864736f6c634300070600330000000000000000000000001d8f8f00cfa6758d7be78336684788fb0ee0fa46

Deployed Bytecode

0x60806040526004361061002d5760003560e01c8063522f68151461003957806354fd4d501461005b57610034565b3661003457005b600080fd5b34801561004557600080fd5b506100596100543660046105b3565b610086565b005b34801561006757600080fd5b50610070610291565b60405161007d91906106d4565b60405180910390f35b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f83015282516023818403018152604390920190925280519101206100dd9061029a565b610132576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806106e36024913960400191505060405180910390fd5b60008111610175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016c90610669565b60405180910390fd5b600061018033610340565b905060008373ffffffffffffffffffffffffffffffffffffffff16836040516101a89061062f565b60006040518083038185875af1925050503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5050905080610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016c90610632565b8373ffffffffffffffffffffffffffffffffffffffff168260405161024a91906105f6565b60405180910390207fff381a086696de98df05e634263390296dd1d097ef34a1be9a91daead07fb01d85426040516102839291906106c6565b60405180910390a350505050565b60005460ff1681565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561030e57600080fd5b505afa158015610322573d6000803e3d6000fd5b505050506040513d602081101561033857600080fd5b505192915050565b606060006103b48360405160200180807f636f6e74726163742e6e616d6500000000000000000000000000000000000000815250600d018273ffffffffffffffffffffffffffffffffffffffff1660601b81526014019150506040516020818303038152906040528051906020012061042c565b9050600081511161042657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f436f6e7472616374206e6f7420666f756e640000000000000000000000000000604482015290519081900360640190fd5b92915050565b60008054604080517f986e791a00000000000000000000000000000000000000000000000000000000815260048101859052905160609361010090930473ffffffffffffffffffffffffffffffffffffffff169263986e791a9260248082019391829003018186803b1580156104a157600080fd5b505afa1580156104b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104fc57600080fd5b810190808051604051939291908464010000000082111561051c57600080fd5b90830190602082018581111561053157600080fd5b825164010000000081118282018810171561054b57600080fd5b82525081516020918201929091019080838360005b83811015610578578181015183820152602001610560565b50505050905090810190601f1680156105a55780820380516001836020036101000a031916815260200191505b506040525050509050919050565b600080604083850312156105c5578182fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146105e8578283fd5b946020939093013593505050565b60008251815b8181101561061657602081860181015185830152016105fc565b818111156106245782828501525b509190910192915050565b90565b60208082526016908201527f4661696c656420746f2077697468647261772045544800000000000000000000604082015260600190565b60208082526028908201527f4e6f2076616c696420616d6f756e74206f662045544820676976656e20746f2060408201527f7769746864726177000000000000000000000000000000000000000000000000606082015260800190565b918252602082015260400190565b60ff9190911681526020019056fe496e76616c6964206f72206f75746461746564206e6574776f726b20636f6e7472616374a264697066735822122042d7480293b151159bef5143e969a6df8ef949cd4e6b63a3e076a36233cf144864736f6c63430007060033

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

0000000000000000000000001d8f8f00cfa6758d7be78336684788fb0ee0fa46

-----Decoded View---------------
Arg [0] : _rocketStorageAddress (address): 0x1d8f8f00cfa6758d7bE78336684788Fb0ee0Fa46

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001d8f8f00cfa6758d7be78336684788fb0ee0fa46


 Latest 25 blocks (From a total of 11,679 blocks with 499.67 Ether produced)

Block Transaction Difficulty Gas Used Reward
218539082025-02-15 19:28:3532 secs ago1739647715570.00 TH21,938,250 (61.12%)
0.002926830599502414 ETH
218520922025-02-15 13:21:596 hrs ago1739625719990.00 TH5,811,347 (16.14%)
0.00495596235550267 ETH
218485422025-02-15 1:25:2318 hrs ago1739582723750.00 TH5,609,044 (15.61%)
0.003405209542373341 ETH
218482642025-02-15 0:29:1118 hrs ago1739579351690.00 TH4,803,072 (13.38%)
0.002796320935815518 ETH
218471112025-02-14 20:35:1122 hrs ago1739565311990.00 TH25,872,899 (71.87%)
0.007314188117758659 ETH
218463842025-02-14 18:07:4725 hrs ago1739556467980.00 TH5,283,626 (14.89%)
0.00428123853466537 ETH
218450882025-02-14 13:46:3529 hrs ago17395407951260.00 TH10,061,228 (28.00%)
0.004410953542749519 ETH
218447802025-02-14 12:44:2330 hrs ago1739537063840.00 TH6,475,872 (17.99%)
0.006143868771019309 ETH
218447212025-02-14 12:32:2330 hrs ago1739536343900.00 TH5,359,455 (14.99%)
0.005544566676379035 ETH
218441012025-02-14 10:27:2333 hrs ago1739528843800.00 TH6,157,535 (17.12%)
0.005312365921245886 ETH
218414742025-02-14 1:37:4741 hrs ago1739497067340.00 TH32,570,137 (90.47%)
0.001617426778757277 ETH
218412092025-02-14 0:44:3542 hrs ago1739493875760.00 TH34,127,916 (94.89%)
0.003465112360540149 ETH
218407912025-02-13 23:19:3544 hrs ago1739488775980.00 TH6,259,874 (17.47%)
0.003659177840347354 ETH
218380892025-02-13 14:14:472 days ago17394560871130.00 TH8,154,720 (22.70%)
0.006861450943389947 ETH
218377902025-02-13 13:14:472 days ago17394524871100.00 TH6,797,865 (18.90%)
0.004562530929799714 ETH
218360012025-02-13 7:13:592 days ago1739430839990.00 TH29,975,480 (83.51%)
0.002940523652163549 ETH
218351012025-02-13 4:12:472 days ago1739419967870.00 TH7,298,113 (20.29%)
0.004320788055869347 ETH
218348632025-02-13 3:24:592 days ago1739417099650.00 TH4,201,524 (11.67%)
0.00402415418747474 ETH
218345502025-02-13 2:21:592 days ago1739413319780.00 TH21,043,818 (58.91%)
0.004200039938537923 ETH
218342232025-02-13 1:15:592 days ago17394093591070.00 TH6,428,186 (17.94%)
0.003647771732045893 ETH
218339952025-02-13 0:29:592 days ago17394065991140.00 TH29,924,550 (83.37%)
0.021200585996733126 ETH
218334552025-02-12 22:41:232 days ago1739400083850.00 TH4,715,717 (13.14%)
0.00908661823807158 ETH
218315762025-02-12 16:24:353 days ago17393774751160.00 TH7,889,613 (22.02%)
0.009317335132180363 ETH
218312892025-02-12 15:26:353 days ago17393739951100.00 TH20,950,221 (58.42%)
0.008617885612210842 ETH
218306072025-02-12 13:09:113 days ago1739365751730.00 TH6,111,275 (17.03%)
0.006244560630544016 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.