The document describes what should be tested during `testnet` with CS contracs. ### Early Adoption - [x] Only EA member can create NO before public release - [x] NO created with EA bond curve before public release - [x] EA member cannot upload more than 10 keys in totla during EA - [x] Anyone can create NO after public release - [x] NO created with default bond curve - [x] EA member can create NO after public release - [x] NO created with EA bond curve after public release - [x] EA member can upload more than 10 keys in total after public release ### General - [x] Adding operators - [x] [ETH](https://app.blocksec.com/explorer/tx/holesky/0x95b5d521d11a418db2e7980ca95923eacf56466f5ec6cab608880b4b9542e4c6) - [x] [stETH](https://app.blocksec.com/explorer/tx/holesky/0xdfeb40b240dfa172fe86ef83ffb66feeb0b38be639baadcb8fa585324dafb194) - [x] [wstETH](https://app.blocksec.com/explorer/tx/holesky/0xb175a56363bdbfbc89a5cf1feadbd74e4df8eaa1a571234665e0e72eb1eb1fa2) - [x] Submiting keys - [x] [ETH](https://app.blocksec.com/explorer/tx/holesky/0x8f8e84b0ebcfa0c060c4916aaf16d2d42b746ca66c135e981dc0a69111c9adfc) - [x] [stETH](https://app.blocksec.com/explorer/tx/holesky/0x82c252d1773a5078d7a899bdafc25ceb76a1418e8ac0347cf261cf000e0d170a) - [x] [wstETH](https://app.blocksec.com/explorer/tx/holesky/0x39f9baefd64c38908f026c0f379e5c344b0a624ee4ce70b51742de4b854d9ec5) - [x] Claim rewards - [x] Claim excess bond - [x] [ETH](https://app.blocksec.com/explorer/tx/holesky/0x4e34437f0eef99ae69cb4c88ea437713adac6ebcfbf267d8b6d8bf3c9b94ba7a) - [x] [stETH](https://app.blocksec.com/explorer/tx/holesky/0xbc1b01487e93d93c61dac03d4ed66c85ef66a4f073bf6bcf35454d6fbd39e0bb) - [x] [wstETH](https://app.blocksec.com/explorer/tx/holesky/0xe64a9d3a9222e64d30ba464a3cd3f837e96ab82a3275219ef7bb62e1a0699d94) - [x] Can't claim with lock > excess (operator 37 at block 1978984, see [tx](https://app.blocksec.com/explorer/tx/holesky/0x45d08822a9e025d374ab182612a119d837a0869b0c343379025303f53c4c63be)) - [x] ETH - [x] stETH - [x] wstETH - [x] Can't claim after burning a part of bond (penalty settling) (operator 37 at block 1986197, see [tx](https://app.blocksec.com/explorer/tx/holesky/0x2f39f2d0ecf947869b12b6250956fb49fee15c69341acb800f6bac08134a888e)) - [x] ETH - [x] stETH - [x] wstETH - [x] Claim rewards with Merkle proof - [x] [ETH](https://app.blocksec.com/explorer/tx/holesky/0x4e34437f0eef99ae69cb4c88ea437713adac6ebcfbf267d8b6d8bf3c9b94ba7a) - [x] [stETH](https://app.blocksec.com/explorer/tx/holesky/0xbeb5db533b3dddfad0819aa08029679f10cbce7a97e8edc06dd95c2a07d90dd4) - [x] [wstETH](https://app.blocksec.com/explorer/tx/holesky/0xe64a9d3a9222e64d30ba464a3cd3f837e96ab82a3275219ef7bb62e1a0699d94) - [x] Transfer rewards to bond balance with no claim - [x] [Add new](https://app.blocksec.com/explorer/tx/holesky/0x8cd480a016aa2cbc818f5dfd222b08db72cc411aa5397034a5b22020fe0b7d24) bond curve - [x] [Setting new curve](https://app.blocksec.com/explorer/tx/holesky/0xcea4d214c8f6e4f3415fc941fdb6802f4243a7b3e12ba5288cf7e7df39d457a0) for NO - [x] Bond math is changed - [x] [Resetting curve](https://app.blocksec.com/explorer/tx/holesky/0x9bacd0da4aba1ed0ac70c7c6cef8f5ddbb1ad7e9e588d454140f00589bb403e0) for NO - [x] [Update bond curve](https://app.blocksec.com/explorer/tx/holesky/0x8b904da83d58e520c778cc562b10fa4e0943a9f991b9050d93481fdabf2da9c2) - [x] Bond math is changed for the NO - [x] Addresses - [x] Extended permissions = FALSE - [x] Change reward address ([propose](https://app.blocksec.com/explorer/tx/holesky/0x0ca335b8f5f4e0db4d5879d1f8a379e1401fa1d7dc9e7d96cb26cbf73aefe00d) and [confirm](https://app.blocksec.com/explorer/tx/holesky/0xc53d182af87df936ad6307a6d6f3bf6919ceeefd857f47759487e2a0d94bad37)) - [x] Change manager address ([propose](https://app.blocksec.com/explorer/tx/holesky/0x5a820a5622e5ab5be7aceb51c1555e3806f3257244b7ceaa5ed194ad461f5931) and [confirm](https://app.blocksec.com/explorer/tx/holesky/0x1ae9b609d5cfb87a08e8be9458b0214ed50c1302b1be1aff69f1817125fe9b50)) - [x] Reset manager address ([tx](https://app.blocksec.com/explorer/tx/holesky/0x4a0747800b16dfb18778f5a73c15aedbe3965dca2db0bf2d2fcfc17471bc7a12)) - [x] Extended permissions = TRUE - [x] Change reward address (see [tx](https://app.blocksec.com/explorer/tx/holesky/0x190a5095165578ad21ced16cda29af779173d17770b2e031107ef19a00b27b8f)) - [x] Change manager address ([propose](https://app.blocksec.com/explorer/tx/holesky/0x62d3a790d7318fa7ba4afedfe2aa855956e188f5d5bb3444c6d38cc6b44a5bdd) and [confirm](https://app.blocksec.com/explorer/tx/holesky/0xa47fb7970d4c83f87526c3c6d0e2d8e6aeb81591107546a01027c4d6c58e9153)) - [x] Remove keys - [x] Check that penalty wasn't applied when `keyRemovalCharge` = 0 (see [tx](https://app.blocksec.com/explorer/tx/holesky/0xa49801e2f79d60fe58227393642bd8a05edfd21e11f9973cf79d7497aa7b57b1)) - [x] Check that penalty was applied when `keyRemovalCharge` > 0 (see [tx](https://app.blocksec.com/explorer/tx/holesky/0x6045ad0d49b95bfe52335feb2fe8e0788a54cc4753e0b02f43dd0f844e65ec9d)) - [x] Optimistic vetting reset - [x] Upload [invalid key](https://app.blocksec.com/explorer/tx/holesky/0x7d2acfe596ccad2ada95a9e6fdfdcb7203f6bcfa608c36a4fa294428235cc8a9) - [x] Upload [valid key](https://app.blocksec.com/explorer/tx/holesky/0xcbee35b7170de3750c0df73c2484df73dd118f8d5020b320a3e0df31de2b1cb2) - [x] Check that the key [was unvetted](https://app.blocksec.com/explorer/tx/holesky/0x7f2cf4f8fe758c77db124bc486495c712288dcfa48ab805efaee9ad78ca32ce1) - [x] [Remove](https://app.blocksec.com/explorer/tx/holesky/0xbfcd53ba3493c6c4d5eed35748aa7ee3d5c1984d93a65d51064f72dcb87e56b3) the key - [x] Check that totalVetted == totalAdded - [x] Check that all keys are in the queue - [x] Pause (☁ checked via devnet1) - [x] Pause only Module - [x] NO creation and keys upload is impossible - [x] Oracle works as usual - [x] Rewards claim is possible - [x] Pause Module and Accounting - [x] Oracle works as usual - [x] Rewards claim is imposible - [x] Stuck keys - [x] Have two NO with > 2 keys (NO1, NO2) - [x] [Set](https://app.blocksec.com/explorer/tx/holesky/0x51fca7022bc6100c8dfa1a1de0b0598584749fc1884fbcb91c9668357317d715) forcedTraget Limit for NO1 - [x] Do not exit validator NO1 - [x] Wait for CSM Oracle report. Rewards only for NO2 - [x] Check that there are no rewards for NO1 - [x] Exit validator NO1 - [x] Wait for report after the next CSM Oracle report - [x] Assert that rewards exist for NO1 and NO2 - [x] Target Limit - [x] [Set](https://app.blocksec.com/explorer/tx/holesky/0xc21980446c2a043894c0e490293b133b007a995710d68c6155159525dcb3ecdd) `targetLimitMode` for NO = 1 (soft) - [x] depositable is changed by `targetLimit` - [x] `targetLimit` is reached, the operator stops receiving new stakes by WQ demand - [x] exceeds `targetLimit`, validators [are prioritized](https://app.blocksec.com/explorer/tx/holesky/0xeba70a642ed9448c8a85e36adfdd376c1d72361cdd425c812ac7ed90f2213389) for exit by WQ demand - [x] Withdrawal is reported by CSM tool - [x] [Set](https://app.blocksec.com/explorer/tx/holesky/0xd8bb4389a056be70fe20e3b6b903c3e7cdbf053610bd8d647c4e2fe49c94f8b6) `targetLimitMode` for NO = 2 (force) - [x] depositable [is changed](https://app.blocksec.com/explorer/tx/holesky/0xd8bb4389a056be70fe20e3b6b903c3e7cdbf053610bd8d647c4e2fe49c94f8b6) by `targetLimit` - [x] `targetLimit` is reached, the operator stops receiving new stakes despite WQ demand - [x] exceeds `targetLimit`, validators are prioritized [for exit](https://app.blocksec.com/explorer/tx/holesky/0x5e8bcbd6e6f9d76595af2c2fc2d4a7700b6ce7385b0626ae81b26889ec650515) despite WQ demand - [x] Withdrawal is reported by CSM tool - [x] CSM Oracle flow - [x] Oracle contract [paused](https://app.blocksec.com/explorer/tx/holesky/0x56a49219b4e40d146c0dc11d795b6d43696947f0ceb63fad7e9b820eab2b3e14). Offchain oracle is OK - [x] The initial epoch in set to FAR_FUTURE_EPOCH. Oracle doesn't collect data. - [x] The initial epoch in the future. Oracle collects data. - [ ] ~~Zero report (no operators) (impossible to check now)~~ - [ ] ~~Report with 1 operator (impossible to check now)~~ - [x] Report with multiple operators - [x] Report with multiple operators but one under avg performance - [x] [Report](https://app.blocksec.com/explorer/tx/holesky/0xaea24c0983d2105f0ce0be7e8f3186e4fffeb2d841ac9520f1c22148f88f8041) after a missed frame - [ ] ~~Report the same tree (no attestations within frame) (impossible to check now)~~ - [x] Change frame size [[1]](https://app.blocksec.com/explorer/tx/holesky/0xa83b886ea53a3aad260cad468e3a903df9f10f29194b1652d7d0566e6b2061ef). Offchain part works properly. - [x] Penalties - [x] MEV stealing report - [x] Lock has value before `bondLock.retentionUntil` - [x] Lock has 0 value after `bondLock.retentionUntil` - [x] MEV stealing settle - [x] [Burns the lock](https://app.blocksec.com/explorer/tx/holesky/0x2f39f2d0ecf947869b12b6250956fb49fee15c69341acb800f6bac08134a888e) from bond before `bondLock.retentionUntil` - [x] [Resets curve](https://app.blocksec.com/explorer/tx/holesky/0x2f39f2d0ecf947869b12b6250956fb49fee15c69341acb800f6bac08134a888e) to default - [x] [Burns nothing](https://app.blocksec.com/explorer/tx/holesky/0xe1bd0bc840c90d082af0fbc3c0221aec55bae5440d878fb0b65bc4ebc8365db8) after `bondLock.retentionUntil` - [x] MEV stealing [compensate](https://app.blocksec.com/explorer/tx/holesky/0x09abc271fdf6861bb6a5e1172f1e589f4a4b6b1951cb334fccf52cf86823bedd) - [x] MEV stealing [cancel](https://app.blocksec.com/explorer/tx/holesky/0x5de724f44fc1d4c383061b5620b3fad2a9f6d2d330f2c301f3481fd5b352d875) - [x] Withdrawals - [x] Simple exit with >= 32 ETH - [x] VEBO reported exited validator - [x] Withdrawal is [reported](https://app.blocksec.com/explorer/tx/holesky/0x0e31398c911319673707eae632f43f49746fcd481b97d73cd506a84ccf183f9a) by CSM tool - [x] Bond is unchanged - [x] Excess bond is available - [x] [Exit](https://holesky.beaconcha.in/validator/1734520) with balance below 32 ETH - [x] VEBO [reported](https://app.blocksec.com/explorer/tx/holesky/0x2111f2d7b324c01c518dc2a471cd55644680e15f54d603a3d1670ba023564f5c) exited validator - [x] Withdrawal is [reported](https://app.blocksec.com/explorer/tx/holesky/0x557c8a50302234471728baa65f362d2de40484f014a6e46090c3d131695491cb) by CSM tool (expected after epoch [70429](https://holesky.beaconcha.in/epoch/70429)) - [x] Bond is changed by the balance diff - [x] Excess bond is available (penalty is accounted before) - [x] Historical withdrawal report - [x] Slashings - [x] VEBO [reported](https://app.blocksec.com/explorer/tx/holesky/0x1953ed789d5740b3b0caa2b703e809322ce05ad089158aeaf927c042725d9be2) exited validator - [x] Slashing is [reported](https://app.blocksec.com/explorer/tx/holesky/0xacef2c4633a84c875efc5930427175fe4f545349e13b77be6ed536ae119ac53b) by CSM tool - [x] Initial slashing penalty burned from the bond - [x] Withdrawal is [reported](https://app.blocksec.com/explorer/tx/holesky/0x53e288831d5c949eb2aad19933f8632c30d46aca1862e28441a549c1fef340b1) by CSM tool (expected after epoch [74444](https://holesky.beaconcha.in/epoch/74444)) - [x] Initial slashing penalty accounted when burn the diff in balance (expected after epoch [74444](https://holesky.beaconcha.in/epoch/74444)) - [x] Module params changings - [x] `setKeyRemovalCharge` changes charge for removing keys (see [tx](https://app.blocksec.com/explorer/tx/holesky/0xff9a718ea224a75efaff33ba309f9dd92e18c7bc2c22e305627f11cf9e1a31fd)) - [x] `activatePublicRelease` activates public release (see [tx](https://app.blocksec.com/explorer/tx/holesky/0xc40eb25ded9134fab25f34f5da5c7ada6c69ae95bda6542a407b64e2b98343c9)) - [x] Accounting params changings - [x] `setChargeRecipient` [changes a recipient](https://app.blocksec.com/explorer/tx/holesky/0xeac0d9e4bfd175b503565e3f66a98f1c79e674c712d7ec41158b2ce7ef0f5b26) of charged amount - [x] `setLockedBondRetentionPeriod` [changes](https://app.blocksec.com/explorer/tx/holesky/0x9e1e97aeb4b709821f17158278611924a760552d1796def32784b23434303373) retention period for a new created locks - [ ] ~~`setDefaultBondCurve` changes bond math for all participants without custom curve~~ - [x] Fee oracle params changings - [x] `setPerformanceLeeway` [is set](https://app.blocksec.com/explorer/tx/holesky/0xfe2a4236ac6ab3f5dcf9845eda13b9edf0757010b7ef17c9b379564e1b0fb82c) and affected the current report (reference slot after the parameter update) ### DSM related - [x] Deposit - [x] CSM deposit preparation - [x] Add operator with keys - [x] Generate keys - [x] Add keys to existing operator - [x] Perform at least 1 deposit - [x] Check the deposit tx - [x] Wait for validator activation - [x] Wait for the AO report and check it - [x] Unvetting - [x] Invalid signature - [x] Check that UI block invalid signature upload - [x] Bypass UI and upload invalid signature - [x] Check that the key was unvetted - [x] Duplicate - [x] Upload duplicates within 1 operator - [x] Check uvetting - [x] Upload duplicate with the other CSM operator - [x] Check uvetting - [x] [Upload](https://app.blocksec.com/explorer/tx/holesky/0x0d94566fa404e7680d58ad3f1968cf297466d1c974f3d677113de1100ebbd712) duplicate from the other module - [x] Check [uvetting](https://app.blocksec.com/explorer/tx/holesky/0x5a2bb084eef7c95e448b8331bd6e2d531d35631285f97ef2a0ea46b28d71327c) ### GateSeal (☁ checked via devnet1) - [x] Seal CSModule. Contract is paused - [x] Seal CSAccounting. Contract is paused - [x] Seal CSOracle. Contract is paused ### EasyTrack - [x] Deploy factory for EL stealing penalty settling - [x] Test voting to add the factory to ET - [x] Check calling [settling](https://app.blocksec.com/explorer/tx/holesky/0x2f39f2d0ecf947869b12b6250956fb49fee15c69341acb800f6bac08134a888e) the penalty using ET