22pragma solidity ^ 0.8.19 ;
33
44import {Test} from "forge-std/Test.sol " ;
5+ import "forge-std/console.sol " ;
56import {StdInvariant} from "forge-std/StdInvariant.sol " ;
67import {SimpleETHContributionVault} from "src/safe-modules/SimpleETHContributionVault.sol " ;
78import {CommonBase} from "forge-std/Base.sol " ;
@@ -12,9 +13,9 @@ import {getETHValidatorData} from "../SimpleETHContributionVault.t.sol";
1213contract MockDepositContract {
1314 uint256 public ghost_depositSum;
1415
15- event Deposit ( bytes [] pubkeys , bytes [] withdrawal_credentials , bytes [] signatures , bytes32 [] deposit_data_roots );
16+ receive () external payable {}
1617
17- function deposit (bytes [] calldata , bytes [] calldata , bytes [] calldata , bytes32 [] calldata ) external payable {
18+ function deposit (bytes calldata , bytes calldata , bytes calldata , bytes32 ) external payable {
1819 ghost_depositSum += msg .value ;
1920 }
2021}
@@ -28,9 +29,9 @@ contract SECVMock is SimpleETHContributionVault {
2829 bytes [] calldata withdrawal_credentials ,
2930 bytes [] calldata signatures ,
3031 bytes32 [] calldata deposit_data_roots
31- ) external payable {
32+ ) external {
3233 for (uint256 i = 0 ; i < 1 ;) {
33- depositContract.deposit {value: msg . value }(
34+ depositContract.deposit {value: address ( this ).balance }(
3435 pubkeys[i], withdrawal_credentials[i], signatures[i], deposit_data_roots[i]
3536 );
3637 unchecked {
@@ -70,18 +71,16 @@ contract SECVBoundedHandler is CommonBase, StdCheats, StdUtils {
7071 ghost_rageQuitSum += amount;
7172 }
7273
73- function depositValidator (uint256 amount ) external payable {
74- amount = bound (amount, 0 , address (contributionVault).balance);
74+ function depositValidator () external payable {
7575 (
7676 bytes [] memory pubkeys ,
7777 bytes [] memory withdrawal_credentials ,
7878 bytes [] memory signatures ,
7979 bytes32 [] memory deposit_data_roots
8080 ) = getETHValidatorData ();
8181
82- contributionVault.depositValidatorMock {value: amount}(
83- pubkeys, withdrawal_credentials, signatures, deposit_data_roots
84- );
82+ // use entire vault balance
83+ contributionVault.depositValidatorMock (pubkeys, withdrawal_credentials, signatures, deposit_data_roots);
8584 }
8685}
8786
@@ -110,16 +109,16 @@ contract SECVInvariant is Test {
110109 function invariant_balanceEqual () public {
111110 assertEq (
112111 handler.ETH_SUPPLY (),
113- address (handler).balance + contributionVault. userBalances ( address (handler)) + address (mockDepositContract).balance
112+ address (handler).balance + address (contributionVault).balance + address (mockDepositContract).balance
114113 );
115114 }
116115
117116 /// @notice This invariant checks that the vault is
118- /// always solvent when a user ragequits.
117+ /// always solvent
119118 function invariant_vaultIsSolvent () public {
120119 assertEq (
121120 address (contributionVault).balance,
122- handler.ghost_depositSum () + mockDepositContract.ghost_depositSum () - handler.ghost_rageQuitSum ()
121+ handler.ghost_depositSum () - mockDepositContract.ghost_depositSum () - handler.ghost_rageQuitSum ()
123122 );
124123 }
125124}
0 commit comments