@@ -114,15 +114,15 @@ contract SuccinctStaking is
114114 uint256 _slashCancellationPeriod
115115 ) external initializer {
116116 // Ensure that parameters critical for functionality are non-zero.
117- if (
118- _owner == address ( 0 ) || _governor == address ( 0 ) || _vApp == address ( 0 )
119- || _prove == address ( 0 ) || _intermediateProve == address ( 0 ) || _dispenser == address ( 0 )
120- ) {
121- revert ZeroAddress ( );
122- }
123- if (_maxUnstakeRequests == 0 || _unstakePeriod == 0 || _slashCancellationPeriod == 0 ) {
124- revert ZeroAmount ( );
125- }
117+ _requireNonZeroAddress (_owner);
118+ _requireNonZeroAddress ( _governor);
119+ _requireNonZeroAddress (_vApp);
120+ _requireNonZeroAddress (_prove);
121+ _requireNonZeroAddress (_intermediateProve );
122+ _requireNonZeroAddress (_dispenser);
123+ _requireNonZeroNumber (_maxUnstakeRequests);
124+ _requireNonZeroNumber (_unstakePeriod );
125+ _requireNonZeroNumber (_slashCancellationPeriod);
126126
127127 // Setup the initial state.
128128 __UUPSUpgradeable_init ();
@@ -279,7 +279,7 @@ contract SuccinctStaking is
279279 /// @inheritdoc ISuccinctStaking
280280 function requestUnstake (uint256 _stPROVE ) external override stakingOperation {
281281 // Ensure unstaking a non-zero amount.
282- if (_stPROVE == 0 ) revert ZeroAmount ( );
282+ _requireNonZeroNumber (_stPROVE);
283283
284284 // Get the prover that the staker is staked with.
285285 address prover = stakerToProver[msg .sender ];
@@ -289,7 +289,7 @@ contract SuccinctStaking is
289289 if (unstakeClaims[msg .sender ].length >= maxUnstakeRequests) revert TooManyUnstakeRequests ();
290290
291291 // Check that this prover is not in the process of being slashed.
292- if (slashClaimCount[ prover] > 0 ) revert ProverHasSlashRequest ( );
292+ _requireProverWithoutSlashRequests ( prover);
293293
294294 // Get the amount of $stPROVE this staker currently has.
295295 uint256 stPROVEBalance = balanceOf (msg .sender );
@@ -333,7 +333,7 @@ contract SuccinctStaking is
333333 if (claims.length == 0 ) revert NoUnstakeRequests ();
334334
335335 // Check that this prover is not in the process of being slashed.
336- if (slashClaimCount[ prover] > 0 ) revert ProverHasSlashRequest ( );
336+ _requireProverWithoutSlashRequests ( prover);
337337
338338 // Process the available unstake claims.
339339 PROVE += _finishUnstake (_staker, prover, claims);
@@ -367,7 +367,7 @@ contract SuccinctStaking is
367367 returns (uint256 index )
368368 {
369369 // Ensure slashing a non-zero amount.
370- if (_iPROVE == 0 ) revert ZeroAmount ( );
370+ _requireNonZeroNumber (_iPROVE);
371371
372372 // Create the slash claim.
373373 index = slashClaims[_prover].length ;
@@ -496,7 +496,7 @@ contract SuccinctStaking is
496496 uint256 amount = _PROVE == type (uint256 ).max ? available : _PROVE;
497497
498498 // Ensure dispensing a non-zero amount.
499- if (amount == 0 ) revert ZeroAmount ( );
499+ _requireNonZeroNumber (amount);
500500
501501 // If caller passed a specific number, make sure it doesn't exceed available.
502502 if (amount > available) revert AmountExceedsAvailableDispense ();
@@ -532,7 +532,7 @@ contract SuccinctStaking is
532532 returns (uint256 stPROVE )
533533 {
534534 // Ensure staking a non-zero amount.
535- if (_PROVE == 0 ) revert ZeroAmount ( );
535+ _requireNonZeroNumber (_PROVE);
536536
537537 // Ensure the staking amount is greater than the minimum stake amount.
538538 if (_PROVE < minStakeAmount) revert StakeBelowMinimum ();
@@ -541,7 +541,7 @@ contract SuccinctStaking is
541541 if (deactivatedProvers[_prover]) revert ProverNotActive ();
542542
543543 // Check that this prover is not in the process of being slashed.
544- if (slashClaimCount[ _prover] > 0 ) revert ProverHasSlashRequest ( );
544+ _requireProverWithoutSlashRequests ( _prover);
545545
546546 // Ensure the staker is not already staked with a different prover.
547547 address existingProver = stakerToProver[_staker];
@@ -663,6 +663,21 @@ contract SuccinctStaking is
663663 dispenseRate = _dispenseRate;
664664 }
665665
666+ /// @dev Thrown if a zero address is passed.
667+ function _requireNonZeroAddress (address _address ) internal pure {
668+ if (_address == address (0 )) revert ZeroAddress ();
669+ }
670+
671+ /// @dev Thrown if a zero number is passed.
672+ function _requireNonZeroNumber (uint256 _number ) internal pure {
673+ if (_number == 0 ) revert ZeroAmount ();
674+ }
675+
676+ /// @dev Validates that a prover has no pending slash requests.
677+ function _requireProverWithoutSlashRequests (address _prover ) private view {
678+ if (slashClaimCount[_prover] > 0 ) revert ProverHasSlashRequest ();
679+ }
680+
666681 /// @dev Authorizes an ERC1967 proxy upgrade to a new implementation contract.
667682 function _authorizeUpgrade (address _newImplementation ) internal override onlyOwner {}
668683}
0 commit comments