Getting started
To start staking on the SSV network using our SSV On-Chain, there are a few essential prerequisites to ensure a smooth and efficient setup:
- Minimum Stake Requirement: You will need a minimum of 32 ETH for each staking validator you wish to run.
- API Key Request: Get an authentication token to start using DVT Staking API.
We created an API endpoint to return the transaction data required to interact with our proxy smart contract. We also provide convenient request examples using cURL to guide you through the process. While the use of the API method is not mandatory for the smart contract interaction, we recommend it for a faster integration.
Staking via SSV Proxy Smart Contract and API
-
Create a serialized transaction for depositing the stake amount to the SSV proxy smart contract by sending a GET request to /api/v1/eth/staking/ssv/p2p/deposit.
Example request:
curl --request POST \ --url https://api.p2p.org/api/v1/eth/staking/ssv/p2p/deposit \ --header 'accept: application/json' \ --header 'authorization: Bearer <token>' \ --header 'content-type: application/json' \ --data ' { "amount": 32, "withdrawalAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17", "feeRecipientAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17" } '
amount
— amount of ETH to deposit. The value must be in multiples of 32 ETH.withdrawalAddress
— withdrawal address for the validators.feeRecipientAddress
— Eth1 address that receives the fee recipient rewards.
Example response:
{ "error": null, "result": { "serializeTx": "0x02f902cf0580021e830186a094681a1b3441c6bfb12f91651efd9f02c83c0702938901bc16d674ec800000b902a44f498c730000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030b4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200100000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000060a307b2e1661bcc38d482a69603713baf332ad36adf837392e9f20a96b77a03ca415a46261fc62b8f5d4aa69a0d70e2cf0d23e3396bd387cfde18d392a2c7ba822d3f8a60d075366625dcb3c88cd59ebc8f7ab1fc312c6b8b625a57bf7e1b6e6f000000000000000000000000000000000000000000000000000000000000000178ae581ccc8bdf1fde00cff35b2278e1c10a9ed2fc18632373dac118a03cfacdc0", "to": "0x681a1b3441c6BFb12f91651EFD9F02c83c070293", "gasLimit": "0.0000000000001", "data": "0x4f498c730000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030b4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200100000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000060a307b2e1661bcc38d482a69603713baf332ad36adf837392e9f20a96b77a03ca415a46261fc62b8f5d4aa69a0d70e2cf0d23e3396bd387cfde18d392a2c7ba822d3f8a60d075366625dcb3c88cd59ebc8f7ab1fc312c6b8b625a57bf7e1b6e6f000000000000000000000000000000000000000000000000000000000000000178ae581ccc8bdf1fde00cff35b2278e1c10a9ed2fc18632373dac118a03cfacd", "value": "32.0", "chainId": 1, "type": 2, "maxFeePerGas": "0.00000000000000003", "maxPriorityFeePerGas": "2" } }
serializeTx
— serialized unsigned transaction.to
— recipient address for this transaction.gasLimit
— maximum gas 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.
-
Use
serializeTx
from the previous step to sign and send the signed transaction to the Ethereum network.By broadcasting this transaction, you are depositing the requested stake amount in the Ethereum deposit smart contract by using the SSV proxy smart contract. Also, the smart contract will register the newly created validators on the SSV protocol.
After your deposit is successful, your validator will enter the activation queue and soon start performing the validator tasks. You can check the status of your validator on the SSV network explorer.
-
Check the list of validators created via your authentication token and their status by sending a GET request to /api/v1/eth/staking/ssv/p2p/deposits.
Example request:
curl --request GET \ --url https://api.p2p.org/api/v1/eth/staking/ssv/p2p/deposits?limit=50&offset=0&type=withdrawalAddress&withdrawalAddress=0xe3bb3cc1fd44fced699e5eae6fbbc643a0fbcca0 \ --header 'accept: application/json' \ --header 'authorization: Bearer <token>'
limit
— number of resources that a single response page contains.offset
— number of resources to exclude from a response.type
— type of filter:withdrawalAddress
withdrawalAddress
— withdrawal address for the validators.
Example response:
{ "error": null, "result": { "list": [ { "deposit": { "depositId": "", "transactionHash": "", "senderAddress": "", "withdrawalAddress": "0xe3bb3cc1fd44fced699e5eae6fbbc643a0fbcca0", "feeRecipientAddress": "", "totalAmount": "", "unprocessedAmount": "18273" }, "validator": { "pubkey": "0xad9049587a26e8db61f6b2443798519a7220bb3dde4b6ec8f4d3ab9c06f48952377ae6869b67e4b9d1549f334caaf5e9", "status": "unknown", "amount": "1991" } }, { "deposit": { "depositId": "", "transactionHash": "", "senderAddress": "", "withdrawalAddress": "0xe3bb3cc1fd44fced699e5eae6fbbc643a0fbcca0", "feeRecipientAddress": "", "totalAmount": "", "unprocessedAmount": "18273" }, "validator": { "pubkey": "0xcd5ff4fbeafeb6bcdc5dde3ba41d88638eb7b14e52ee3beaf0d32ae3abb303ff8814258ecaa49c5ed0bd7dd48bb0ca502ac89c0bcd36dc7b01a00b8db1e4adec", "status": "unknown", "amount": "2073" } } ], "limit": 50, "offset": 0, "totalCount": 17, "totalAmount": "18273", "unprocessedAmount": "18273" } }
deposit
:depositId
— unique identifier for the deposit initiated by the user.transactionHash
— hash of the transaction associated with the user's validator deposit.senderAddress
— address used to interact with the SSV proxy smart contract and transfer the requested stake amount.withdrawalAddress
— withdrawal address for the validators.feeRecipientAddress
— the address that receives the fee recipient rewards.totalAmount
— total amount currently staked for the specified deposit ID.unprocessedAmount
— amount associated with validators that are not yet activated for the specified deposit ID
validator
:pubkey
— validator public key.status
— current status of the validatoramount
— amount of ETH, denominated in gwei, that is being deposited.
limit
— number of resources that a single response page contains.offset
— number of resources to exclude from a response.totalCount
— total number of validators relevant to the current request, based on applied filters.totalAmount
— total staked amount for the current request.unprocessedAmount
— cumulative staked amount across all validators that are not yet activated for the current request.
What's Next?
- SSV On-Chain API reference.
Updated about 1 month ago