Git Source
Methods
DEFAULT_ADMIN_ROLE
function DEFAULT_ADMIN_ROLE() external view returns (bytes32)
Returns
Name | Type | Description |
---|
| bytes32 | |
FACTORY
function FACTORY() external view returns (address)
Get the factory’s address.
Returns
Name | Type | Description |
---|
| address | address of the factory |
HOOK_GAS_LIMIT
function HOOK_GAS_LIMIT() external view returns (uint256)
Get a gas limit for the hook.
Returns
Name | Type | Description |
---|
| uint256 | value of the hook gas limit |
HOOK_RESERVE
function HOOK_RESERVE() external view returns (uint256)
Get a reserve gas between the gas limit check and the hook’s execution.
Returns
Name | Type | Description |
---|
| uint256 | value of the reserve gas |
HOOK_SET_ROLE
function HOOK_SET_ROLE() external view returns (bytes32)
Get a hook setter’s role.
Returns
Name | Type | Description |
---|
| bytes32 | identifier of the hook setter role |
NETWORK_LIMIT_SET_ROLE
function NETWORK_LIMIT_SET_ROLE() external view returns (bytes32)
Get a subnetwork limit setter’s role.
Returns
Name | Type | Description |
---|
| bytes32 | identifier of the subnetwork limit setter role |
NETWORK_REGISTRY
function NETWORK_REGISTRY() external view returns (address)
Get the network registry’s address.
Returns
Name | Type | Description |
---|
| address | address of the network registry |
OPERATOR_NETWORK_OPT_IN_SERVICE
function OPERATOR_NETWORK_OPT_IN_SERVICE() external view returns (address)
Get the operator-network opt-in service’s address.
Returns
Name | Type | Description |
---|
| address | address of the operator-network opt-in service |
OPERATOR_NETWORK_SHARES_SET_ROLE
function OPERATOR_NETWORK_SHARES_SET_ROLE() external view returns (bytes32)
Get an operator-subnetwork shares setter’s role.
Returns
Name | Type | Description |
---|
| bytes32 | identifier of the operator-subnetwork shares setter role |
OPERATOR_VAULT_OPT_IN_SERVICE
function OPERATOR_VAULT_OPT_IN_SERVICE() external view returns (address)
Get the operator-vault opt-in service’s address.
Returns
Name | Type | Description |
---|
| address | address of the operator-vault opt-in service |
TYPE
function TYPE() external view returns (uint64)
Get the entity’s type.
Returns
Name | Type | Description |
---|
| uint64 | type of the entity |
VAULT_FACTORY
function VAULT_FACTORY() external view returns (address)
Get the vault factory’s address.
Returns
Name | Type | Description |
---|
| address | address of the vault factory |
VERSION
function VERSION() external view returns (uint64)
Get a version of the delegator (different versions mean different interfaces).
Must return 1 for this one.
Returns
Name | Type | Description |
---|
| uint64 | version of the delegator |
getRoleAdmin
function getRoleAdmin(bytes32 role) external view returns (bytes32)
Returns the admin role that controls role
. See grantRole
and revokeRole
. To change a role’s admin, use \_setRoleAdmin
.
Parameters
Name | Type | Description |
---|
role | bytes32 | |
Returns
Name | Type | Description |
---|
| bytes32 | |
grantRole
function grantRole(bytes32 role, address account) external nonpayable
Grants role
to account
. If account
had not been already granted role
, emits a RoleGranted
event. Requirements: - the caller must have role
’s admin role. May emit a RoleGranted
event.
Parameters
Name | Type | Description |
---|
role | bytes32 | |
account | address | |
hasRole
function hasRole(bytes32 role, address account) external view returns (bool)
Returns true
if account
has been granted role
.
Parameters
Name | Type | Description |
---|
role | bytes32 | |
account | address | |
Returns
hook
function hook() external view returns (address)
Get the hook’s address.
The hook can have arbitrary logic under certain functions, however, it doesn’t affect the stake guarantees.
Returns
Name | Type | Description |
---|
| address | address of the hook |
maxNetworkLimit
function maxNetworkLimit(bytes32 subnetwork) external view returns (uint256 value)
Get a particular subnetwork’s maximum limit (meaning the subnetwork is not ready to get more as a stake).
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
Returns
Name | Type | Description |
---|
value | uint256 | maximum limit of the subnetwork |
networkLimit
function networkLimit(bytes32 subnetwork) external view returns (uint256)
Get a subnetwork’s limit (how much stake the vault curator is ready to give to the subnetwork).
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
Returns
Name | Type | Description |
---|
| uint256 | limit of the subnetwork |
networkLimitAt
function networkLimitAt(bytes32 subnetwork, uint48 timestamp, bytes hint) external view returns (uint256)
Get a subnetwork’s limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
timestamp | uint48 | time point to get the subnetwork limit at |
hint | bytes | hint for checkpoint index |
Returns
Name | Type | Description |
---|
| uint256 | limit of the subnetwork at the given timestamp |
onSlash
function onSlash(bytes32 subnetwork, address operator, uint256 amount, uint48 captureTimestamp, bytes data) external nonpayable
Called when a slash happens.
Only the vault’s slasher can call this function.
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
operator | address | address of the operator |
amount | uint256 | amount of the collateral slashed |
captureTimestamp | uint48 | time point when the stake was captured |
data | bytes | some additional data |
operatorNetworkShares
function operatorNetworkShares(bytes32 subnetwork, address operator) external view returns (uint256)
Get an operator’s shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators’ shares, of the subnetwork’s stake the vault curator is ready to give to the operator).
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
operator | address | address of the operator |
Returns
Name | Type | Description |
---|
| uint256 | shares of the operator for the subnetwork |
operatorNetworkSharesAt
function operatorNetworkSharesAt(bytes32 subnetwork, address operator, uint48 timestamp, bytes hint) external view returns (uint256)
Get an operator’s shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators’ shares, of the subnetwork’s stake the vault curator is ready to give to the operator).
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
operator | address | address of the operator |
timestamp | uint48 | time point to get the operator’s shares at |
hint | bytes | hint for checkpoint index |
Returns
Name | Type | Description |
---|
| uint256 | shares of the operator for the subnetwork at the given timestamp |
renounceRole
function renounceRole(bytes32 role, address callerConfirmation) external nonpayable
Revokes role
from the calling account. Roles are often managed via grantRole
and revokeRole
: this function’s purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked role
, emits a RoleRevoked
event. Requirements: - the caller must be callerConfirmation
. May emit a RoleRevoked
event.
Parameters
Name | Type | Description |
---|
role | bytes32 | |
callerConfirmation | address | |
revokeRole
function revokeRole(bytes32 role, address account) external nonpayable
Revokes role
from account
. If account
had been granted role
, emits a RoleRevoked
event. Requirements: - the caller must have role
’s admin role. May emit a RoleRevoked
event.
Parameters
Name | Type | Description |
---|
role | bytes32 | |
account | address | |
setHook
function setHook(address hook) external nonpayable
Set a new hook.
Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn’t affect the stake guarantees.
Parameters
Name | Type | Description |
---|
hook | address | address of the hook |
setMaxNetworkLimit
function setMaxNetworkLimit(uint96 identifier, uint256 amount) external nonpayable
Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork
Only a network can call this function.
Parameters
Name | Type | Description |
---|
identifier | uint96 | identifier of the subnetwork |
amount | uint256 | new maximum subnetwork’s limit |
setNetworkLimit
function setNetworkLimit(bytes32 subnetwork, uint256 amount) external nonpayable
Set a subnetwork’s limit (how much stake the vault curator is ready to give to the subnetwork).
Only a NETWORK_LIMIT_SET_ROLE holder can call this function.
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
amount | uint256 | new limit of the subnetwork |
setOperatorNetworkShares
function setOperatorNetworkShares(bytes32 subnetwork, address operator, uint256 shares) external nonpayable
Set an operator’s shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators’ shares, of the subnetwork’s stake the vault curator is ready to give to the operator).
Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
operator | address | address of the operator |
shares | uint256 | new shares of the operator for the subnetwork |
stake
function stake(bytes32 subnetwork, address operator) external view returns (uint256)
Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).
Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
operator | address | address of the operator |
Returns
Name | Type | Description |
---|
| uint256 | slashable stake until the end of the next epoch |
stakeAt
function stakeAt(bytes32 subnetwork, address operator, uint48 timestamp, bytes hints) external view returns (uint256)
Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).
Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
operator | address | address of the operator |
timestamp | uint48 | time point to capture the stake at |
hints | bytes | hints for the checkpoints’ indexes |
Returns
Name | Type | Description |
---|
| uint256 | slashable stake at the given timestamp until the end of the consequent epoch |
staticDelegateCall
function staticDelegateCall(address target, bytes data) external nonpayable
Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).
It allows to use this contract’s storage on-chain.
Parameters
Name | Type | Description |
---|
target | address | address of the contract to make a delegatecall to |
data | bytes | data to make a delegatecall with |
supportsInterface
function supportsInterface(bytes4 interfaceId) external view returns (bool)
See IERC165-supportsInterface
.
Parameters
Name | Type | Description |
---|
interfaceId | bytes4 | |
Returns
totalOperatorNetworkShares
function totalOperatorNetworkShares(bytes32 subnetwork) external view returns (uint256)
Get a sum of operators’ shares for a subnetwork.
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
Returns
Name | Type | Description |
---|
| uint256 | total shares of the operators for the subnetwork |
totalOperatorNetworkSharesAt
function totalOperatorNetworkSharesAt(bytes32 subnetwork, uint48 timestamp, bytes hint) external view returns (uint256)
Get a sum of operators’ shares for a subnetwork at a given timestamp using a hint.
Parameters
Name | Type | Description |
---|
subnetwork | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
timestamp | uint48 | time point to get the total operators’ shares at |
hint | bytes | hint for checkpoint index |
Returns
Name | Type | Description |
---|
| uint256 | total shares of the operators for the subnetwork at the given timestamp |
vault
function vault() external view returns (address)
Get the vault’s address.
Returns
Name | Type | Description |
---|
| address | address of the vault |
Events
Initialized
event Initialized(uint64 version)
Triggered when the contract has been initialized or reinitialized.
Parameters
Name | Type | Description |
---|
version | uint64 | |
OnSlash
event OnSlash(bytes32 indexed subnetwork, address indexed operator, uint256 amount, uint48 captureTimestamp)
Emitted when a slash happens.
Parameters
Name | Type | Description |
---|
subnetwork indexed | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
operator indexed | address | address of the operator |
amount | uint256 | amount of the collateral to be slashed |
captureTimestamp | uint48 | time point when the stake was captured |
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
Emitted when newAdminRole
is set as role
’s admin role, replacing previousAdminRole
DEFAULT_ADMIN_ROLE
is the starting admin for all roles, despite RoleAdminChanged
not being emitted signaling this.
Parameters
Name | Type | Description |
---|
role indexed | bytes32 | |
previousAdminRole indexed | bytes32 | |
newAdminRole indexed | bytes32 | |
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
Emitted when account
is granted role
. sender
is the account that originated the contract call, an admin role bearer except when using AccessControl-\_setupRole
.
Parameters
Name | Type | Description |
---|
role indexed | bytes32 | |
account indexed | address | |
sender indexed | address | |
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Emitted when account
is revoked role
. sender
is the account that originated the contract call: - if using revokeRole
, it is the admin role bearer - if using renounceRole
, it is the role bearer (i.e. account
)
Parameters
Name | Type | Description |
---|
role indexed | bytes32 | |
account indexed | address | |
sender indexed | address | |
SetHook
event SetHook(address indexed hook)
Emitted when a hook is set.
Parameters
Name | Type | Description |
---|
hook indexed | address | address of the hook |
SetMaxNetworkLimit
event SetMaxNetworkLimit(bytes32 indexed subnetwork, uint256 amount)
Emitted when a subnetwork’s maximum limit is set.
Parameters
Name | Type | Description |
---|
subnetwork indexed | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
amount | uint256 | new maximum subnetwork’s limit (how much stake the subnetwork is ready to get) |
SetNetworkLimit
event SetNetworkLimit(bytes32 indexed subnetwork, uint256 amount)
Emitted when a subnetwork’s limit is set.
Parameters
Name | Type | Description |
---|
subnetwork indexed | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
amount | uint256 | new subnetwork’s limit (how much stake the vault curator is ready to give to the subnetwork) |
SetOperatorNetworkShares
event SetOperatorNetworkShares(bytes32 indexed subnetwork, address indexed operator, uint256 shares)
Emitted when an operator’s shares inside a subnetwork are set.
Parameters
Name | Type | Description |
---|
subnetwork indexed | bytes32 | full identifier of the subnetwork (address of the network concatenated with the uint96 identifier) |
operator indexed | address | address of the operator |
shares | uint256 | new operator’s shares inside the subnetwork (what percentage, which is equal to the shares divided by the total operators’ shares, of the subnetwork’s stake the vault curator is ready to give to the operator) |
Structs
BaseParams
struct BaseParams {
address defaultAdminRoleHolder;
address hook;
address hookSetRoleHolder;
}
Base parameters needed for delegators’ deployment.
Parameters
Name | Type | Description |
---|
defaultAdminRoleHolder | address | address of the initial DEFAULT_ADMIN_ROLE holder |
hook | address | address of the hook contract |
hookSetRoleHolder | address | address of the initial HOOK_SET_ROLE holder |
InitParams
struct InitParams {
BaseParams baseParams;
address[] networkLimitSetRoleHolders;
address[] operatorNetworkSharesSetRoleHolders;
}
Initial parameters needed for a full restaking delegator deployment.
Parameters
Name | Type | Description |
---|
baseParams | BaseParams | base parameters for delegators’ deployment |
networkLimitSetRoleHolders | address[] | array of addresses of the initial NETWORK_LIMIT_SET_ROLE holders |
operatorNetworkSharesSetRoleHolders | address[] | array of addresses of the initial OPERATOR_NETWORK_SHARES_SET_ROLE holders |
StakeBaseHints
struct StakeBaseHints {
bytes operatorVaultOptInHint;
bytes operatorNetworkOptInHint;
}
Base hints for a stake.
Parameters
Name | Type | Description |
---|
operatorVaultOptInHint | bytes | hint for the operator-vault opt-in |
operatorNetworkOptInHint | bytes | hint for the operator-network opt-in |
StakeHints
struct StakeHints {
bytes baseHints;
bytes activeStakeHint;
bytes networkLimitHint;
bytes totalOperatorNetworkSharesHint;
bytes operatorNetworkSharesHint;
}
Hints for a stake.
Parameters
Name | Type | Description |
---|
baseHints | bytes | base hints |
activeStakeHint | bytes | hint for the active stake checkpoint |
networkLimitHint | bytes | hint for the subnetwork limit checkpoint |
totalOperatorNetworkSharesHint | bytes | hint for the total operator-subnetwork shares checkpoint |
operatorNetworkSharesHint | bytes | hint for the operator-subnetwork shares checkpoint |