Skip to main content

PermissionlessGate

PermissionlessGate.sol is a supplementary contract that enables permissionless Node Operator creation in CSModule.sol, serving as an entry point.

Upgradability

The contract is immutable.

State Variables

RECOVERER_ROLE

bytes32 public constant RECOVERER_ROLE = keccak256("RECOVERER_ROLE");

CURVE_ID

Curve ID is the default bond curve ID from the accounting contract This immutable variable is kept here for consistency with the other gates

uint256 public immutable CURVE_ID;

MODULE

Address of the Staking Module

ICSModule public immutable MODULE;

Functions

addNodeOperatorETH

Add a new Node Operator using ETH as a bond. At least one deposit data and corresponding bond should be provided

function addNodeOperatorETH(
uint256 keysCount,
bytes calldata publicKeys,
bytes calldata signatures,
NodeOperatorManagementProperties calldata managementProperties,
address referrer
) external payable returns (uint256 nodeOperatorId);

Parameters

NameTypeDescription
keysCountuint256Signing keys count
publicKeysbytesPublic keys to submit
signaturesbytesSignatures of (deposit_message_root, domain) tuples https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#signingdata
managementPropertiesNodeOperatorManagementPropertiesOptional. Management properties to be used for the Node Operator. managerAddress: Used as managerAddress for the Node Operator. If not passed msg.sender will be used. rewardAddress: Used as rewardAddress for the Node Operator. If not passed msg.sender will be used. extendedManagerPermissions: Flag indicating that managerAddress will be able to change rewardAddress. If set to true resetNodeOperatorManagerAddress method will be disabled
referreraddressOptional. Referrer address. Should be passed when Node Operator is created using partners integration

Returns

NameTypeDescription
nodeOperatorIduint256Id of the created Node Operator

addNodeOperatorStETH

Add a new Node Operator using stETH as a bond. At least one deposit data and corresponding bond should be provided

function addNodeOperatorStETH(
uint256 keysCount,
bytes calldata publicKeys,
bytes calldata signatures,
NodeOperatorManagementProperties calldata managementProperties,
ICSAccounting.PermitInput calldata permit,
address referrer
) external returns (uint256 nodeOperatorId);

Parameters

NameTypeDescription
keysCountuint256Signing keys count
publicKeysbytesPublic keys to submit
signaturesbytesSignatures of (deposit_message_root, domain) tuples https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#signingdata
managementPropertiesNodeOperatorManagementPropertiesOptional. Management properties to be used for the Node Operator. managerAddress: Used as managerAddress for the Node Operator. If not passed msg.sender will be used. rewardAddress: Used as rewardAddress for the Node Operator. If not passed msg.sender will be used. extendedManagerPermissions: Flag indicating that managerAddress will be able to change rewardAddress. If set to true resetNodeOperatorManagerAddress method will be disabled
permitICSAccounting.PermitInputOptional. Permit to use stETH as bond
referreraddressOptional. Referrer address. Should be passed when Node Operator is created using partners integration

Returns

NameTypeDescription
nodeOperatorIduint256Id of the created Node Operator

addNodeOperatorWstETH

Add a new Node Operator using wstETH as a bond. At least one deposit data and corresponding bond should be provided

function addNodeOperatorWstETH(
uint256 keysCount,
bytes calldata publicKeys,
bytes calldata signatures,
NodeOperatorManagementProperties calldata managementProperties,
ICSAccounting.PermitInput calldata permit,
address referrer
) external returns (uint256 nodeOperatorId);

Parameters

NameTypeDescription
keysCountuint256Signing keys count
publicKeysbytesPublic keys to submit
signaturesbytesSignatures of (deposit_message_root, domain) tuples https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#signingdata
managementPropertiesNodeOperatorManagementPropertiesOptional. Management properties to be used for the Node Operator. managerAddress: Used as managerAddress for the Node Operator. If not passed msg.sender will be used. rewardAddress: Used as rewardAddress for the Node Operator. If not passed msg.sender will be used. extendedManagerPermissions: Flag indicating that managerAddress will be able to change rewardAddress. If set to true resetNodeOperatorManagerAddress method will be disabled
permitICSAccounting.PermitInputOptional. Permit to use wstETH as bond
referreraddressOptional. Referrer address. Should be passed when Node Operator is created using partners integration

Returns

NameTypeDescription
nodeOperatorIduint256Id of the created Node Operator