From 45de52afeaf3c42708eb4dc856224b4215e5f458 Mon Sep 17 00:00:00 2001 From: 0xvv Date: Fri, 17 Jan 2025 13:21:56 +0100 Subject: [PATCH] added missing events & getters --- src/contracts/StakingContract.sol | 11 +++++++++++ src/test/StakingContract.t.sol | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/contracts/StakingContract.sol b/src/contracts/StakingContract.sol index 7f1d45d..35510b5 100644 --- a/src/contracts/StakingContract.sol +++ b/src/contracts/StakingContract.sol @@ -78,6 +78,8 @@ contract StakingContract { event SetWithdrawerCustomizationStatus(bool _status); event ExitRequest(address caller, bytes pubkey); event ValidatorsEdited(uint256 blockNumber); + event NewSanctionsOracle(address sanctionsOracle); + event BeginOwnershipTransfer(address indexed previousAdmin, address indexed newAdmin); /// @notice Ensures an initialisation call has been called only once per _version value /// @param _version The current initialisation value @@ -211,6 +213,14 @@ contract StakingContract { /// @dev If the address is address(0), the sanctions oracle checks are skipped function setSanctionsOracle(address _sanctionsOracle) external onlyAdmin { StakingContractStorageLib.setSanctionsOracle(_sanctionsOracle); + emit NewSanctionsOracle(_sanctionsOracle); + } + + /// @notice Get the sanctions oracle address + /// @notice If the address is address(0), the sanctions oracle checks are skipped + /// @return sanctionsOracle The sanctions oracle address + function getSanctionsOracle() external view returns (address) { + return StakingContractStorageLib.getSanctionsOracle(); } /// @notice Retrieve system admin @@ -375,6 +385,7 @@ contract StakingContract { /// @param _newAdmin New Administrator address function transferOwnership(address _newAdmin) external onlyAdmin { StakingContractStorageLib.setPendingAdmin(_newAdmin); + emit BeginOwnershipTransfer(msg.sender, _newAdmin); } /// @notice New admin must accept its role by calling this method diff --git a/src/test/StakingContract.t.sol b/src/test/StakingContract.t.sol index ac13545..4650cb3 100644 --- a/src/test/StakingContract.t.sol +++ b/src/test/StakingContract.t.sol @@ -180,13 +180,17 @@ contract StakingContractTest is Test { assertEq(stakingContract.getAdmin(), admin); } + event BeginOwnershipTransfer(address indexed previousAdmin, address indexed newAdmin); event ChangedAdmin(address newAdmin); + function testSetAdmin(address newAdmin) public { assertEq(stakingContract.getAdmin(), admin); // Start ownership transfer process. vm.startPrank(admin); + vm.expectEmit(true, true, true, true); + emit BeginOwnershipTransfer(admin, newAdmin); stakingContract.transferOwnership(newAdmin); vm.stopPrank(); // At this point, the old admin is still in charge. @@ -2055,6 +2059,18 @@ contract StakingContractBehindProxyTest is Test { assert(deactivated == false); } + event NewSanctionsOracle(address); + + function test_setSanctionsOracle() public { + assertEq(stakingContract.getSanctionsOracle(), address(0)); + vm.startPrank(admin); + vm.expectEmit(true, true, true, true); + emit NewSanctionsOracle(address(oracle)); + stakingContract.setSanctionsOracle(address(oracle)); + vm.stopPrank(); + assertEq(stakingContract.getSanctionsOracle(), address(oracle)); + } + function test_deposit_withsanctions_senderSanctioned(address user) public { assumeAddress(user); oracle.setSanction(user, true);