@@ -3,20 +3,17 @@ pragma solidity 0.8.18;
33
44import {RocketStorageInterface} from "../../interface/RocketStorageInterface.sol " ;
55import {RocketVaultInterface} from "../../interface/RocketVaultInterface.sol " ;
6- import {RocketDAOProtocolSettingsMinipoolInterface } from "../../interface/dao/protocol/settings/RocketDAOProtocolSettingsMinipoolInterface .sol " ;
6+ import {RocketVaultWithdrawerInterface } from "../../interface/RocketVaultWithdrawerInterface .sol " ;
77import {RocketDAOProtocolSettingsNodeInterface} from "../../interface/dao/protocol/settings/RocketDAOProtocolSettingsNodeInterface.sol " ;
88import {RocketDepositPoolInterface} from "../../interface/deposit/RocketDepositPoolInterface.sol " ;
99import {RocketMegapoolFactoryInterface} from "../../interface/megapool/RocketMegapoolFactoryInterface.sol " ;
1010import {RocketMegapoolInterface} from "../../interface/megapool/RocketMegapoolInterface.sol " ;
11- import {RocketNetworkFeesInterface} from "../../interface/network/RocketNetworkFeesInterface.sol " ;
12- import {RocketNetworkVotingInterface} from "../../interface/network/RocketNetworkVotingInterface.sol " ;
11+ import {RocketMegapoolManagerInterface} from "../../interface/megapool/RocketMegapoolManagerInterface.sol " ;
1312import {RocketNetworkSnapshotsInterface} from "../../interface/network/RocketNetworkSnapshotsInterface.sol " ;
13+ import {RocketNetworkVotingInterface} from "../../interface/network/RocketNetworkVotingInterface.sol " ;
1414import {RocketNodeDepositInterface} from "../../interface/node/RocketNodeDepositInterface.sol " ;
15- import {RocketNodeManagerInterface} from "../../interface/node/RocketNodeManagerInterface.sol " ;
1615import {RocketNodeStakingInterface} from "../../interface/node/RocketNodeStakingInterface.sol " ;
1716import {RocketBase} from "../RocketBase.sol " ;
18- import {RocketMegapoolManagerInterface} from "../../interface/megapool/RocketMegapoolManagerInterface.sol " ;
19- import {RocketVaultWithdrawerInterface} from "../../interface/RocketVaultWithdrawerInterface.sol " ;
2017
2118/// @notice Entry point for node operators to perform deposits for the creation of new validators on the network
2219contract RocketNodeDeposit is RocketBase , RocketNodeDepositInterface , RocketVaultWithdrawerInterface {
@@ -41,15 +38,18 @@ contract RocketNodeDeposit is RocketBase, RocketNodeDepositInterface, RocketVaul
4138
4239 /// @notice Returns the bond requirement for the given number of validators
4340 function getBondRequirement (uint256 _numValidators ) override public view returns (uint256 ) {
41+ if (_numValidators == 0 ) {
42+ return 0 ;
43+ }
4444 // Get contracts
4545 RocketDAOProtocolSettingsNodeInterface rocketDAOProtocolSettingsNode = RocketDAOProtocolSettingsNodeInterface (getContractAddress ("rocketDAOProtocolSettingsNode " ));
4646 // Calculate bond requirement
4747 uint256 [] memory baseBondArray = rocketDAOProtocolSettingsNode.getBaseBondArray ();
48- if (_numValidators < baseBondArray.length ) {
49- return baseBondArray[_numValidators];
48+ if (_numValidators - 1 < baseBondArray.length ) {
49+ return baseBondArray[_numValidators - 1 ];
5050 }
5151 uint256 reducedBond = rocketDAOProtocolSettingsNode.getReducedBond ();
52- return baseBondArray[baseBondArray.length - 1 ] + (1 + _numValidators - baseBondArray.length ) * reducedBond;
52+ return baseBondArray[baseBondArray.length - 1 ] + (_numValidators - baseBondArray.length ) * reducedBond;
5353 }
5454
5555 /// @notice Returns a node operator's credit balance in wei
@@ -188,9 +188,6 @@ contract RocketNodeDeposit is RocketBase, RocketNodeDepositInterface, RocketVaul
188188 RocketMegapoolFactoryInterface rocketMegapoolFactory = RocketMegapoolFactoryInterface (getContractAddress ("rocketMegapoolFactory " ));
189189 RocketMegapoolInterface megapool = RocketMegapoolInterface (rocketMegapoolFactory.getOrDeployContract (msg .sender ));
190190 RocketMegapoolManagerInterface rocketMegapoolManager = RocketMegapoolManagerInterface (getContractAddress ("rocketMegapoolManager " ));
191- // Check bond requirements
192- checkBondRequirement (megapool, _bondAmount);
193- checkDebtRequirement (megapool);
194191 // Request a new validator from the megapool
195192 rocketMegapoolManager.addValidator (address (megapool), megapool.getValidatorCount ());
196193 megapool.newValidator (_bondAmount, _useExpressTicket, _validatorPubkey, _validatorSignature, _depositDataRoot);
@@ -229,19 +226,6 @@ contract RocketNodeDeposit is RocketBase, RocketNodeDepositInterface, RocketVaul
229226 rocketNetworkSnapshots.push (key, uint224 (ethProvided));
230227 }
231228
232- /// @dev Checks the bond requirements for a node deposit
233- function checkBondRequirement (RocketMegapoolInterface _megapool , uint256 _bondAmount ) internal {
234- uint256 totalBondRequired = getBondRequirement (_megapool.getActiveValidatorCount ());
235- uint256 currentBond = _megapool.getNodeBond ();
236- uint256 requiredBond = totalBondRequired - currentBond;
237- require (_bondAmount == requiredBond, "Bond requirement not met " );
238- }
239-
240- /// @dev Checks the debt requirements for a node deposit
241- function checkDebtRequirement (RocketMegapoolInterface _megapool ) internal {
242- require (_megapool.getDebt () == 0 , "Cannot create validator while debt exists " );
243- }
244-
245229 /// @dev Initialises node's voting power if not already done
246230 function checkVotingInitialised () private {
247231 // Ensure voting has been initialised for this node
0 commit comments