- Create an increment request.
- Check the status of the request.
- Sign and broadcast the transaction.
The flow is supported for both Ethereum and SSV validators via the same endpoint.
1. Create increment request
The flow applies only to active validators using the 0x02 type of withdrawal credentials.
-
Prepare
idthat is an arbitrary UUID. Generate it in one of the following ways: -
Send a POST request to /api/v1/eth/staking/direct/increment-request/create.
Example request:
id— arbitrary UUID. You can later use that UUID to check the status of the top-up operation.pubkeys— list of validators’ public keys.amountPerValidator— amount of tokens to stake in Gwei per validator.withdrawalAddress— withdrawal address for the validators.
2. Check request status
Check the status of the top-up operation by sending a GET request to /api/v1/eth/staking/direct/increment-request/status/{id}. Example request:-
id— arbitrary UUID of the top-up request. -
status— current status of the top-up request:init— request is created.processing— request is in progress.ready— backend has the deposit data for the top-up request.cancel— something went wrong, and the deposit data was not created.
-
withdrawalAddress— withdrawal address for the validators. -
pubkeys— list of validators’ public keys. -
amountPerValidator— amount of tokens to stake in Gwei per validator. -
depositDatafor each validator:pubkey— validator public key.signature— validator signature.depositDataRoot— SHA-256 hash of the SSZ-encodeddepositDataobject. Used as a protection against malformed input.withdrawalCredentials— withdrawal address credentials, passed in the expected format by the Ethereum deposit smart contract.amount— amount of ETH, denominated in Gwei, that is being deposited.depositMessageRoot— cryptographic hash of the Merkle tree’s root, ensuring the integrity and authenticity of the deposit data.forkVersion— version of the network fork that the deposit is intended for. It helps in aligning the deposit with a specific version of the protocol.eth2NetworkName— name of the Ethereum 2.0 network where the deposit is made.depositCliVersion— version of the deposit command-line interface (CLI) tool that was used to generate the deposit data.
-
incrementTxs— list of serialized transaction payloads to increment the validator stake.serializeTx— serialized unsigned transaction.to— recipient address for this transaction.gasLimit— maximum limit for this block.data— transaction data.value— amount this transaction is sending in Wei.chainId— chain ID this transaction is authorized on, as specified by EIP-155.type— EIP-2718 type of this transaction envelope.maxFeePerGas— maximum price per unit of gas this transaction will pay for the combined EIP-1559 block’s base fee and this transaction’s priority fee in Wei.maxPriorityFeePerGas— price per unit of gas in Wei, which is added to the EIP-1559 block’s base fee. This added fee is used to incentivize miners to prioritize this transaction.
-
createdAt— timestamp of the transaction in the ISO 8601 format.
3. Sign and broadcast transaction
PrepareserializeTx from the previous step to sign and broadcast the signed transaction to the Ethereum network. After the transaction is processed in the chain’s queue, the validator’s stake will be topped up.