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