Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slash packet throttling #462

Merged
merged 210 commits into from
Dec 16, 2022
Merged
Show file tree
Hide file tree
Changes from 178 commits
Commits
Show all changes
210 commits
Select commit Hold shift + click to select a range
d16ba5c
wip
shaspitz Oct 25, 2022
fda4bff
Update module.go
shaspitz Oct 25, 2022
0c969c2
wip
shaspitz Oct 26, 2022
b3d8d37
tests pass
shaspitz Oct 26, 2022
7bd74b9
Update relay.go
shaspitz Oct 27, 2022
aeaa892
Update relay.go
shaspitz Oct 27, 2022
94b1edf
Update relay.go
shaspitz Oct 27, 2022
abf9458
Update relay.go
shaspitz Oct 27, 2022
d88665b
wip
shaspitz Oct 27, 2022
a4e1e1b
still wip
shaspitz Oct 28, 2022
b0e8818
Merge branch 'main' into circuit-breaker
shaspitz Oct 28, 2022
320570a
panic with too many packets
shaspitz Oct 28, 2022
35540d6
Update relay.go
shaspitz Oct 28, 2022
176f31e
wip
shaspitz Oct 31, 2022
3872f37
checkpoint
shaspitz Nov 1, 2022
5e22474
Update throttle.go
shaspitz Nov 1, 2022
2773c48
make relay.go closer to main
shaspitz Nov 1, 2022
c00c270
Merge branch 'main' into circuit-breaker
shaspitz Nov 1, 2022
14be208
merge fixes
shaspitz Nov 1, 2022
a878f5a
Update expected_keepers.go
shaspitz Nov 1, 2022
1fa0608
Update throttle_test.go
shaspitz Nov 1, 2022
6e2ade5
Update throttle.go
shaspitz Nov 1, 2022
46c27be
second queue is now implemented
shaspitz Nov 3, 2022
fa09479
smalls
shaspitz Nov 3, 2022
018de7c
Update throttle.go
shaspitz Nov 3, 2022
0681221
removed pointer silliness
shaspitz Nov 3, 2022
5d1241a
Merge branch 'main' into circuit-breaker
shaspitz Nov 3, 2022
92f0368
Update throttle_test.go
shaspitz Nov 3, 2022
8242893
test improvements
shaspitz Nov 3, 2022
c0cac2f
small
shaspitz Nov 3, 2022
0a745fa
where it's called
shaspitz Nov 3, 2022
d5758a8
Update relay.go
shaspitz Nov 3, 2022
8ffe723
comments n stuff
shaspitz Nov 3, 2022
800d6af
Update throttle.go
shaspitz Nov 3, 2022
9b787dd
Update throttle.go
shaspitz Nov 3, 2022
909e23f
comments
shaspitz Nov 3, 2022
f894949
wip
shaspitz Nov 3, 2022
29351a8
callbacks
shaspitz Nov 3, 2022
a1ff563
cleans
shaspitz Nov 4, 2022
50259fc
mas tests
shaspitz Nov 4, 2022
b605f9f
Update README.md
shaspitz Nov 4, 2022
336e7cc
less diff
shaspitz Nov 4, 2022
f4b0c1e
Merge branch 'main' into circuit-breaker
shaspitz Nov 4, 2022
cb36e31
mas
shaspitz Nov 4, 2022
6c5b77b
Merge branch 'main' into circuit-breaker
shaspitz Nov 7, 2022
1dbe42c
keys
shaspitz Nov 7, 2022
9dfc06f
wip
shaspitz Nov 7, 2022
8a8f88c
changes
shaspitz Nov 7, 2022
54d231f
Update params.go
shaspitz Nov 7, 2022
a3b7555
size constraints
shaspitz Nov 8, 2022
fd55b51
Update keys_test.go
shaspitz Nov 8, 2022
c1c4b60
Update throttle_test.go
shaspitz Nov 8, 2022
c7db22e
Merge branch 'main' into circuit-breaker-params-rebase
shaspitz Nov 8, 2022
ef8124b
Merge branch 'main' into circuit-breaker
shaspitz Nov 8, 2022
d418dc2
Merge branch 'main' into circuit-breaker-params-rebase
shaspitz Nov 8, 2022
fe2bb3f
Merge branch 'main' into circuit-breaker-params-rebase
shaspitz Nov 8, 2022
6582a17
Merge branch 'main' into circuit-breaker
shaspitz Nov 8, 2022
fdf12ab
wip
shaspitz Nov 8, 2022
900de76
on recv new behavior and test
shaspitz Nov 8, 2022
495a654
on recv slash packet
shaspitz Nov 8, 2022
01098af
so close
shaspitz Nov 9, 2022
1a88a1a
clean
shaspitz Nov 9, 2022
5c061c3
Update slashing.go
shaspitz Nov 9, 2022
5d1dd8b
cleans
shaspitz Nov 9, 2022
c6d2652
wip
shaspitz Nov 9, 2022
0458040
Merge branch 'circuit-breaker-params-rebase' into circuit-breaker
shaspitz Nov 9, 2022
09a9361
params
shaspitz Nov 10, 2022
440655e
wip
shaspitz Nov 10, 2022
f955739
tests
shaspitz Nov 10, 2022
0475032
changes
shaspitz Nov 11, 2022
3af89d1
Merge branch 'main' into testutil-refactor
shaspitz Nov 11, 2022
8a55b0a
mas
shaspitz Nov 11, 2022
b83d8cb
Update README.md
shaspitz Nov 11, 2022
3c5c817
Update README.md
shaspitz Nov 12, 2022
9cfbc76
Update README.md
shaspitz Nov 12, 2022
69596b6
sorry for the friday night emails
shaspitz Nov 12, 2022
e7cde9e
Update instance_test.go
shaspitz Nov 12, 2022
71bf63b
wip
shaspitz Nov 12, 2022
0b924ac
wip
shaspitz Nov 15, 2022
226aa95
wip
shaspitz Nov 15, 2022
5f6952e
wip
shaspitz Nov 15, 2022
b64fece
wip
shaspitz Nov 15, 2022
bc577e0
wip
shaspitz Nov 15, 2022
48a8772
wip
shaspitz Nov 15, 2022
a4b755b
wip
shaspitz Nov 15, 2022
9f45d14
works
shaspitz Nov 15, 2022
b51510d
Update generic_setup.go
shaspitz Nov 15, 2022
8dca707
Merge branch 'main' into e2e-multiple-consumers
shaspitz Nov 15, 2022
7dcce36
Update setup.go
shaspitz Nov 15, 2022
ec469f1
smol
shaspitz Nov 15, 2022
dd8983d
small
shaspitz Nov 15, 2022
714be77
path to ccv chan setup
shaspitz Nov 15, 2022
49b45f2
todos
shaspitz Nov 15, 2022
df45b72
Update setup.go
shaspitz Nov 15, 2022
5db64cb
Merge branch 'main' into e2e-multiple-consumers
shaspitz Nov 16, 2022
d4c8df1
Create debug_test.go
shaspitz Nov 16, 2022
e89d605
democ
shaspitz Nov 17, 2022
bcc911b
Update debug_test.go
shaspitz Nov 17, 2022
8b85c90
Merge branch 'main' into debug-file
shaspitz Nov 17, 2022
02933c6
Merge branch 'debug-file' into e2e-multiple-consumers
shaspitz Nov 17, 2022
6d078c9
Merge branch 'main' into debug-file
shaspitz Nov 17, 2022
0c1e582
setup all ccv channels
shaspitz Nov 18, 2022
e771e00
Merge branch 'main' into debug-file
shaspitz Nov 18, 2022
3feffc3
bump to main
shaspitz Nov 18, 2022
5820981
another bump, missed one
shaspitz Nov 18, 2022
869a0fa
Merge branch 'main' into debug-file
jtremback Nov 18, 2022
fb6f948
Merge branch 'main' into debug-file
shaspitz Nov 18, 2022
d78b599
fix after merge main
shaspitz Nov 18, 2022
19669d4
Merge branch 'debug-file' into e2e-multiple-consumers
shaspitz Nov 18, 2022
91d5203
fixes
shaspitz Nov 18, 2022
631fbf9
Update slashing.go
shaspitz Nov 18, 2022
97eb82e
expired client tests
shaspitz Nov 18, 2022
741f387
Merge branch 'debug-file' into e2e-multiple-consumers
shaspitz Nov 18, 2022
3a384fd
checks
shaspitz Nov 18, 2022
04cee6a
fixed the stuff
shaspitz Nov 19, 2022
a55fd94
smol
shaspitz Nov 19, 2022
36b78fb
changes
shaspitz Nov 21, 2022
c476872
Merge branch 'mapped-sent-packets-fix' into e2e-multiple-consumers
shaspitz Nov 21, 2022
aba6ccc
updates
shaspitz Nov 21, 2022
1598b5b
cleans
shaspitz Nov 21, 2022
7d2e39a
clean
shaspitz Nov 21, 2022
71463e0
todo
shaspitz Nov 21, 2022
c1a9926
fixes
shaspitz Nov 21, 2022
9587b4c
cleans
shaspitz Nov 21, 2022
3b81eb2
Update slashing.go
shaspitz Nov 21, 2022
7c85833
Update slashing.go
shaspitz Nov 21, 2022
69a5472
Merge branch 'main' into circuit-breaker
shaspitz Nov 21, 2022
9fe10c9
mod tidy
shaspitz Nov 21, 2022
4f2c90d
fix build errs
shaspitz Nov 21, 2022
94ce770
Merge branch 'e2e-multiple-consumers' into circuit-breaker
shaspitz Nov 21, 2022
cef81a1
test fixes
shaspitz Nov 21, 2022
5be6f87
Update slashing.go
shaspitz Nov 21, 2022
9cb7c54
Update throttle.go
shaspitz Nov 21, 2022
8390547
base rounding
shaspitz Nov 22, 2022
f5a08c4
mas unit tests
shaspitz Nov 22, 2022
5fdfef7
updates
shaspitz Nov 22, 2022
9da9224
comments
shaspitz Nov 22, 2022
67e1ead
comments
shaspitz Nov 22, 2022
eea4620
cleans
shaspitz Nov 23, 2022
ef4c4e9
clean
shaspitz Nov 23, 2022
59e0b65
small
shaspitz Nov 23, 2022
91c2cc3
sin gas
shaspitz Nov 24, 2022
1f3829f
more understandable logic
shaspitz Nov 24, 2022
3ed56cb
Merge branch 'main' into circuit-breaker
shaspitz Nov 24, 2022
b663ece
crypto rand
shaspitz Nov 24, 2022
d034e61
utils
shaspitz Nov 24, 2022
82643d8
one e2e
shaspitz Nov 24, 2022
358d90e
helpers
shaspitz Nov 25, 2022
f3ebbf4
Update slashing.go
shaspitz Nov 25, 2022
9290ed2
helpers
shaspitz Nov 25, 2022
000c83d
cleans
shaspitz Nov 25, 2022
ab03715
shiz works
shaspitz Nov 25, 2022
a5d22c9
tcs
shaspitz Nov 25, 2022
a09dd87
smalls
shaspitz Nov 25, 2022
0391a0e
un mas
shaspitz Nov 26, 2022
5f14fb3
allowance changing test
shaspitz Nov 26, 2022
34bfb33
smol
shaspitz Nov 26, 2022
6ee0872
smol
shaspitz Nov 26, 2022
af5ed0d
e2e tests are done
shaspitz Nov 26, 2022
7ddd77e
lets try this
shaspitz Nov 26, 2022
aa92173
Merge branch 'main' into circuit-breaker
jtremback Nov 28, 2022
55df41c
Key Assignment -> goc-december (#527)
jtremback Nov 28, 2022
20ef4c3
Merge branch 'goc-december' into circuit-breaker
jtremback Nov 28, 2022
44e86ab
Fix errors in merge commit, comment out failing TestRelayAndApplySlas…
jtremback Nov 28, 2022
1a8a08e
add simon's test fixes
shaspitz Nov 29, 2022
c1d909d
Update state.go
shaspitz Nov 29, 2022
e35dbe7
last replenish time -> last full time
shaspitz Nov 29, 2022
ba9965e
readme
shaspitz Nov 29, 2022
624937e
increment i
shaspitz Nov 29, 2022
5cdbfcd
shared method
shaspitz Nov 29, 2022
9904325
iteration change
shaspitz Nov 29, 2022
c238f4b
Meter allowance lockstep (#553)
shaspitz Dec 3, 2022
5b8d2c7
log
shaspitz Dec 5, 2022
b28e176
requested key format changes (#560)
shaspitz Dec 6, 2022
35192c0
Throttle garbage collection (#557)
shaspitz Dec 7, 2022
1247cae
update invariant
shaspitz Dec 8, 2022
a759c07
Throttle bug fixes + req refactors (#565)
shaspitz Dec 8, 2022
01b13d3
weird
shaspitz Dec 9, 2022
f4ab7d9
Merge branch 'main' into circuit-breaker
shaspitz Dec 10, 2022
1ebc8ca
merge fixes to build
shaspitz Dec 10, 2022
ce64f39
tests now pass
shaspitz Dec 10, 2022
5ce8ea2
name change
shaspitz Dec 10, 2022
28867c9
better ordering tests
shaspitz Dec 10, 2022
9a00a9b
remove integration test diff
shaspitz Dec 12, 2022
1f920b4
avoid double call to address mapping
shaspitz Dec 12, 2022
1dda237
Update throttle.go
shaspitz Dec 12, 2022
f744762
0 included in iteration start
shaspitz Dec 12, 2022
37dd296
naming refactors
shaspitz Dec 12, 2022
a8ea5df
Update keys_test.go
shaspitz Dec 12, 2022
589e019
more refactors
shaspitz Dec 13, 2022
1010775
clarify allowance terminology
shaspitz Dec 13, 2022
dcdf3d2
update doc with explanation on min value
shaspitz Dec 13, 2022
5487719
md clarification
shaspitz Dec 13, 2022
81363e4
Update throttle.md
shaspitz Dec 13, 2022
408ff0c
swap replenish order
shaspitz Dec 13, 2022
9d1b6bf
add max limit note
shaspitz Dec 13, 2022
fcf29bc
#533 Adds normal operation diff testing
danwt Dec 13, 2022
072a18c
Merge branch 'main' into circuit-breaker
shaspitz Dec 13, 2022
e9f40b0
Merge branch 'main' into circuit-breaker
shaspitz Dec 14, 2022
bcc6566
progress save
shaspitz Dec 14, 2022
5f2d8ae
cleans
shaspitz Dec 14, 2022
cd3887c
name change
shaspitz Dec 15, 2022
bd2e4d0
Bugfix (#605)
shaspitz Dec 15, 2022
2e246d1
Circuit breaker refactor (#606)
shaspitz Dec 16, 2022
892c66b
quick fix
shaspitz Dec 16, 2022
2e03991
small key correction
shaspitz Dec 16, 2022
0b595ea
smol
shaspitz Dec 16, 2022
80a9cfa
Merge branch 'main' into circuit-breaker
shaspitz Dec 16, 2022
3b03354
don't store time length
shaspitz Dec 16, 2022
ab11cee
use big endian, shawn you dingus
shaspitz Dec 16, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions docs/quality_assurance.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,14 @@ IBC packets:

| ID | Concern | Code Review | Unit Testing | E2E Testing | Diff. Testing | Testnet |
| -- | ------- | ----------- | ------------ | ----------- | ------------- | ------- |
| 2.01 | Create IBC clients | `Scheduled` (ibc-go) | `Done` [TestCreateConsumerClient](../x/ccv/provider/keeper/proposal_test.go#117), [TestInitGenesis](../x/ccv/consumer/keeper/genesis_test.go#26) | `Done` [SetupTest](../tests/e2e/setup_test.go#39), [TestConsumerGenesis](../tests/e2e/channel_init_test.go#21) | `Future work` | `Scheduled` |
| 2.02 | Create CCV channel (handshake) | `Scheduled` (ibc-go) | `Done` [provider/ibc_module_test.go](../x/ccv/provider/ibc_module_test.go), [consumer/ibc_module_test.go](../x/ccv/consumer/ibc_module_test.go) | `Done` [SetupCCVChannel](../tests/e2e/setup_test.go#125) | `Future work` | `Scheduled` |
| 2.03 | Sending IBC packets | `Scheduled` (ibc-go) | `NA` | `Done` [TestSendVSCMaturedPackets](../tests/e2e/valset_update_test.go#39), [TestSendSlashPacket](../tests/e2e/slashing_test.go#648) | `Done` | `Scheduled` |
| 2.04 | Handling acknowledgments | `Scheduled` (ibc-go) | [Scheduled](https://github.com/cosmos/interchain-security/issues/362) | `Partial coverage` [TestOnAcknowledgementPacket](../x/ccv/consumer/keeper/relay_test.go#152), [TestSlashPacketAcknowldgement](../tests/e2e/slashing_test.go#258) | `Done` | `Scheduled` |
| 2.01 | Create IBC clients | `Scheduled` (ibc-go) | `Done` [TestCreateConsumerClient](../x/ccv/provider/keeper/proposal_test.go#117), [TestInitGenesis](../x/ccv/consumer/keeper/genesis_test.go#26) | `Done` [SetupTest](../tests/e2e/setup.go) | `Future work` | `Scheduled` |
| 2.02 | Create CCV channel (handshake) | `Scheduled` (ibc-go) | `Done` [provider/ibc_module_test.go](../x/ccv/provider/ibc_module_test.go), [consumer/ibc_module_test.go](../x/ccv/consumer/ibc_module_test.go) | `Done` [SetupCCVChannel](../tests/e2e/setup.go) | `Future work` | `Scheduled` |
| 2.03 | Sending IBC packets | `Scheduled` (ibc-go) | `NA` | `Done` [TestSendVSCMaturedPackets](../tests/e2e/valset_update.go), [TestSendSlashPacket](../tests/e2e/slashing.go) | `Done` | `Scheduled` |
| 2.04 | Handling acknowledgments | `Scheduled` (ibc-go) | [Scheduled](https://github.com/cosmos/interchain-security/issues/362) | `Partial coverage` [TestOnAcknowledgementPacket](../x/ccv/consumer/keeper/relay_test.go#152), [TestSlashPacketAcknowldgement](../tests/e2e/slashing.go) | `Done` | `Scheduled` |
| 2.05 | Handling timeouts | `Scheduled` (ibc-go) | [Scheduled](https://github.com/cosmos/interchain-security/issues/362) |`NA` | `Future work` | `Scheduled` |
| 2.06 | Handling IBC client expiration | `Scheduled` (ibc-go) | `NA` | `Done` [expired_client.go](../tests/e2e/expired_client.go) | `Future work` | `Scheduled` |
| 2.07 | ICS-20 channel creation | `Scheduled` (ibc-go) | `NA` | `Done` [SetupTransferChannel](../tests/e2e/setup_test.go#152) |`Future work` | `Scheduled` |
| 2.08 | ICS-20 transfer | `Scheduled` (ibc-go) | `NA` | `Done` [TestRewardsDistribution](../tests/e2e/distribution_test.go#17) | `NA` | `Scheduled` |
| 2.07 | ICS-20 channel creation | `Scheduled` (ibc-go) | `NA` | `Done` [SetupTransferChannel](../tests/e2e/setup.go) |`Future work` | `Scheduled` |
| 2.08 | ICS-20 transfer | `Scheduled` (ibc-go) | `NA` | `Done` [TestRewardsDistribution](../tests/e2e/distribution.go) | `NA` | `Scheduled` |
| 2.09 | Changes in IBC-GO testing suite | `Scheduled` (ibc-go) | `NA` | `NA` | `Partial coverage` | `NA` |

### Integration with Cosmos SDK
Expand All @@ -63,9 +63,9 @@ IBC packets:

| ID | Concern | Code Review | Unit Testing | E2E Testing | Diff. Testing | Testnet |
| -- | ------- | ----------- | ------------ | ----------- | ------------- | ------- |
| 3.01 | Changes to staking module | `Done` | `Done` [unbonding_test.go](https://github.com/cosmos/cosmos-sdk/blob/interchain-security-rebase.0.45.6/x/staking/keeper/unbonding_test.go) | `Partial coverage` <br> [unbonding_test.go](../tests/e2e/unbonding_test.go) <br> redelegation could be expanded, validator unbonding missing | `Partial coverage` | `Scheduled` |
| 3.02 | Changes to slashing module | `Done` | `NA` | `Done` <br> [TestValidatorDowntime](../tests/e2e/slashing_test.go#L502) <br> | `Partial coverage` | `Scheduled` |
| 3.03 | Changes to evidence module | `Done` | `NA` | `Done` <br> [TestValidatorDoubleSigning](../tests/e2e/slashing_test.go#L584) <br> | `NA` | `Scheduled` |
| 3.01 | Changes to staking module | `Done` | `Done` [unbonding_test.go](https://github.com/cosmos/cosmos-sdk/blob/interchain-security-rebase.0.45.6/x/staking/keeper/unbonding_test.go) | `Partial coverage` <br> [unbonding_test.go](../tests/e2e/unbonding.go) <br> redelegation could be expanded, validator unbonding missing | `Partial coverage` | `Scheduled` |
| 3.02 | Changes to slashing module | `Done` | `NA` | `Done` <br> [TestValidatorDowntime](../tests/e2e/slashing.go) <br> | `Partial coverage` | `Scheduled` |
| 3.03 | Changes to evidence module | `Done` | `NA` | `Done` <br> [TestValidatorDoubleSigning](../tests/e2e/slashing.go) <br> | `NA` | `Scheduled` |

### Provider Chain Correctness

Expand All @@ -77,13 +77,13 @@ The main concern addressed in this section is the correctness of the provider ch

| ID | Concern | Code Review | Unit Testing | E2e | Diff. Testing | Testnet | Protocol audit |
| -- | ------- | ----------- | ------------ | --- | ------------- | ------- | -------------- |
| 4.01 | Liveness of undelegations <br> - unbonding delegation entries are eventually removed from `UnbondingDelegation` | `Scheduled` | `NA` | `Done` <br> [unbonding_test.go](../tests/e2e/unbonding_test.go) | `Done` | `Scheduled` | `NA` |
| 4.01 | Liveness of undelegations <br> - unbonding delegation entries are eventually removed from `UnbondingDelegation` | `Scheduled` | `NA` | `Done` <br> [unbonding_test.go](../tests/e2e/unbonding.go) | `Done` | `Scheduled` | `NA` |
| 4.02 | Liveness of redelegations <br> - redelegations entries are eventually removed from `Redelegations` | `Scheduled` | `NA` | `Scheduled` | `Scheduled` | `Scheduled` | `NA` |
| 4.03 | Liveness of validator unbondings <br> - unbonding validators with no delegations are eventually removed from `Validators` | `Scheduled` | `NA` | `NA` | `Done` | `Scheduled` | `NA` |
| 4.04 | Unbonding operations (undelegations, redelegations, validator unbondings) should eventually complete even if the CCV channel is never established (due to error) <br> - expected outcome: the channel initialization sub-protocol eventually times out, which leads to the consumer chain removal | `Scheduled` | `NA` | `Done` [TestUndelegationDuringInit](../tests/e2e/unbonding_test.go#145) | `Future work` | `Scheduled` | `Done` |
| 4.05 | Unbonding operations (undelegations, redelegations, validator unbondings) should eventually complete even if one of the clients expire <br> - expected outcome: the pending VSC packets eventually timeout, which leads to the consumer chain removal | `Scheduled` | `NA` | `Done` [TestUndelegationVscTimeout](../tests/e2e/unbonding.go#127) | `Future work` | `Scheduled` | `NA` |
| 4.06 | A validator cannot get slashed more than once for double signing, regardless of how many times it double signs on different chains (consumers or provider) | `Scheduled` | `NA` |`Done` <br> [TestHandleSlashPacketErrors](../tests/e2e/slashing_test.go#L317) | `Done` | `Scheduled` | `NA` |
| 4.07 | A validator cannot get slashed multiple times for downtime on the same consumer chain without requesting to `Unjail` itself on the provider chain in between | `Scheduled` | `NA` | `Partial coverage` <br> [TestSendSlashPacket](../tests/e2e/slashing_test.go#L648) | `Partial coverage` | `Scheduled` | `NA` |
| 4.04 | Unbonding operations (undelegations, redelegations, validator unbondings) should eventually complete even if the CCV channel is never established (due to error) <br> - expected outcome: the channel initialization sub-protocol eventually times out, which leads to the consumer chain removal | `Scheduled` | `NA` | `Done` [TestUndelegationDuringInit](../tests/e2e/unbonding.go) | `Future work` | `Scheduled` | `Done` |
| 4.05 | Unbonding operations (undelegations, redelegations, validator unbondings) should eventually complete even if one of the clients expire <br> - expected outcome: the pending VSC packets eventually timeout, which leads to the consumer chain removal | `Scheduled` | `NA` | `Done` [TestUndelegationVscTimeout](../tests/e2e/unbonding.go) | `Future work` | `Scheduled` | `NA` |
| 4.06 | A validator cannot get slashed more than once for double signing, regardless of how many times it double signs on different chains (consumers or provider) | `Scheduled` | `NA` |`Done` <br> [TestHandleSlashPacketErrors](../tests/e2e/slashing.go) | `Done` | `Scheduled` | `NA` |
| 4.07 | A validator cannot get slashed multiple times for downtime on the same consumer chain without requesting to `Unjail` itself on the provider chain in between | `Scheduled` | `NA` | `Partial coverage` <br> [TestSendSlashPacket](../tests/e2e/slashing.go) | `Partial coverage` | `Scheduled` | `NA` |
| 4.08 | A validator can be slashed multiple times for downtime on different chains | `Scheduled` | `NA` | `Future work` | `NA` | `Scheduled` | `NA` |
| 4.09 | The provider chain can easily be restarted with IS enabled <br> - `ExportGenesis` & `InitGenesis` <br> - requires https://github.com/informalsystems/hermes/issues/1152| `Scheduled` | `Done` <br> [TestInitAndExportGenesis](../x/ccv/provider/keeper/genesis_test.go#L20) | `Future work` | `Future work` | `Scheduled` | `NA` |
| 4.10 | The provider chain can graciously handle a CCV packet timing out (without shuting down) <br> - expected outcome: consumer chain shuts down and its state in provider CCV module is removed | `Scheduled` | `Scheduled` | `NA` | `Future work` | `Scheduled` | `NA` |
Expand Down Expand Up @@ -138,7 +138,7 @@ In addition, the implementation MUST guarantee the following [system properties]

| ID | Concern re. _Consumer Rewards Distribution_ | Code Review | Unit Testing | E2e Testing | Diff. testing | Testnet | Protocol audit |
| -- | ------------------------------------------- | ----------- | ------------ | ----------- | ------------- | ------- | -------------- |
| 9.01 | Validators on the provider chain receive rewards for participating in IS | `Scheduled` | `NA` | `Done` [TestRewardsDistribution](../tests/e2e/distribution_test.go#17) | `NA` | `Scheduled` | `NA` |
| 9.01 | Validators on the provider chain receive rewards for participating in IS | `Scheduled` | `NA` | `Done` [TestRewardsDistribution](../tests/e2e/distribution.go) | `NA` | `Scheduled` | `NA` |
| 9.02 | The rewards sent to the provider chain are escrowed on the consumer chains (no double spend) | `Scheduled` | `NA` | `Scheduled` | `NA` | `Scheduled` | `NA` |

---
Expand All @@ -157,7 +157,7 @@ The main concern addressed in this section is the correctness of the consumer ch
| 10.02 | A chain has the ability to restart as a consumer chain with no more than 24 hours downtime | `Scheduled` | `NA` | `NA` | `NA` | `Scheduled` | `NA` |
| 10.03 | A consumer chain has the ability to restart as a normal chain after shutting down, either controlled (via `ConsumerRemovalProposal`) or due to timing out | `Scheduled` | `NA` | `NA` | `NA` | `Scheduled` | `NA` |
| 10.04 | A consumer chain has the ability to restart as a consumer chain with the same `chainId` after shutting down, either controlled (via `ConsumerRemovalProposal`) or due to timing out | `Scheduled` | `NA` | `Scheduled` | `NA` | `Scheduled` | `NA` |
| 10.05 | Governance on `gov-cc` | `Scheduled` | `NA` | `Partial Coverage` [TestDemocracyGovernanceWhitelisting](../tests/e2e/distribution_test.go#133) | `Scheduled` | `Scheduled` | `NA` |
| 10.05 | Governance on `gov-cc` | `Scheduled` | `NA` | `Partial Coverage` [TestDemocracyGovernanceWhitelisting](../tests/e2e/distribution.go) | `Scheduled` | `Scheduled` | `NA` |
| 10.06 | CosmWasm on `wasm-cc` | `Scheduled` | `NA` | `Scheduled` | `NA` | `Scheduled` | `NA` |
| TBA ...

Expand Down
Loading