`validatorMaxStake` can be bypassed by using `setValidatorAddress()`
`setValidatorAddress()` allows a validator to migrate to a new address of their choice. However, the current logic only stacks up the old address' stake to the new one, never checking `validatorMaxStake`.\\nThe current logic for `setValidatorAddress()` is as follow:\\n```\\nfunction setValidatorAddress(uint128 validatorId, address newAddress) external whenNotPaused {\\n    // // rest of code\\n    v.stakings[newAddress].shares += v.stakings[msg.sender].shares;\\n    v.stakings[newAddress].staked += v.stakings[msg.sender].staked;\\n    delete v.stakings[msg.sender];\\n    // // rest of code\\n}\\n```\\n\\nThe old address' stake is simply stacked on top of the new address' stake. There are no other checks for this amount, even though the new address may already have contained a stake.\\nThen the combined total of the two stakings may exceed `validatorMaxStake`. This accordingly allows the new (validator) staker's amount to bypass said threshold, breaking an important invariant of the protocol.\\nBob the validator has a self-stake equal to `validatorMaxStake`.\\nBob has another address, B2, with some stake delegated to Bob's validator.\\nBob migrates to B2.\\nBob's stake is stacked on top of B2. B2 becomes the new validator address, but their stake has exceeded `validatorMaxStake`.\\nB2 can then repeated this procedure to addresses B3, B4, ..., despite B2 already holding more than the max allowed amount.\\nBob now holds more stake than he should be able to, allowing him to earn an unfair amount of rewards compared to other validators.\\nWe also note that, even if the admin tries to freeze Bob, he can front-run the freeze with an unstake, since unstakes are not blocked from withdrawing (after cooldown ends).
Check that the new address's total stake does not exceed `validatorMaxStake` before proceeding with the migration.
Breaking an important invariant of the protocol.\\nAllowing any validator to bypass the max stake amount. In turn allows them to earn an unfair amount of validator rewards in the process.\\nAllows a validator to unfairly increase their max delegator amount, as an effect of increasing `(validator stake) * maxCapMultiplier`.
```\\nfunction setValidatorAddress(uint128 validatorId, address newAddress) external whenNotPaused {\\n    // // rest of code\\n    v.stakings[newAddress].shares += v.stakings[msg.sender].shares;\\n    v.stakings[newAddress].staked += v.stakings[msg.sender].staked;\\n    delete v.stakings[msg.sender];\\n    // // rest of code\\n}\\n```\\n