Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,257 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Submit Prices | 21756958 | 11 hrs ago | IN | 0 ETH | 0.00051579 | ||||
Submit Prices | 21756958 | 11 hrs ago | IN | 0 ETH | 0.00051579 | ||||
Submit Prices | 21756957 | 11 hrs ago | IN | 0 ETH | 0.00089945 | ||||
Submit Prices | 21756955 | 11 hrs ago | IN | 0 ETH | 0.00062278 | ||||
Submit Prices | 21756954 | 11 hrs ago | IN | 0 ETH | 0.00062505 | ||||
Submit Prices | 21756951 | 11 hrs ago | IN | 0 ETH | 0.00062726 | ||||
Submit Prices | 21756949 | 11 hrs ago | IN | 0 ETH | 0.00061108 | ||||
Submit Prices | 21756948 | 11 hrs ago | IN | 0 ETH | 0.00063427 | ||||
Submit Prices | 21756947 | 11 hrs ago | IN | 0 ETH | 0.0006348 | ||||
Submit Prices | 21756946 | 11 hrs ago | IN | 0 ETH | 0.00063155 | ||||
Submit Prices | 21756945 | 11 hrs ago | IN | 0 ETH | 0.00071073 | ||||
Submit Prices | 21749792 | 35 hrs ago | IN | 0 ETH | 0.00096967 | ||||
Submit Prices | 21749792 | 35 hrs ago | IN | 0 ETH | 0.00069211 | ||||
Submit Prices | 21749790 | 35 hrs ago | IN | 0 ETH | 0.00066197 | ||||
Submit Prices | 21749788 | 35 hrs ago | IN | 0 ETH | 0.00067389 | ||||
Submit Prices | 21749787 | 35 hrs ago | IN | 0 ETH | 0.00067246 | ||||
Submit Prices | 21749786 | 35 hrs ago | IN | 0 ETH | 0.00069695 | ||||
Submit Prices | 21749786 | 35 hrs ago | IN | 0 ETH | 0.00069695 | ||||
Submit Prices | 21749785 | 35 hrs ago | IN | 0 ETH | 0.0006725 | ||||
Submit Prices | 21749784 | 35 hrs ago | IN | 0 ETH | 0.00072435 | ||||
Submit Prices | 21742646 | 2 days ago | IN | 0 ETH | 0.00051666 | ||||
Submit Prices | 21742645 | 2 days ago | IN | 0 ETH | 0.00049686 | ||||
Submit Prices | 21742644 | 2 days ago | IN | 0 ETH | 0.00050257 | ||||
Submit Prices | 21742642 | 2 days ago | IN | 0 ETH | 0.00086681 | ||||
Submit Prices | 21742641 | 2 days ago | IN | 0 ETH | 0.0006247 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
RocketNetworkPrices
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity Standard Json-Input format)
/** * . * / \ * |.'.| * |'.'| * ,'| |'. * |,-'-|-'-.| * __|_| | _ _ _____ _ * | ___ \| | | | | | ___ \ | | * | |_/ /|__ ___| | _____| |_ | |_/ /__ ___ | | * | // _ \ / __| |/ / _ \ __| | __/ _ \ / _ \| | * | |\ \ (_) | (__| < __/ |_ | | | (_) | (_) | | * \_| \_\___/ \___|_|\_\___|\__| \_| \___/ \___/|_| * +---------------------------------------------------+ * | DECENTRALISED STAKING PROTOCOL FOR ETHEREUM | * +---------------------------------------------------+ * * Rocket Pool is a first-of-its-kind Ethereum staking pool protocol, designed to * be community-owned, decentralised, permissionless, & trustless. * * For more information about Rocket Pool, visit https://rocketpool.net * * Authored by the Rocket Pool Core Team * Contributors: https://github.com/rocket-pool/rocketpool/graphs/contributors * A special thanks to the Rocket Pool community for all their contributions. * */ // SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.18; import "../RocketBase.sol"; import "../../interface/dao/node/RocketDAONodeTrustedInterface.sol"; import "../../interface/network/RocketNetworkPricesInterface.sol"; import "../../interface/dao/protocol/settings/RocketDAOProtocolSettingsNetworkInterface.sol"; import "../../interface/network/RocketNetworkSnapshotsInterface.sol"; /// @notice Oracle contract for network token price data contract RocketNetworkPrices is RocketBase, RocketNetworkPricesInterface { // Constants bytes32 immutable priceKey; bytes32 immutable blockKey; // Events event PricesSubmitted(address indexed from, uint256 block, uint256 slotTimestamp, uint256 rplPrice, uint256 time); event PricesUpdated(uint256 indexed block, uint256 slotTimestamp, uint256 rplPrice, uint256 time); constructor(RocketStorageInterface _rocketStorageAddress) RocketBase(_rocketStorageAddress) { // Set contract version version = 4; // Precompute keys priceKey = keccak256("network.prices.rpl"); blockKey = keccak256("network.prices.updated.block"); } /// @notice Returns the block number which prices are current for function getPricesBlock() override public view returns (uint256) { return getUint(blockKey); } /// @dev Sets the block number which prices are current for function setPricesBlock(uint256 _value) private { setUint(blockKey, _value); } /// @notice Returns the current network RPL price in ETH function getRPLPrice() override public view returns (uint256) { RocketNetworkSnapshotsInterface rocketNetworkSnapshots = RocketNetworkSnapshotsInterface(getContractAddress("rocketNetworkSnapshots")); uint256 price = uint256(rocketNetworkSnapshots.latestValue(priceKey)); if (price == 0) { price = getUint(priceKey); } return price; } /// @dev Sets the current network RPL price in ETH function setRPLPrice(uint256 _value) private { RocketNetworkSnapshotsInterface rocketNetworkSnapshots = RocketNetworkSnapshotsInterface(getContractAddress("rocketNetworkSnapshots")); rocketNetworkSnapshots.push(priceKey, uint224(_value)); } /// @notice Submit network price data for a block /// Only accepts calls from trusted (oracle) nodes /// @param _block The block this price submission is for /// @param _slotTimestamp timestamp for the slot the balance should be updated, which is used to find the latest valid EL block /// @param _rplPrice The price of RPL at the given block function submitPrices(uint256 _block, uint256 _slotTimestamp, uint256 _rplPrice) override external onlyLatestContract("rocketNetworkPrices", address(this)) onlyTrustedNode(msg.sender) { // Check settings RocketDAOProtocolSettingsNetworkInterface rocketDAOProtocolSettingsNetwork = RocketDAOProtocolSettingsNetworkInterface(getContractAddress("rocketDAOProtocolSettingsNetwork")); require(rocketDAOProtocolSettingsNetwork.getSubmitPricesEnabled(), "Submitting prices is currently disabled"); // Check block require(_block < block.number, "Prices can not be submitted for a future block"); uint256 lastPricesBlock = getPricesBlock(); require(_block >= lastPricesBlock, "Network prices for a higher block are set"); // Get submission keys bytes32 nodeSubmissionKey = keccak256(abi.encodePacked("network.prices.submitted.node.key", msg.sender, _block, _slotTimestamp, _rplPrice)); bytes32 submissionCountKey = keccak256(abi.encodePacked("network.prices.submitted.count", _block, _slotTimestamp, _rplPrice)); // Check & update node submission status require(!getBool(nodeSubmissionKey), "Duplicate submission from node"); setBool(nodeSubmissionKey, true); setBool(keccak256(abi.encodePacked("network.prices.submitted.node", msg.sender, _block)), true); // Increment submission count uint256 submissionCount = getUint(submissionCountKey) + 1; setUint(submissionCountKey, submissionCount); // Emit prices submitted event emit PricesSubmitted(msg.sender, _block, _slotTimestamp, _rplPrice, block.timestamp); // If voting past consensus, return if (_block == lastPricesBlock) { return; } // Check submission count & update network prices RocketDAONodeTrustedInterface rocketDAONodeTrusted = RocketDAONodeTrustedInterface(getContractAddress("rocketDAONodeTrusted")); if ((calcBase * submissionCount) / rocketDAONodeTrusted.getMemberCount() >= rocketDAOProtocolSettingsNetwork.getNodeConsensusThreshold()) { // Update the price updatePrices(_block, _slotTimestamp, _rplPrice); } } /// @notice Executes updatePrices if consensus threshold is reached /// @param _block The block to execute price update for /// @param _slotTimestamp timestamp for the slot the balance should be updated, which is used to find the latest valid EL block /// @param _rplPrice The price of RPL at the given block function executeUpdatePrices(uint256 _block, uint256 _slotTimestamp, uint256 _rplPrice) override external onlyLatestContract("rocketNetworkPrices", address(this)) { // Check settings RocketDAOProtocolSettingsNetworkInterface rocketDAOProtocolSettingsNetwork = RocketDAOProtocolSettingsNetworkInterface(getContractAddress("rocketDAOProtocolSettingsNetwork")); require(rocketDAOProtocolSettingsNetwork.getSubmitPricesEnabled(), "Submitting prices is currently disabled"); // Check block require(_block < block.number, "Prices can not be submitted for a future block"); require(_block > getPricesBlock(), "Network prices for an equal or higher block are set"); // Get submission keys bytes32 submissionCountKey = keccak256(abi.encodePacked("network.prices.submitted.count", _block, _slotTimestamp, _rplPrice)); // Get submission count uint256 submissionCount = getUint(submissionCountKey); // Check submission count & update network prices RocketDAONodeTrustedInterface rocketDAONodeTrusted = RocketDAONodeTrustedInterface(getContractAddress("rocketDAONodeTrusted")); require((calcBase * submissionCount) / rocketDAONodeTrusted.getMemberCount() >= rocketDAOProtocolSettingsNetwork.getNodeConsensusThreshold(), "Consensus has not been reached"); // Update the price updatePrices(_block, _slotTimestamp, _rplPrice); } /// @dev Update network price data /// @param _block The block to update price for /// @param _rplPrice The price of RPL at the given block function updatePrices(uint256 _block, uint256 _slotTimestamp, uint256 _rplPrice) private { // Update price setRPLPrice(_rplPrice); setPricesBlock(_block); // Emit prices updated event emit PricesUpdated(_block, _slotTimestamp, _rplPrice, block.timestamp); } }
/** * . * / \ * |.'.| * |'.'| * ,'| |'. * |,-'-|-'-.| * __|_| | _ _ _____ _ * | ___ \| | | | | | ___ \ | | * | |_/ /|__ ___| | _____| |_ | |_/ /__ ___ | | * | // _ \ / __| |/ / _ \ __| | __/ _ \ / _ \| | * | |\ \ (_) | (__| < __/ |_ | | | (_) | (_) | | * \_| \_\___/ \___|_|\_\___|\__| \_| \___/ \___/|_| * +---------------------------------------------------+ * | DECENTRALISED STAKING PROTOCOL FOR ETHEREUM | * +---------------------------------------------------+ * * Rocket Pool is a first-of-its-kind Ethereum staking pool protocol, designed to * be community-owned, decentralised, permissionless, & trustless. * * For more information about Rocket Pool, visit https://rocketpool.net * * Authored by the Rocket Pool Core Team * Contributors: https://github.com/rocket-pool/rocketpool/graphs/contributors * A special thanks to the Rocket Pool community for all their contributions. * */ pragma solidity >0.5.0 <0.9.0; // 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; }
/** * . * / \ * |.'.| * |'.'| * ,'| |'. * |,-'-|-'-.| * __|_| | _ _ _____ _ * | ___ \| | | | | | ___ \ | | * | |_/ /|__ ___| | _____| |_ | |_/ /__ ___ | | * | // _ \ / __| |/ / _ \ __| | __/ _ \ / _ \| | * | |\ \ (_) | (__| < __/ |_ | | | (_) | (_) | | * \_| \_\___/ \___|_|\_\___|\__| \_| \___/ \___/|_| * +---------------------------------------------------+ * | DECENTRALISED STAKING PROTOCOL FOR ETHEREUM | * +---------------------------------------------------+ * * Rocket Pool is a first-of-its-kind Ethereum staking pool protocol, designed to * be community-owned, decentralised, permissionless, & trustless. * * For more information about Rocket Pool, visit https://rocketpool.net * * Authored by the Rocket Pool Core Team * Contributors: https://github.com/rocket-pool/rocketpool/graphs/contributors * A special thanks to the Rocket Pool community for all their contributions. * */ pragma solidity >0.5.0 <0.9.0; // 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(address(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); } }
/** * . * / \ * |.'.| * |'.'| * ,'| |'. * |,-'-|-'-.| * __|_| | _ _ _____ _ * | ___ \| | | | | | ___ \ | | * | |_/ /|__ ___| | _____| |_ | |_/ /__ ___ | | * | // _ \ / __| |/ / _ \ __| | __/ _ \ / _ \| | * | |\ \ (_) | (__| < __/ |_ | | | (_) | (_) | | * \_| \_\___/ \___|_|\_\___|\__| \_| \___/ \___/|_| * +---------------------------------------------------+ * | DECENTRALISED STAKING PROTOCOL FOR ETHEREUM | * +---------------------------------------------------+ * * Rocket Pool is a first-of-its-kind Ethereum staking pool protocol, designed to * be community-owned, decentralised, permissionless, & trustless. * * For more information about Rocket Pool, visit https://rocketpool.net * * Authored by the Rocket Pool Core Team * Contributors: https://github.com/rocket-pool/rocketpool/graphs/contributors * A special thanks to the Rocket Pool community for all their contributions. * */ pragma solidity >0.5.0 <0.9.0; // SPDX-License-Identifier: GPL-3.0-only interface RocketDAONodeTrustedInterface { function getBootstrapModeDisabled() external view returns (bool); function getMemberQuorumVotesRequired() external view returns (uint256); function getMemberAt(uint256 _index) external view returns (address); function getMemberCount() external view returns (uint256); function getMemberMinRequired() external view returns (uint256); function getMemberIsValid(address _nodeAddress) external view returns (bool); function getMemberLastProposalTime(address _nodeAddress) external view returns (uint256); function getMemberID(address _nodeAddress) external view returns (string memory); function getMemberUrl(address _nodeAddress) external view returns (string memory); function getMemberJoinedTime(address _nodeAddress) external view returns (uint256); function getMemberProposalExecutedTime(string memory _proposalType, address _nodeAddress) external view returns (uint256); function getMemberRPLBondAmount(address _nodeAddress) external view returns (uint256); function getMemberIsChallenged(address _nodeAddress) external view returns (bool); function getMemberUnbondedValidatorCount(address _nodeAddress) external view returns (uint256); function incrementMemberUnbondedValidatorCount(address _nodeAddress) external; function decrementMemberUnbondedValidatorCount(address _nodeAddress) external; function bootstrapMember(string memory _id, string memory _url, address _nodeAddress) external; function bootstrapSettingUint(string memory _settingContractName, string memory _settingPath, uint256 _value) external; function bootstrapSettingBool(string memory _settingContractName, string memory _settingPath, bool _value) external; function bootstrapUpgrade(string memory _type, string memory _name, string memory _contractAbi, address _contractAddress) external; function bootstrapDisable(bool _confirmDisableBootstrapMode) external; function memberJoinRequired(string memory _id, string memory _url) external; }
/** * . * / \ * |.'.| * |'.'| * ,'| |'. * |,-'-|-'-.| * __|_| | _ _ _____ _ * | ___ \| | | | | | ___ \ | | * | |_/ /|__ ___| | _____| |_ | |_/ /__ ___ | | * | // _ \ / __| |/ / _ \ __| | __/ _ \ / _ \| | * | |\ \ (_) | (__| < __/ |_ | | | (_) | (_) | | * \_| \_\___/ \___|_|\_\___|\__| \_| \___/ \___/|_| * +---------------------------------------------------+ * | DECENTRALISED STAKING PROTOCOL FOR ETHEREUM | * +---------------------------------------------------+ * * Rocket Pool is a first-of-its-kind Ethereum staking pool protocol, designed to * be community-owned, decentralised, permissionless, & trustless. * * For more information about Rocket Pool, visit https://rocketpool.net * * Authored by the Rocket Pool Core Team * Contributors: https://github.com/rocket-pool/rocketpool/graphs/contributors * A special thanks to the Rocket Pool community for all their contributions. * */ pragma solidity >0.5.0 <0.9.0; // SPDX-License-Identifier: GPL-3.0-only interface RocketNetworkPricesInterface { function getPricesBlock() external view returns (uint256); function getRPLPrice() external view returns (uint256); function submitPrices(uint256 _block, uint256 _slotTimestamp, uint256 _rplPrice) external; function executeUpdatePrices(uint256 _block, uint256 _slotTimestamp, uint256 _rplPrice) external; }
/** * . * / \ * |.'.| * |'.'| * ,'| |'. * |,-'-|-'-.| * __|_| | _ _ _____ _ * | ___ \| | | | | | ___ \ | | * | |_/ /|__ ___| | _____| |_ | |_/ /__ ___ | | * | // _ \ / __| |/ / _ \ __| | __/ _ \ / _ \| | * | |\ \ (_) | (__| < __/ |_ | | | (_) | (_) | | * \_| \_\___/ \___|_|\_\___|\__| \_| \___/ \___/|_| * +---------------------------------------------------+ * | DECENTRALISED STAKING PROTOCOL FOR ETHEREUM | * +---------------------------------------------------+ * * Rocket Pool is a first-of-its-kind Ethereum staking pool protocol, designed to * be community-owned, decentralised, permissionless, & trustless. * * For more information about Rocket Pool, visit https://rocketpool.net * * Authored by the Rocket Pool Core Team * Contributors: https://github.com/rocket-pool/rocketpool/graphs/contributors * A special thanks to the Rocket Pool community for all their contributions. * */ pragma solidity >0.5.0 <0.9.0; // SPDX-License-Identifier: GPL-3.0-only interface RocketDAOProtocolSettingsNetworkInterface { function getNodeConsensusThreshold() external view returns (uint256); function getNodePenaltyThreshold() external view returns (uint256); function getPerPenaltyRate() external view returns (uint256); function getSubmitBalancesEnabled() external view returns (bool); function getSubmitBalancesFrequency() external view returns (uint256); function getSubmitPricesEnabled() external view returns (bool); function getSubmitPricesFrequency() external view returns (uint256); function getMinimumNodeFee() external view returns (uint256); function getTargetNodeFee() external view returns (uint256); function getMaximumNodeFee() external view returns (uint256); function getNodeFeeDemandRange() external view returns (uint256); function getTargetRethCollateralRate() external view returns (uint256); function getRethDepositDelay() external view returns (uint256); function getSubmitRewardsEnabled() external view returns (bool); }
/** * . * / \ * |.'.| * |'.'| * ,'| |'. * |,-'-|-'-.| * __|_| | _ _ _____ _ * | ___ \| | | | | | ___ \ | | * | |_/ /|__ ___| | _____| |_ | |_/ /__ ___ | | * | // _ \ / __| |/ / _ \ __| | __/ _ \ / _ \| | * | |\ \ (_) | (__| < __/ |_ | | | (_) | (_) | | * \_| \_\___/ \___|_|\_\___|\__| \_| \___/ \___/|_| * +---------------------------------------------------+ * | DECENTRALISED STAKING PROTOCOL FOR ETHEREUM | * +---------------------------------------------------+ * * Rocket Pool is a first-of-its-kind Ethereum staking pool protocol, designed to * be community-owned, decentralised, permissionless, & trustless. * * For more information about Rocket Pool, visit https://rocketpool.net * * Authored by the Rocket Pool Core Team * Contributors: https://github.com/rocket-pool/rocketpool/graphs/contributors * A special thanks to the Rocket Pool community for all their contributions. * */ // SPDX-License-Identifier: GPL-3.0-only pragma solidity >0.5.0 <0.9.0; struct Checkpoint224 { uint32 _block; uint224 _value; } /// @notice Accounting for snapshotting of values based on block numbers interface RocketNetworkSnapshotsInterface { function push(bytes32 _key, uint224 _value) external; function length(bytes32 _key) external view returns (uint256); function latest(bytes32 _key) external view returns (bool, uint32, uint224); function latestBlock(bytes32 _key) external view returns (uint32); function latestValue(bytes32 _key) external view returns (uint224); function lookup(bytes32 _key, uint32 _block) external view returns (uint224); function lookupRecent(bytes32 _key, uint32 _block, uint256 _recency) external view returns (uint224); }
{ "optimizer": { "enabled": true, "runs": 15000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract RocketStorageInterface","name":"_rocketStorageAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"block","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"slotTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rplPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"PricesSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"block","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"slotTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rplPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"PricesUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"_block","type":"uint256"},{"internalType":"uint256","name":"_slotTimestamp","type":"uint256"},{"internalType":"uint256","name":"_rplPrice","type":"uint256"}],"name":"executeUpdatePrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPricesBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRPLPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_block","type":"uint256"},{"internalType":"uint256","name":"_slotTimestamp","type":"uint256"},{"internalType":"uint256","name":"_rplPrice","type":"uint256"}],"name":"submitPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c060405260008054610100600160a81b031916905534801561002157600080fd5b506040516117d33803806117d3833981016040819052610040916100bc565b6000805460ff196001600160a01b0390931661010002929092166001600160a81b03199092169190911760041790557f25a22f579c19c441c6276bbd381ad43715a7c75c8781f5ee499cba2bb59cd23b6080527f0a4041fbc2d754332ff77c5da54a4a6dd3a619121f939491b4636bd721ac417d60a0526100ec565b6000602082840312156100ce57600080fd5b81516001600160a01b03811681146100e557600080fd5b9392505050565b60805160a0516116ae6101256000396000818160dd015261148201526000818161016f01528181610228015261140c01526116ae6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063724d4a0911610050578063724d4a09146100a6578063ba214c3c146100ae578063f75d7ab6146100c357600080fd5b80630fe40bcd1461006c57806354fd4d5014610087575b600080fd5b6100746100d6565b6040519081526020015b60405180910390f35b6000546100949060ff1681565b60405160ff909116815260200161007e565b610074610106565b6100c16100bc3660046114aa565b610255565b005b6100c16100d13660046114aa565b610a9a565b60006101017f0000000000000000000000000000000000000000000000000000000000000000610ffe565b905090565b6000806101476040518060400160405280601681526020017f726f636b65744e6574776f726b536e617073686f747300000000000000000000815250611096565b6040517f6838444b0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015290915060009073ffffffffffffffffffffffffffffffffffffffff831690636838444b90602401602060405180830381865afa1580156101d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101fb91906114d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690508060000361024f5761024c7f0000000000000000000000000000000000000000000000000000000000000000610ffe565b90505b92915050565b6040518060400160405280601381526020017f726f636b65744e6574776f726b50726963657300000000000000000000000000815250306102bb826040516020016102a0919061151b565b6040516020818303038152906040528051906020012061112c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964206f72206f7574646174656420636f6e74726163740000000060448201526064015b60405180910390fd5b336103fb816040516020016103e091907f64616f2e747275737465646e6f6465732e00000000000000000000000000000081527f6d656d6265720000000000000000000000000000000000000000000000000000601182015260609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166017820152602b0190565b604051602081830303815290604052805190602001206111c4565b610461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e76616c69642074727573746564206e6f6465000000000000000000000000604482015260640161034b565b60006104a16040518060400160405280602081526020017f726f636b657444414f50726f746f636f6c53657474696e67734e6574776f726b815250611096565b90508073ffffffffffffffffffffffffffffffffffffffff1663d7c8953c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190611573565b61059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5375626d697474696e67207072696365732069732063757272656e746c79206460448201527f697361626c656400000000000000000000000000000000000000000000000000606482015260840161034b565b43871061062d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5072696365732063616e206e6f74206265207375626d697474656420666f722060448201527f612066757475726520626c6f636b000000000000000000000000000000000000606482015260840161034b565b60006106376100d6565b9050808810156106c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4e6574776f726b2070726963657320666f7220612068696768657220626c6f6360448201527f6b20617265207365740000000000000000000000000000000000000000000000606482015260840161034b565b604080517f6e6574776f726b2e7072696365732e7375626d69747465642e6e6f64652e6b656020808301919091527f7900000000000000000000000000000000000000000000000000000000000000828401523360601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166041830152605582018b9052607582018a905260958083018a90528351808403909101815260b5830184528051908201207f6e6574776f726b2e7072696365732e7375626d69747465642e636f756e74000060d584015260f383018c905261011383018b90526101338084018b90528451808503909101815261015390930190935281519101206107d2826111c4565b15610839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4475706c6963617465207375626d697373696f6e2066726f6d206e6f64650000604482015260640161034b565b61084482600161125c565b6040517f6e6574776f726b2e7072696365732e7375626d69747465642e6e6f646500000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16603d820152605181018b90526108c39060710160405160208183030381529060405280519060200120600161125c565b60006108ce82610ffe565b6108d99060016115c4565b90506108e582826112e9565b604080518c8152602081018c90529081018a905242606082015233907f6a2507f84d6af44d2a9c355a7f1e3c4691b146051ce9501b429d8447ba9531c39060800160405180910390a2838b0361093f575050505050610a92565b600061097f6040518060400160405280601481526020017f726f636b657444414f4e6f646554727573746564000000000000000000000000815250611096565b90508573ffffffffffffffffffffffffffffffffffffffff16631f66e8ed6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f091906115d7565b8173ffffffffffffffffffffffffffffffffffffffff1663997072f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f91906115d7565b610a7184670de0b6b3a76400006115f0565b610a7b9190611607565b10610a8b57610a8b8c8c8c61134b565b5050505050505b505050505050565b6040518060400160405280601381526020017f726f636b65744e6574776f726b5072696365730000000000000000000000000081525030610ae5826040516020016102a0919061151b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964206f72206f7574646174656420636f6e747261637400000000604482015260640161034b565b6000610bb96040518060400160405280602081526020017f726f636b657444414f50726f746f636f6c53657474696e67734e6574776f726b815250611096565b90508073ffffffffffffffffffffffffffffffffffffffff1663d7c8953c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a9190611573565b610cb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5375626d697474696e67207072696365732069732063757272656e746c79206460448201527f697361626c656400000000000000000000000000000000000000000000000000606482015260840161034b565b438610610d45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5072696365732063616e206e6f74206265207375626d697474656420666f722060448201527f612066757475726520626c6f636b000000000000000000000000000000000000606482015260840161034b565b610d4d6100d6565b8611610ddb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4e6574776f726b2070726963657320666f7220616e20657175616c206f72206860448201527f696768657220626c6f636b206172652073657400000000000000000000000000606482015260840161034b565b6040517f6e6574776f726b2e7072696365732e7375626d69747465642e636f756e7400006020820152603e8101879052605e8101869052607e8101859052600090609e016040516020818303038152906040528051906020012090506000610e4282610ffe565b90506000610e846040518060400160405280601481526020017f726f636b657444414f4e6f646554727573746564000000000000000000000000815250611096565b90508373ffffffffffffffffffffffffffffffffffffffff16631f66e8ed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef591906115d7565b8173ffffffffffffffffffffffffffffffffffffffff1663997072f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6491906115d7565b610f7684670de0b6b3a76400006115f0565b610f809190611607565b1015610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6e73656e73757320686173206e6f74206265656e20726561636865640000604482015260640161034b565b610ff389898961134b565b505050505050505050565b600080546040517fbd02d0f50000000000000000000000000000000000000000000000000000000081526004810184905261010090910473ffffffffffffffffffffffffffffffffffffffff169063bd02d0f590602401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f91906115d7565b6000806110ad836040516020016102a0919061151b565b905073ffffffffffffffffffffffffffffffffffffffff811661024f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f436f6e7472616374206e6f7420666f756e640000000000000000000000000000604482015260640161034b565b600080546040517f21f8a7210000000000000000000000000000000000000000000000000000000081526004810184905261010090910473ffffffffffffffffffffffffffffffffffffffff16906321f8a72190602401602060405180830381865afa1580156111a0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f9190611642565b600080546040517f7ae1cfca0000000000000000000000000000000000000000000000000000000081526004810184905261010090910473ffffffffffffffffffffffffffffffffffffffff1690637ae1cfca90602401602060405180830381865afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f9190611573565b6000546040517fabfdcced00000000000000000000000000000000000000000000000000000000815260048101849052821515602482015261010090910473ffffffffffffffffffffffffffffffffffffffff169063abfdcced906044015b600060405180830381600087803b1580156112d557600080fd5b505af1158015610a92573d6000803e3d6000fd5b6000546040517fe2a4853a000000000000000000000000000000000000000000000000000000008152600481018490526024810183905261010090910473ffffffffffffffffffffffffffffffffffffffff169063e2a4853a906044016112bb565b611354816113a4565b61135d8361147d565b60408051838152602081018390524281830152905184917f6ef2ff813efc9efc76792366c4aca2677b755a5a13affc54d96ef35dc8e9bb73919081900360600190a2505050565b60006113e46040518060400160405280601681526020017f726f636b65744e6574776f726b536e617073686f747300000000000000000000815250611096565b6040517f5ba596490000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416602482015290915073ffffffffffffffffffffffffffffffffffffffff821690635ba59649906044016112bb565b6114a77f0000000000000000000000000000000000000000000000000000000000000000826112e9565b50565b6000806000606084860312156114bf57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156114e857600080fd5b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116811461151457600080fd5b9392505050565b7f636f6e74726163742e616464726573730000000000000000000000000000000081526000825160005b818110156115625760208186018101516010868401015201611545565b506000920160100191825250919050565b60006020828403121561158557600080fd5b8151801515811461151457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561024f5761024f611595565b6000602082840312156115e957600080fd5b5051919050565b808202811582820484141761024f5761024f611595565b60008261163d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561165457600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461151457600080fdfea26469706673582212208968deaf30664819aa14aa7d296abe6cd4870a1031330b822ec4774f74456fcf64736f6c634300081200330000000000000000000000001d8f8f00cfa6758d7be78336684788fb0ee0fa46
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063724d4a0911610050578063724d4a09146100a6578063ba214c3c146100ae578063f75d7ab6146100c357600080fd5b80630fe40bcd1461006c57806354fd4d5014610087575b600080fd5b6100746100d6565b6040519081526020015b60405180910390f35b6000546100949060ff1681565b60405160ff909116815260200161007e565b610074610106565b6100c16100bc3660046114aa565b610255565b005b6100c16100d13660046114aa565b610a9a565b60006101017f0a4041fbc2d754332ff77c5da54a4a6dd3a619121f939491b4636bd721ac417d610ffe565b905090565b6000806101476040518060400160405280601681526020017f726f636b65744e6574776f726b536e617073686f747300000000000000000000815250611096565b6040517f6838444b0000000000000000000000000000000000000000000000000000000081527f25a22f579c19c441c6276bbd381ad43715a7c75c8781f5ee499cba2bb59cd23b600482015290915060009073ffffffffffffffffffffffffffffffffffffffff831690636838444b90602401602060405180830381865afa1580156101d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101fb91906114d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690508060000361024f5761024c7f25a22f579c19c441c6276bbd381ad43715a7c75c8781f5ee499cba2bb59cd23b610ffe565b90505b92915050565b6040518060400160405280601381526020017f726f636b65744e6574776f726b50726963657300000000000000000000000000815250306102bb826040516020016102a0919061151b565b6040516020818303038152906040528051906020012061112c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964206f72206f7574646174656420636f6e74726163740000000060448201526064015b60405180910390fd5b336103fb816040516020016103e091907f64616f2e747275737465646e6f6465732e00000000000000000000000000000081527f6d656d6265720000000000000000000000000000000000000000000000000000601182015260609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166017820152602b0190565b604051602081830303815290604052805190602001206111c4565b610461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e76616c69642074727573746564206e6f6465000000000000000000000000604482015260640161034b565b60006104a16040518060400160405280602081526020017f726f636b657444414f50726f746f636f6c53657474696e67734e6574776f726b815250611096565b90508073ffffffffffffffffffffffffffffffffffffffff1663d7c8953c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190611573565b61059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5375626d697474696e67207072696365732069732063757272656e746c79206460448201527f697361626c656400000000000000000000000000000000000000000000000000606482015260840161034b565b43871061062d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5072696365732063616e206e6f74206265207375626d697474656420666f722060448201527f612066757475726520626c6f636b000000000000000000000000000000000000606482015260840161034b565b60006106376100d6565b9050808810156106c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4e6574776f726b2070726963657320666f7220612068696768657220626c6f6360448201527f6b20617265207365740000000000000000000000000000000000000000000000606482015260840161034b565b604080517f6e6574776f726b2e7072696365732e7375626d69747465642e6e6f64652e6b656020808301919091527f7900000000000000000000000000000000000000000000000000000000000000828401523360601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166041830152605582018b9052607582018a905260958083018a90528351808403909101815260b5830184528051908201207f6e6574776f726b2e7072696365732e7375626d69747465642e636f756e74000060d584015260f383018c905261011383018b90526101338084018b90528451808503909101815261015390930190935281519101206107d2826111c4565b15610839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4475706c6963617465207375626d697373696f6e2066726f6d206e6f64650000604482015260640161034b565b61084482600161125c565b6040517f6e6574776f726b2e7072696365732e7375626d69747465642e6e6f646500000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16603d820152605181018b90526108c39060710160405160208183030381529060405280519060200120600161125c565b60006108ce82610ffe565b6108d99060016115c4565b90506108e582826112e9565b604080518c8152602081018c90529081018a905242606082015233907f6a2507f84d6af44d2a9c355a7f1e3c4691b146051ce9501b429d8447ba9531c39060800160405180910390a2838b0361093f575050505050610a92565b600061097f6040518060400160405280601481526020017f726f636b657444414f4e6f646554727573746564000000000000000000000000815250611096565b90508573ffffffffffffffffffffffffffffffffffffffff16631f66e8ed6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f091906115d7565b8173ffffffffffffffffffffffffffffffffffffffff1663997072f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f91906115d7565b610a7184670de0b6b3a76400006115f0565b610a7b9190611607565b10610a8b57610a8b8c8c8c61134b565b5050505050505b505050505050565b6040518060400160405280601381526020017f726f636b65744e6574776f726b5072696365730000000000000000000000000081525030610ae5826040516020016102a0919061151b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964206f72206f7574646174656420636f6e747261637400000000604482015260640161034b565b6000610bb96040518060400160405280602081526020017f726f636b657444414f50726f746f636f6c53657474696e67734e6574776f726b815250611096565b90508073ffffffffffffffffffffffffffffffffffffffff1663d7c8953c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a9190611573565b610cb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5375626d697474696e67207072696365732069732063757272656e746c79206460448201527f697361626c656400000000000000000000000000000000000000000000000000606482015260840161034b565b438610610d45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5072696365732063616e206e6f74206265207375626d697474656420666f722060448201527f612066757475726520626c6f636b000000000000000000000000000000000000606482015260840161034b565b610d4d6100d6565b8611610ddb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4e6574776f726b2070726963657320666f7220616e20657175616c206f72206860448201527f696768657220626c6f636b206172652073657400000000000000000000000000606482015260840161034b565b6040517f6e6574776f726b2e7072696365732e7375626d69747465642e636f756e7400006020820152603e8101879052605e8101869052607e8101859052600090609e016040516020818303038152906040528051906020012090506000610e4282610ffe565b90506000610e846040518060400160405280601481526020017f726f636b657444414f4e6f646554727573746564000000000000000000000000815250611096565b90508373ffffffffffffffffffffffffffffffffffffffff16631f66e8ed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef591906115d7565b8173ffffffffffffffffffffffffffffffffffffffff1663997072f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6491906115d7565b610f7684670de0b6b3a76400006115f0565b610f809190611607565b1015610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6e73656e73757320686173206e6f74206265656e20726561636865640000604482015260640161034b565b610ff389898961134b565b505050505050505050565b600080546040517fbd02d0f50000000000000000000000000000000000000000000000000000000081526004810184905261010090910473ffffffffffffffffffffffffffffffffffffffff169063bd02d0f590602401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f91906115d7565b6000806110ad836040516020016102a0919061151b565b905073ffffffffffffffffffffffffffffffffffffffff811661024f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f436f6e7472616374206e6f7420666f756e640000000000000000000000000000604482015260640161034b565b600080546040517f21f8a7210000000000000000000000000000000000000000000000000000000081526004810184905261010090910473ffffffffffffffffffffffffffffffffffffffff16906321f8a72190602401602060405180830381865afa1580156111a0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f9190611642565b600080546040517f7ae1cfca0000000000000000000000000000000000000000000000000000000081526004810184905261010090910473ffffffffffffffffffffffffffffffffffffffff1690637ae1cfca90602401602060405180830381865afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f9190611573565b6000546040517fabfdcced00000000000000000000000000000000000000000000000000000000815260048101849052821515602482015261010090910473ffffffffffffffffffffffffffffffffffffffff169063abfdcced906044015b600060405180830381600087803b1580156112d557600080fd5b505af1158015610a92573d6000803e3d6000fd5b6000546040517fe2a4853a000000000000000000000000000000000000000000000000000000008152600481018490526024810183905261010090910473ffffffffffffffffffffffffffffffffffffffff169063e2a4853a906044016112bb565b611354816113a4565b61135d8361147d565b60408051838152602081018390524281830152905184917f6ef2ff813efc9efc76792366c4aca2677b755a5a13affc54d96ef35dc8e9bb73919081900360600190a2505050565b60006113e46040518060400160405280601681526020017f726f636b65744e6574776f726b536e617073686f747300000000000000000000815250611096565b6040517f5ba596490000000000000000000000000000000000000000000000000000000081527f25a22f579c19c441c6276bbd381ad43715a7c75c8781f5ee499cba2bb59cd23b60048201527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416602482015290915073ffffffffffffffffffffffffffffffffffffffff821690635ba59649906044016112bb565b6114a77f0a4041fbc2d754332ff77c5da54a4a6dd3a619121f939491b4636bd721ac417d826112e9565b50565b6000806000606084860312156114bf57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156114e857600080fd5b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116811461151457600080fd5b9392505050565b7f636f6e74726163742e616464726573730000000000000000000000000000000081526000825160005b818110156115625760208186018101516010868401015201611545565b506000920160100191825250919050565b60006020828403121561158557600080fd5b8151801515811461151457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561024f5761024f611595565b6000602082840312156115e957600080fd5b5051919050565b808202811582820484141761024f5761024f611595565b60008261163d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561165457600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461151457600080fdfea26469706673582212208968deaf30664819aa14aa7d296abe6cd4870a1031330b822ec4774f74456fcf64736f6c63430008120033
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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.