In particular utilizing GetCommitteeMembersState to check the state change after submission of UpdateCommitee proposal and necessary votes votes:
Authorizing a Hot credential for unknown Cold key that is also not part of the submitted UpdateCommittee action: will have status of ToBeRemoved for that committee member
UpdateCommitee action that removes a committee member: will have status of ToBeRemoved for that committee member
UpdateCommitee action that adds a committee members will have status of ToBeEnacted for that committee member
Committee member that will get expired (but not removed): will have status of ToBeExpired
Current Committee member that is not part of the UpdateCommitee action and is not suppose to expire: will have a status of NoChangeExpected for that committee member
Here is a good property that we should test for the EPOCH rule:
DRep and StakeCredential registration Maps should not change in their domain on the epoch boundary (i.e. no keys have been added or deleted, since that can only be done with a cerificate)
This ticket defines some properties that can be testes with property testing: https://github.com/input-output-hk/cardano-ledger/issues/3881
In particular utilizing
GetCommitteeMembersState
to check the state change after submission of UpdateCommitee proposal and necessary votes votes:ToBeRemoved
for that committee memberToBeRemoved
for that committee memberToBeEnacted
for that committee memberToBeExpired
NoChangeExpected
for that committee member