Permissions.sol
The Permissions
contract manages the whitelisting and jailing of Gateways and Providers within the system. It ensures secure access control through role-based mechanisms and integrates with other components for entity registration and epoch management.
Key Features
Whitelisting:
Enables adding or removing Gateways and Providers to/from the whitelist.
Entities must be registered before they can be whitelisted.
Jailing:
Allows Gateways or Providers to be temporarily jailed for a specified number of epochs.
Supports unjailing entities manually.
Access Control:
Role-based access for admins and whitelisters to manage entities securely.
Batch Processing:
Supports batch operations with a defined maximum batch size to optimize gas usage.
Roles
Access Control
The contract employs AccessControl
for secure operations.
DEFAULT_ADMIN_ROLE
:Grants full administrative privileges for managing the contract.
WHITELISTER_ROLE
:Allows managing the whitelist and jailing entities.
State Variables
router
:Reference to the
Router
contract for system-wide integrations.
PROVIDER
/GATEWAY
:Constants representing the entity types:
PROVIDER = 0
GATEWAY = 1
providerJailedTilEpoch
/gatewayJailedTilEpoch
:Mappings of entity IDs to the epoch until which they are jailed.
providerWhitelist
/gatewayWhitelist
:Mappings of entity IDs to their whitelist status.
MAX_BATCH_SIZE
:The maximum number of entities that can be processed in a single batch operation (default: 100).
Key Functions
Constructor
constructor(IRouter _router)
constructor(IRouter _router)
Initializes the contract and assigns the deployer the DEFAULT_ADMIN_ROLE
.
Parameters:
_router
: Address of theRouter
contract.
Whitelisting Functions
whitelisted(bytes calldata _id, uint8 _type) -> bool
whitelisted(bytes calldata _id, uint8 _type) -> bool
Checks if a Gateway or Provider is whitelisted and not jailed.
Parameters:
_id
: The ID of the entity._type
: The entity type (0
for Provider,1
for Gateway).
Returns:
true
if the entity is whitelisted and not jailed, otherwisefalse
.
whitelist(bytes[] calldata _ids, uint8 _type)
whitelist(bytes[] calldata _ids, uint8 _type)
Adds a batch of IDs to the whitelist.
Parameters:
_ids
: Array of IDs to whitelist._type
: The entity type (0
for Provider,1
for Gateway).
Access Control:
Callable by accounts with
DEFAULT_ADMIN_ROLE
orWHITELISTER_ROLE
.
removeFromWhitelist(bytes[] calldata _ids, uint8 _type)
removeFromWhitelist(bytes[] calldata _ids, uint8 _type)
Removes a batch of IDs from the whitelist.
Parameters:
_ids
: Array of IDs to remove._type
: The entity type (0
for Provider,1
for Gateway).
Access Control:
Callable by accounts with
DEFAULT_ADMIN_ROLE
orWHITELISTER_ROLE
.
Jailing Functions
jailForEpochs(bytes calldata _id, uint8 _type, uint256 _numEpochs)
jailForEpochs(bytes calldata _id, uint8 _type, uint256 _numEpochs)
Temporarily jails a Gateway or Provider for a specified number of epochs.
Parameters:
_id
: The ID of the entity._type
: The entity type (0
for Provider,1
for Gateway)._numEpochs
: The number of epochs to jail the entity.
Access Control:
Callable by accounts with
DEFAULT_ADMIN_ROLE
orWHITELISTER_ROLE
.
unjail(bytes calldata _id, uint8 _type)
unjail(bytes calldata _id, uint8 _type)
Manually unjails a Gateway or Provider.
Parameters:
_id
: The ID of the entity._type
: The entity type (0
for Provider,1
for Gateway).
Access Control:
Callable by accounts with
DEFAULT_ADMIN_ROLE
orWHITELISTER_ROLE
.
Events
Whitelisted(bytes id, uint8 indexed type)
:Emitted when an entity is added to the whitelist.
RemovedFromWhitelist(bytes id, uint8 indexed type)
:Emitted when an entity is removed from the whitelist.
Jailed(bytes id, uint8 indexed type, uint256 numEpochs, uint256 jailUntil)
:Emitted when an entity is jailed.
Unjailed(bytes id, uint8 indexed type)
:Emitted when an entity is unjailed.
Last updated