We are currently introducing ValidatorOptInHub as the next version of the Opt-In Router.
The key difference is in the return types of the optedIn functions. The Hub allows the support of multiple registries dynamically, but the Router remains backwards compatible (via one of its registries pointing to the Hub which checks all registries).
areValidatorsOptedIn(bytes[] valBLSPubKeys) → OptInStatus[]
Each OptInStatus struct has 3 fixed fields:
isVanillaOptedIn: boolisAvsOptedIn: boolisMiddlewareOptedIn: boolisValidatorOptedIn(bytes valBLSPubKey) → OptInStatus
Instead of 3 fixed fields, we now have a dynamic list of supported registries. As a result, the OptInStatus struct is no longer used - a boolean list is used instead. Two additional functions have also been included to simply return whether a single validator or multiple validators are opted in anywhere.
isValidatorOptedIn(bytes valPubKey) returns bool
→ returns true if validator is opted in within any of the supported registries
isValidatorOptedInList(bytes valPubKey) returns bool[]
→ returns a single boolean list, with each boolean in the list representing the validator’s registration status in the associated registry.
areValidatorsOptedIn(bytes[] valBLSPubKeys) returns bool[]
→ Returns a single boolean for each validator, with each boolean indicating if the validator is opted-in to any of the supported registries.
areValidatorsOptedInList(bytes[] valBLSPubKeys) returns bool[][]
→ Returns a boolean list for each validator, with each list representing the opt-in statuses of the validator in each of the supported registries.