Skip to content

Commit

Permalink
fix: add whenResumed
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeday committed Feb 10, 2025
1 parent 6e3b647 commit 8c45174
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 10 deletions.
11 changes: 10 additions & 1 deletion contracts/0.8.25/vaults/StakingVault.sol
Original file line number Diff line number Diff line change
Expand Up @@ -440,10 +440,14 @@ contract StakingVault is IStakingVault, OwnableUpgradeable {
function setDepositGuardian(address _depositGuardian) external onlyOwner {
if (_depositGuardian == address(0)) revert ZeroArgument("_depositGuardian");

if (_depositGuardian == _getStorage().depositGuardian) {
revert DepositGuardianAlreadySet();
}

VaultHub.VaultSocket memory socket = VaultHub(VAULT_HUB).vaultSocket(address(this));

if (socket.vault == address(this) && !socket.isDisconnected) {
revert SenderNotBeacon(msg.sender, address(this));
revert DepositGuardianCannotChangeWhenConnected();
}

ERC7201Storage storage $ = _getStorage();
Expand Down Expand Up @@ -647,4 +651,9 @@ contract StakingVault is IStakingVault, OwnableUpgradeable {
* @notice Thrown when trying to update deposit guardian for connected vault
*/
error DepositGuardianCannotChangeWhenConnected();

/**
* @notice Thrown when trying to update deposit guardian for connected vault
*/
error DepositGuardianAlreadySet();
}
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,11 @@ contract PredepositGuarantee is CLProofVerifier, PausableUntilWithRoles {

/// NO Balance operations

function topUpNodeOperatorBond(address _nodeOperator) external payable {
function topUpNodeOperatorBond(address _nodeOperator) external payable whenResumed {
_topUpNodeOperatorBalance(_nodeOperator);
}

function withdrawNodeOperatorBond(address _nodeOperator, uint128 _amount, address _recipient) external {
function withdrawNodeOperatorBond(address _nodeOperator, uint128 _amount, address _recipient) external whenResumed {
if (_amount == 0) revert ZeroArgument("amount");
if (_nodeOperator == address(0)) revert ZeroArgument("_nodeOperator");

Expand All @@ -110,7 +110,7 @@ contract PredepositGuarantee is CLProofVerifier, PausableUntilWithRoles {
emit NodeOperatorBondWithdrawn(_nodeOperator, _amount, _recipient);
}

function setNodeOperatorVoucher(address _voucher) external payable {
function setNodeOperatorVoucher(address _voucher) external payable whenResumed {
ERC7201Storage storage $ = _getStorage();

NodeOperatorBond storage bond = $.nodeOperatorBonds[msg.sender];
Expand Down Expand Up @@ -147,7 +147,7 @@ contract PredepositGuarantee is CLProofVerifier, PausableUntilWithRoles {
function predeposit(
IStakingVaultOwnable _stakingVault,
IStakingVaultOwnable.Deposit[] calldata _deposits
) external payable {
) external payable whenResumed {
if (_deposits.length == 0) revert PredepositNoDeposits();

address _nodeOperator = _stakingVault.nodeOperator();
Expand Down Expand Up @@ -200,14 +200,14 @@ contract PredepositGuarantee is CLProofVerifier, PausableUntilWithRoles {

// * * * * * Positive Proof Flow * * * * * //

function proveValidatorWC(ValidatorWitness calldata _witness) external {
function proveValidatorWC(ValidatorWitness calldata _witness) external whenResumed {
_processWCProof(_witness);
}

function depositToBeaconChain(
IStakingVaultOwnable _stakingVault,
IStakingVaultOwnable.Deposit[] calldata _deposits
) public payable {
) public payable whenResumed {
if (msg.sender != _stakingVault.nodeOperator()) {
revert MustBeNodeOperator();
}
Expand Down Expand Up @@ -253,7 +253,10 @@ contract PredepositGuarantee is CLProofVerifier, PausableUntilWithRoles {

// * * * * * Negative Proof Flow * * * * * //

function proveInvalidValidatorWC(ValidatorWitness calldata _witness, bytes32 _invalidWithdrawalCredentials) public {
function proveInvalidValidatorWC(
ValidatorWitness calldata _witness,
bytes32 _invalidWithdrawalCredentials
) public whenResumed {
ERC7201Storage storage $ = _getStorage();

ValidatorStatus storage validator = $.validatorStatuses[_witness.pubkey];
Expand Down Expand Up @@ -284,7 +287,7 @@ contract PredepositGuarantee is CLProofVerifier, PausableUntilWithRoles {

// called by the staking vault owner if the predeposited validator was proven invalid
// i.e. node operator was malicious and has stolen vault ether
function withdrawDisprovenPredeposit(bytes calldata validatorPubkey, address _recipient) public {
function withdrawDisprovenPredeposit(bytes calldata validatorPubkey, address _recipient) public whenResumed {
ValidatorStatus storage validator = _getStorage().validatorStatuses[validatorPubkey];

if (_recipient == address(0)) revert ZeroArgument("_recipient");
Expand Down Expand Up @@ -348,7 +351,7 @@ contract PredepositGuarantee is CLProofVerifier, PausableUntilWithRoles {
_wcAddress = address(uint160(uint256(_withdrawalCredentials)));
}

function _processWCProof(ValidatorWitness calldata _witness) internal {
function _processWCProof(ValidatorWitness calldata _witness) internal whenResumed {
ValidatorStatus storage validator = _getStorage().validatorStatuses[_witness.pubkey];

if (validator.bondStatus != BondStatus.AWAITING_PROOF) {
Expand Down

0 comments on commit 8c45174

Please sign in to comment.