Getting Started
There are several ways to start staking on the Ethereum network using the Staking API:
- Utilize the P2P smart contract.
- Interact directly with the Ethereum Deposit Smart Contract.
Get an authentication token to start using Staking API.
A request example is provided using cURL.
P2P Smart Contract
-
Prepare
id
that is an arbitrary UUID. Generate it in one of the following ways: -
Set up staking SSV nodes through P2P infrastructure by sending a POST request to /api/v1/eth/ssv/request/create. Use https://api-test.p2p.org for testing or https://api.p2p.org for production.
Example request:
curl --request POST \ --url https://api.p2p.org/api/v1/eth/ssv/request/create \ --header 'accept: application/json' \ --header 'authorization: Bearer <token>' \ --header 'content-type: application/json' \ --data ' { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa5", "controllerAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17", "withdrawalAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17", "feeRecipientAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17", "type": "without-encrypt-key", "operationPeriodInDays": 30, "ecdhPublicKey": null } '
id
— arbitrary UUID. You can later use that UUID to check the status of the set-up operation.withdrawalAddress
— withdrawal address for the validators.controllerAddress
— controller address for the validators.feeRecipientAddress
— fee recipient address.type
— type of operation:without-encrypt-key
(available) — the validator's private key is returned encrypted to the client.with-encrypt-key
(not available) — the validator private key is instead maintained by P2P to initiate withdrawals when requested by the client.
operationPeriodInDays
— operation period denoted in days.ecdhPublicKey
— Elliptic Curve Diffie-Hellman (ECDH) public key.
Example response:
{ "error": null, "result": true }
-
Check the node set-up operation status by sending a GET request to /api/v1/eth/ssv/request/status/{id}.
Example request:
curl --request GET \ --url https://api.p2p.org/api/v1/eth/staking/ssv/request/status/3fa85f64-5717-4562-b3fc-2c963f66afa5 \ --header 'accept: application/json' \ --header 'authorization: Bearer <token>'
id
— UUID that was specified in the node set-up request.
Example response:
{ "error": null, "result": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa5", "status": "ready", "type": "without-encrypt-key", "operationPeriodInDays": 30, "liquidationPeriodInDays": 30, "ecdhPublicKey": null, "encryptedShares": [ { "publicKey": "0xb4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb27", "nonce": 1, "sharesData": "0x971aade51840b84fc5b88fee2ef1ed80ce57c2ea9a8fb610d2fdb3a287589a87c421b845e3f1cb4ef5a84eaba6c31d4c159ead3c818758d6fc988a207ea467ff35fb90ab502805569f8ff94042d870ebedc327ea0778476559c95076a99c7cd1b78b94bb2a5098c10b50000c7419476f295e0d1e94b17c1f985c76adfad8b7897bdf34b58388b6b201104616e179e93888016e92ab60b4bf5d844b1a8fd9fdd97e3dba2cfadbe65f1bc3b66aeed8b1be8407a150ae6a028fe72e50d70121e7eab424e02922422ce66fb45c5878eb0d307fae5b5b0637cee897a119563d18082c33fe5ac017d3cfd3a42e2f5f7d8bece98e679000fb7cfd339fbc1470177963d5cd73b6b4001e77f3dcb348cb07797b25fd3b6811e4dfbafe78a4a9d70861fd27001d88253500347ba8ff907bd647b83aa6b5bf727929ee35ce5360a0b7810b355f8e524426e8a6db75e240af29527b398c2d5a926e4867f04483ec61338d7f413cd419d17bc572a0b3ecd98e04426964a8350d1545493e2fe039828f8e74fb48da7f4ee26166b4c2b2b05fa94bf4721a0b6888a8065062ed45bd23f9d3fcbb80ecf3febfb8c90522b20ae724a94f12fb9de80c95dd7b1762d6b15312c3bbde291224fb7b809384404bde5d78bd36801a67154addc466d20c6e6146eda1e263167a96a9d21a1b4fef6d532957cfca20d3311ac2f5bfd6c4601df0eebec49b5a74adce8c1b7fbf82c5333d25c499f72928d3bfe47fa9c54ec9f55c63586758af8a256683952376b4feef745bbc2280e66bb475e48edc4a90eb128bfb3322b30065f3fedf6dcd3180798375eee05abc20433f79e3d6e73948a84057ca7b72b6ba756f257ca1a11f2fa3b130bcf28d9ef80cb946bf11e6008815ee6c100ab1527f13c064bac2b67a8f832ab70c98d39d77940f975c35c8dea26f2e25a5e706da368fa0dd08958ea11904b1b51ca40aab37e581e58a5c60ea1caa08063461b3319e6c8ff21b75f2ff9358ddccf27abea55e7dbad4f474741ff14fe9e63d9c001eec990531a5bc6b2196269cfa0050beced2e2ce55f9dfea48c0c81f3d1a1f4f6548e29de76b085f83f9399c29b89880a15b80e049de2fa9eef3eab7a1a15cd1d6ae2bc8fdc9837f59baf56c11ed7405bda5d2cd2de6fd80c7b7461abfb757c742b3216ef79d8268501cb3531a5fcf9d46b58e828e6aaea4bef8484cc8945912ac611827463d4a3dabe56f608181dfba8ffc7cb1cfdef5a09a9f107652b44d290fc42b0d5e3e16634342af07f205153b0c7d095e0d418f1d0aef8a7e00d41e5af183ceed36d5832169bdd91810b4ad686b85130ec07aeaccfbc26d440684ac34c8005c12b38caa41d18ecd51167afaba0aae2b605cb0cefcae1b4f64ff220167d1f93b73abd75368dd67c3a6ad48448021c66086daf62419d6de350ee3f25aef4784340c0932362da25cff3f1ed7316afce3034d264f1206322c6510aacddb9315f8b532516a52f2483d0a191caa38a10cb40d00494c43ddcc49b54349fd809409a8d6131746ef7adc57a9f7feea9bb3a4142d418e5b1f89ccde686a1627c9a9d5ac9bc6a06685017b15eb549e9bc2e7cf98720b616d8bea14b5b9194280bb1386154be5fd31dc6f64cfe5bbf80fff95e2a82a2a803e579e302c0db931470b78fb32fb1774840002417b86c4ad621e43ec36d2496a7f6b63d470fae3edb863f909ee0e4ce43ca293770a229cbcbd542c9bd123889298c3a6e32c2e5c5f4861afa640a16d5c5089373d3e6ddfdebc223a2d966c3e37d135f3f8805eb3432ff46befac6c41aff89739b1bab6ccee383fb524ff985b5054091fed2d351bff38ec78800200", "ecdhEncryptedPrivateKey": null } ], "validatorsCount": 1, "controllerAddress": "0x9c7d4b4595402ed44167C74f9F7c7720AB5528E0", "withdrawalAddress": "0x9c7d4b4595402ed44167C74f9F7c7720AB5528E0", "feeRecipientAddress": "0x9c7d4b4595402ed44167C74f9F7c7720AB5528E0", "depositData": [ { "pubkey": "0xb632ad4ebec8594ec8f2fbacc6df53dec180f8bae6561d70bf74c19520a35beff99cd92513058da6a22a75b9570ab31d", "signature": "0x836e9eebeb29ed1d4b232fa38649e9902ea7d6f9d19e571c4e76cde4da2bcdbca822c8f29d21379325201735fa93925d1597f0c021a147910c165e60bf3308bc827d5fcd545f1c901e7b3102e28b8ea09d6c162c3ffd57e7398f73e5968e05db", "depositDataRoot": "0x16678e6d91a8c3a8f1cdabc037fa32f1d296e629d1665a57f493eda1e6a6964a", "withdrawalCredentials": "0100000000000000000000005cef11327af4104ba0f8a82fbb8628caee7cb1e3", "amount": "32000000000", "depositMessageRoot": "6a572503239cd1f11998af7901c0947fe36eb8efec080f22598d607d3938c1a8", "forkVersion": "00001020", "eth2NetworkName": "goerli", "depositCliVersion": "2.3.0" } ], "validatorRegistrationTxs": [ { "serializeTx": "0x02f9078605010210830f424094c3cd9a0ae89fff83b71b58b6512d43f8a41f363d80b9076406e8fb9c00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f3111b30000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000030b4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000520971aade51840b84fc5b88fee2ef1ed80ce57c2ea9a8fb610d2fdb3a287589a87c421b845e3f1cb4ef5a84eaba6c31d4c159ead3c818758d6fc988a207ea467ff35fb90ab502805569f8ff94042d870ebedc327ea0778476559c95076a99c7cd1b78b94bb2a5098c10b50000c7419476f295e0d1e94b17c1f985c76adfad8b7897bdf34b58388b6b201104616e179e93888016e92ab60b4bf5d844b1a8fd9fdd97e3dba2cfadbe65f1bc3b66aeed8b1be8407a150ae6a028fe72e50d70121e7eab424e02922422ce66fb45c5878eb0d307fae5b5b0637cee897a119563d18082c33fe5ac017d3cfd3a42e2f5f7d8bece98e679000fb7cfd339fbc1470177963d5cd73b6b4001e77f3dcb348cb07797b25fd3b6811e4dfbafe78a4a9d70861fd27001d88253500347ba8ff907bd647b83aa6b5bf727929ee35ce5360a0b7810b355f8e524426e8a6db75e240af29527b398c2d5a926e4867f04483ec61338d7f413cd419d17bc572a0b3ecd98e04426964a8350d1545493e2fe039828f8e74fb48da7f4ee26166b4c2b2b05fa94bf4721a0b6888a8065062ed45bd23f9d3fcbb80ecf3febfb8c90522b20ae724a94f12fb9de80c95dd7b1762d6b15312c3bbde291224fb7b809384404bde5d78bd36801a67154addc466d20c6e6146eda1e263167a96a9d21a1b4fef6d532957cfca20d3311ac2f5bfd6c4601df0eebec49b5a74adce8c1b7fbf82c5333d25c499f72928d3bfe47fa9c54ec9f55c63586758af8a256683952376b4feef745bbc2280e66bb475e48edc4a90eb128bfb3322b30065f3fedf6dcd3180798375eee05abc20433f79e3d6e73948a84057ca7b72b6ba756f257ca1a11f2fa3b130bcf28d9ef80cb946bf11e6008815ee6c100ab1527f13c064bac2b67a8f832ab70c98d39d77940f975c35c8dea26f2e25a5e706da368fa0dd08958ea11904b1b51ca40aab37e581e58a5c60ea1caa08063461b3319e6c8ff21b75f2ff9358ddccf27abea55e7dbad4f474741ff14fe9e63d9c001eec990531a5bc6b2196269cfa0050beced2e2ce55f9dfea48c0c81f3d1a1f4f6548e29de76b085f83f9399c29b89880a15b80e049de2fa9eef3eab7a1a15cd1d6ae2bc8fdc9837f59baf56c11ed7405bda5d2cd2de6fd80c7b7461abfb757c742b3216ef79d8268501cb3531a5fcf9d46b58e828e6aaea4bef8484cc8945912ac611827463d4a3dabe56f608181dfba8ffc7cb1cfdef5a09a9f107652b44d290fc42b0d5e3e16634342af07f205153b0c7d095e0d418f1d0aef8a7e00d41e5af183ceed36d5832169bdd91810b4ad686b85130ec07aeaccfbc26d440684ac34c8005c12b38caa41d18ecd51167afaba0aae2b605cb0cefcae1b4f64ff220167d1f93b73abd75368dd67c3a6ad48448021c66086daf62419d6de350ee3f25aef4784340c0932362da25cff3f1ed7316afce3034d264f1206322c6510aacddb9315f8b532516a52f2483d0a191caa38a10cb40d00494c43ddcc49b54349fd809409a8d6131746ef7adc57a9f7feea9bb3a4142d418e5b1f89ccde686a1627c9a9d5ac9bc6a06685017b15eb549e9bc2e7cf98720b616d8bea14b5b9194280bb1386154be5fd31dc6f64cfe5bbf80fff95e2a82a2a803e579e302c0db931470b78fb32fb1774840002417b86c4ad621e43ec36d2496a7f6b63d470fae3edb863f909ee0e4ce43ca293770a229cbcbd542c9bd123889298c3a6e32c2e5c5f4861afa640a16d5c5089373d3e6ddfdebc223a2d966c3e37d135f3f8805eb3432ff46befac6c41aff89739b1bab6ccee383fb524ff985b5054091fed2d351bff38ec78800200c0", "to": "0xC3CD9A0aE89Fff83b71b58b6512D43F8a41f363D", "gasLimit": "0.000000000001", "data": "0x06e8fb9c00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f3111b30000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000030b4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000520971aade51840b84fc5b88fee2ef1ed80ce57c2ea9a8fb610d2fdb3a287589a87c421b845e3f1cb4ef5a84eaba6c31d4c159ead3c818758d6fc988a207ea467ff35fb90ab502805569f8ff94042d870ebedc327ea0778476559c95076a99c7cd1b78b94bb2a5098c10b50000c7419476f295e0d1e94b17c1f985c76adfad8b7897bdf34b58388b6b201104616e179e93888016e92ab60b4bf5d844b1a8fd9fdd97e3dba2cfadbe65f1bc3b66aeed8b1be8407a150ae6a028fe72e50d70121e7eab424e02922422ce66fb45c5878eb0d307fae5b5b0637cee897a119563d18082c33fe5ac017d3cfd3a42e2f5f7d8bece98e679000fb7cfd339fbc1470177963d5cd73b6b4001e77f3dcb348cb07797b25fd3b6811e4dfbafe78a4a9d70861fd27001d88253500347ba8ff907bd647b83aa6b5bf727929ee35ce5360a0b7810b355f8e524426e8a6db75e240af29527b398c2d5a926e4867f04483ec61338d7f413cd419d17bc572a0b3ecd98e04426964a8350d1545493e2fe039828f8e74fb48da7f4ee26166b4c2b2b05fa94bf4721a0b6888a8065062ed45bd23f9d3fcbb80ecf3febfb8c90522b20ae724a94f12fb9de80c95dd7b1762d6b15312c3bbde291224fb7b809384404bde5d78bd36801a67154addc466d20c6e6146eda1e263167a96a9d21a1b4fef6d532957cfca20d3311ac2f5bfd6c4601df0eebec49b5a74adce8c1b7fbf82c5333d25c499f72928d3bfe47fa9c54ec9f55c63586758af8a256683952376b4feef745bbc2280e66bb475e48edc4a90eb128bfb3322b30065f3fedf6dcd3180798375eee05abc20433f79e3d6e73948a84057ca7b72b6ba756f257ca1a11f2fa3b130bcf28d9ef80cb946bf11e6008815ee6c100ab1527f13c064bac2b67a8f832ab70c98d39d77940f975c35c8dea26f2e25a5e706da368fa0dd08958ea11904b1b51ca40aab37e581e58a5c60ea1caa08063461b3319e6c8ff21b75f2ff9358ddccf27abea55e7dbad4f474741ff14fe9e63d9c001eec990531a5bc6b2196269cfa0050beced2e2ce55f9dfea48c0c81f3d1a1f4f6548e29de76b085f83f9399c29b89880a15b80e049de2fa9eef3eab7a1a15cd1d6ae2bc8fdc9837f59baf56c11ed7405bda5d2cd2de6fd80c7b7461abfb757c742b3216ef79d8268501cb3531a5fcf9d46b58e828e6aaea4bef8484cc8945912ac611827463d4a3dabe56f608181dfba8ffc7cb1cfdef5a09a9f107652b44d290fc42b0d5e3e16634342af07f205153b0c7d095e0d418f1d0aef8a7e00d41e5af183ceed36d5832169bdd91810b4ad686b85130ec07aeaccfbc26d440684ac34c8005c12b38caa41d18ecd51167afaba0aae2b605cb0cefcae1b4f64ff220167d1f93b73abd75368dd67c3a6ad48448021c66086daf62419d6de350ee3f25aef4784340c0932362da25cff3f1ed7316afce3034d264f1206322c6510aacddb9315f8b532516a52f2483d0a191caa38a10cb40d00494c43ddcc49b54349fd809409a8d6131746ef7adc57a9f7feea9bb3a4142d418e5b1f89ccde686a1627c9a9d5ac9bc6a06685017b15eb549e9bc2e7cf98720b616d8bea14b5b9194280bb1386154be5fd31dc6f64cfe5bbf80fff95e2a82a2a803e579e302c0db931470b78fb32fb1774840002417b86c4ad621e43ec36d2496a7f6b63d470fae3edb863f909ee0e4ce43ca293770a229cbcbd542c9bd123889298c3a6e32c2e5c5f4861afa640a16d5c5089373d3e6ddfdebc223a2d966c3e37d135f3f8805eb3432ff46befac6c41aff89739b1bab6ccee383fb524ff985b5054091fed2d351bff38ec78800200", "value": "0.0", "chainId": 5, "type": 2, "maxFeePerGas": "0.000000000000000016", "maxPriorityFeePerGas": "2" } ], "ssvFeeTxs": [ { "serializeTx": "0x02f901c605800210830186a094c3cd9a0ae89fff83b71b58b6512d43f8a41f363d80b901a4bc26e7e50000000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f3111b30000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000016c7ded605b5c00000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004c0", "to": "0xC3CD9A0aE89Fff83b71b58b6512D43F8a41f363D", "gasLimit": "0.0000000000001", "data": "0xbc26e7e50000000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f3111b30000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000016c7ded605b5c00000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004", "value": "0.0", "chainId": 5, "type": 2, "maxFeePerGas": "0.000000000000000016", "maxPriorityFeePerGas": "2" } ], "feeRecipientTx": { "serializeTx": "0x02f84405800210830186a094c3cd9a0ae89fff83b71b58b6512d43f8a41f363d80a4dbcdc2cc0000000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0c0", "to": "0xC3CD9A0aE89Fff83b71b58b6512D43F8a41f363D", "gasLimit": "0.0000000000001", "data": "0xdbcdc2cc0000000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0", "value": "0.0", "chainId": 5, "type": 2, "maxFeePerGas": "0.000000000000000016", "maxPriorityFeePerGas": "2" }, "approveTx": { "serializeTx": "0x02f86505800210830186a0943a9f01091c446bde031e39ea8354647afef091e780b844095ea7b3000000000000000000000000c3cd9a0ae89fff83b71b58b6512d43f8a41f363dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0", "to": "0x3a9f01091C446bdE031E39ea8354647AFef091E7", "gasLimit": "0.0000000000001", "data": "0x095ea7b3000000000000000000000000c3cd9a0ae89fff83b71b58b6512d43f8a41f363dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "value": "0.0", "chainId": 5, "type": 2, "maxFeePerGas": "0.000000000000000016", "maxPriorityFeePerGas": "2" } } }
-
id
— arbitrary UUID. You can later use that UUID to check the status of the set-up operation. -
status
— operation status. Whenready
, the validator data is ready to be used in the validator registration step -
type
— type of operation:without-encrypt-key
(available) — the validator's private key is returned encrypted to the client.with-encrypt-key
(not available) — the validator private key is instead maintained by P2P to initiate withdrawals when requested by the client.
-
operationPeriodInDays
— operation period denoted in days. -
liquidationPeriodInDays
— liquidation period denoted in days. -
ecdhPublicKey
— Elliptic Curve Diffie-Hellman (ECDH) public key. -
encryptedShares
—publicKey
— validator public key.nonce
— the validator key owner's nonce.sharesData
— the shares (i.e. validator key into a predefined threshold of shares) and the signature, used to prove the validator's owner address, are constructed as sharesData which is used during validator registration through the SSV smart contractecdhEncryptedPrivateKey
— Elliptic Curve Diffie-Hellman (ECDH) private key.
-
validatorsCount
— number of validators. One validator is equal to 32 ETH. -
controllerAddress
— controller address for the validators. -
withdrawalAddress
— withdrawal address for the validators. -
feeRecipientAddress
— fee recipient address. -
depositData
:-
pubkey
— validator public key. -
signature
— validator signature. -
depositDataRoot
— The SHA-256 hash of the SSZ-encoded DepositData object. Used as a protection against malformed input. -
withdrawalCredentials
— withdrawal address credentials, passed in the expected format by Ethereum deposit smart contract. -
amount
— the amount of ETH, denominated in gwei, that is being deposited. -
depositMessageRoot
— hash that represents the root of the deposit message, ensuring the integrity and authenticity of the deposit data. -
forkVersion
— the 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
— the name of the Ethereum 2.0 network where the deposit is being made. -
depositCliVersion
— the version of the deposit command-line interface (CLI) tool that was used to generate the deposit data.
-
-
validatorRegistrationTxs
— transaction data presented in both a serialized and unserialized way to register the validator on SSV.network. -
ssvFeeTxs
— transaction data presented in both a serialized and unserialized way to add SSV tokens to the cluster maintaining the validator on SSV.network. -
feeRecipientTx
— transaction data presented in both a serialized and unserialized way to set the fee recipient address for the selected cluster. -
approveTx
— transaction data presented in both a serialized and unserialized way to approve the transfer of SSV tokens from the SSV.network smart contract on behalf of the users. -
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.
-
Sign and broadcast the transaction
approveTx
either by using the serialized signature inserializeTx
or by constructing the signature using the unserialized data insideapproveTx
.Use
serializeTx
to sign and send signed transaction to the Ethereum network.This step is required only once per account. It enables the SSV smart contract to transfer SSV tokens on your behalf to fund the cluster balance.
-
Sign and broadcast the transaction
feeRecipientTx
either by using the serialized signature inserializeTx
or by constructing the signature using the unserialized data insidefeeRecipientTx
.Use
serializeTx
to sign and send signed transaction to the Ethereum network.This step is required only once per account. It sets the fee recipient address for the validator on the SSV network. This address will be the recipient of the execution layer rewards accrued.
-
Sign and broadcast the transaction
validatorRegistrationTxs
either by using the serialized signature inserializeTx
or by constructing the signature using the unserialized data insidevalidatorRegistrationTxs
.Use
serializeTx
to sign and send signed transaction to the Ethereum network.By broadcasting this transaction, your validator will be registered on the SSV network and simultaneously managed by a pool (i.e. cluster) of four top-performance node operators: Allnodes, Huobi, P2P.org, and Stakeley.
Check an example on Goerli of a successful broadcasted transaction using the
validatorRegistrationTxs
data -
Create a serialized transaction for depositing the stake amount and send it as a POST request to /api/v1/eth/staking/direct/tx/deposit.
Example request:
curl --request POST \ --url https://api.p2p.org/api/v1/eth/staking/direct/tx/deposit \ --header 'accept: application/json' \ --header 'authorization: Bearer <token>' \ --header 'content-type: application/json' \ --data ' { "withdrawalAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17", "depositData": [ { "pubkey": "0xac1e9969d7b87f3102549ab41558136674a7306b85b9f73cfbd7d9fdb7db85724569da3ebd4d7de9689f6ac058d7e2a3", "signature": "0xb656f9c771166c82a7891b930e6a920878d9736eb3f9f241753a15ea69d8e2f20a3740dfaf546c70e31bd323e14b341205d04e3227dd4cf2923644a375f6792875ac02c5f256f7a17c96b09bafcbce7e4443e1862356b1e90d78875d78e9a742", "depositDataRoot": "0xba013b4950b9aff0c3c19017ec5b6e0ed5b957b36f6ff03a545e5cc5605baff8" } ] } '
-
withdrawalAddress
— withdrawal address for the validators. -
depositData
:pubkey
— validator public key.signature
— validator signature.depositDataRoot
— The SHA-256 hash of the SSZ-encoded DepositData object. Used as a protection against malformed input.
Example response:
{ "error": null, "result": { "serializeTx": "0x02f902cf0580021e830186a094681a1b3441c6bfb12f91651efd9f02c83c0702938901bc16d674ec800000b902a44f498c730000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030b4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200100000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000060a307b2e1661bcc38d482a69603713baf332ad36adf837392e9f20a96b77a03ca415a46261fc62b8f5d4aa69a0d70e2cf0d23e3396bd387cfde18d392a2c7ba822d3f8a60d075366625dcb3c88cd59ebc8f7ab1fc312c6b8b625a57bf7e1b6e6f000000000000000000000000000000000000000000000000000000000000000178ae581ccc8bdf1fde00cff35b2278e1c10a9ed2fc18632373dac118a03cfacdc0", "to": "0x681a1b3441c6BFb12f91651EFD9F02c83c070293", "gasLimit": "0.0000000000001", "data": "0x4f498c730000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030b4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200100000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000060a307b2e1661bcc38d482a69603713baf332ad36adf837392e9f20a96b77a03ca415a46261fc62b8f5d4aa69a0d70e2cf0d23e3396bd387cfde18d392a2c7ba822d3f8a60d075366625dcb3c88cd59ebc8f7ab1fc312c6b8b625a57bf7e1b6e6f000000000000000000000000000000000000000000000000000000000000000178ae581ccc8bdf1fde00cff35b2278e1c10a9ed2fc18632373dac118a03cfacd", "value": "32.0", "chainId": 5, "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 signed transaction to the Ethereum network.By broadcasting this transaction, you are depositing the required stake amount in the Ethereum deposit smart contract by using the P2P smart contract as a proxy.
-
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 SSV network explorer.
Ethereum Deposit Smart Contract
-
Prepare
id
that is an arbitrary UUID. Generate it in one of the following ways: -
Set up staking SSV nodes through P2P infrastructure by sending a POST request to /api/v1/eth/ssv/request/create. Use https://api-test.p2p.org for testing or https://api.p2p.org for production.
Example request:
curl --request POST \ --url https://api.p2p.org/api/v1/eth/ssv/request/create \ --header 'accept: application/json' \ --header 'authorization: Bearer <token>' \ --header 'content-type: application/json' \ --data ' { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa5", "controllerAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17", "withdrawalAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17", "feeRecipientAddress": "0x39D02C253dA1d9F85ddbEB3B6Dc30bc1EcBbFA17", "type": "without-encrypt-key", "operationPeriodInDays": 30, "ecdhPublicKey": null } '
id
— arbitrary UUID. You can later use that UUID to check the status of the set-up operation.withdrawalAddress
— withdrawal address for the validators.controllerAddress
— controller address for the validators.feeRecipientAddress
— fee recipient address.type
— type of operation:without-encrypt-key
(available) — the validator's private key is returned encrypted to the client.with-encrypt-key
(not available) — the validator private key is instead maintained by P2P to initiate withdrawals when requested by the client.
operationPeriodInDays
— operation period denoted in days.ecdhPublicKey
— Elliptic Curve Diffie-Hellman (ECDH) public key.
Example response:
{ "error": null, "result": true }
-
Check the node set-up operation status by sending a GET request to /api/v1/eth/ssv/request/status/{id}.
Example request:
curl --request GET \ --url https://api.p2p.org/api/v1/eth/staking/ssv/request/status/3fa85f64-5717-4562-b3fc-2c963f66afa5 \ --header 'accept: application/json' \ --header 'authorization: Bearer <token>'
id
— UUID that was specified in the node set-up request.
Example response:
{ "error": null, "result": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa5", "status": "ready", "type": "without-encrypt-key", "operationPeriodInDays": 30, "liquidationPeriodInDays": 30, "ecdhPublicKey": null, "encryptedShares": [ { "publicKey": "0xb4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb27", "nonce": 1, "sharesData": "0x971aade51840b84fc5b88fee2ef1ed80ce57c2ea9a8fb610d2fdb3a287589a87c421b845e3f1cb4ef5a84eaba6c31d4c159ead3c818758d6fc988a207ea467ff35fb90ab502805569f8ff94042d870ebedc327ea0778476559c95076a99c7cd1b78b94bb2a5098c10b50000c7419476f295e0d1e94b17c1f985c76adfad8b7897bdf34b58388b6b201104616e179e93888016e92ab60b4bf5d844b1a8fd9fdd97e3dba2cfadbe65f1bc3b66aeed8b1be8407a150ae6a028fe72e50d70121e7eab424e02922422ce66fb45c5878eb0d307fae5b5b0637cee897a119563d18082c33fe5ac017d3cfd3a42e2f5f7d8bece98e679000fb7cfd339fbc1470177963d5cd73b6b4001e77f3dcb348cb07797b25fd3b6811e4dfbafe78a4a9d70861fd27001d88253500347ba8ff907bd647b83aa6b5bf727929ee35ce5360a0b7810b355f8e524426e8a6db75e240af29527b398c2d5a926e4867f04483ec61338d7f413cd419d17bc572a0b3ecd98e04426964a8350d1545493e2fe039828f8e74fb48da7f4ee26166b4c2b2b05fa94bf4721a0b6888a8065062ed45bd23f9d3fcbb80ecf3febfb8c90522b20ae724a94f12fb9de80c95dd7b1762d6b15312c3bbde291224fb7b809384404bde5d78bd36801a67154addc466d20c6e6146eda1e263167a96a9d21a1b4fef6d532957cfca20d3311ac2f5bfd6c4601df0eebec49b5a74adce8c1b7fbf82c5333d25c499f72928d3bfe47fa9c54ec9f55c63586758af8a256683952376b4feef745bbc2280e66bb475e48edc4a90eb128bfb3322b30065f3fedf6dcd3180798375eee05abc20433f79e3d6e73948a84057ca7b72b6ba756f257ca1a11f2fa3b130bcf28d9ef80cb946bf11e6008815ee6c100ab1527f13c064bac2b67a8f832ab70c98d39d77940f975c35c8dea26f2e25a5e706da368fa0dd08958ea11904b1b51ca40aab37e581e58a5c60ea1caa08063461b3319e6c8ff21b75f2ff9358ddccf27abea55e7dbad4f474741ff14fe9e63d9c001eec990531a5bc6b2196269cfa0050beced2e2ce55f9dfea48c0c81f3d1a1f4f6548e29de76b085f83f9399c29b89880a15b80e049de2fa9eef3eab7a1a15cd1d6ae2bc8fdc9837f59baf56c11ed7405bda5d2cd2de6fd80c7b7461abfb757c742b3216ef79d8268501cb3531a5fcf9d46b58e828e6aaea4bef8484cc8945912ac611827463d4a3dabe56f608181dfba8ffc7cb1cfdef5a09a9f107652b44d290fc42b0d5e3e16634342af07f205153b0c7d095e0d418f1d0aef8a7e00d41e5af183ceed36d5832169bdd91810b4ad686b85130ec07aeaccfbc26d440684ac34c8005c12b38caa41d18ecd51167afaba0aae2b605cb0cefcae1b4f64ff220167d1f93b73abd75368dd67c3a6ad48448021c66086daf62419d6de350ee3f25aef4784340c0932362da25cff3f1ed7316afce3034d264f1206322c6510aacddb9315f8b532516a52f2483d0a191caa38a10cb40d00494c43ddcc49b54349fd809409a8d6131746ef7adc57a9f7feea9bb3a4142d418e5b1f89ccde686a1627c9a9d5ac9bc6a06685017b15eb549e9bc2e7cf98720b616d8bea14b5b9194280bb1386154be5fd31dc6f64cfe5bbf80fff95e2a82a2a803e579e302c0db931470b78fb32fb1774840002417b86c4ad621e43ec36d2496a7f6b63d470fae3edb863f909ee0e4ce43ca293770a229cbcbd542c9bd123889298c3a6e32c2e5c5f4861afa640a16d5c5089373d3e6ddfdebc223a2d966c3e37d135f3f8805eb3432ff46befac6c41aff89739b1bab6ccee383fb524ff985b5054091fed2d351bff38ec78800200", "ecdhEncryptedPrivateKey": null } ], "validatorsCount": 1, "controllerAddress": "0x9c7d4b4595402ed44167C74f9F7c7720AB5528E0", "withdrawalAddress": "0x9c7d4b4595402ed44167C74f9F7c7720AB5528E0", "feeRecipientAddress": "0x9c7d4b4595402ed44167C74f9F7c7720AB5528E0", "depositData": [ { "pubkey": "0xb632ad4ebec8594ec8f2fbacc6df53dec180f8bae6561d70bf74c19520a35beff99cd92513058da6a22a75b9570ab31d", "signature": "0x836e9eebeb29ed1d4b232fa38649e9902ea7d6f9d19e571c4e76cde4da2bcdbca822c8f29d21379325201735fa93925d1597f0c021a147910c165e60bf3308bc827d5fcd545f1c901e7b3102e28b8ea09d6c162c3ffd57e7398f73e5968e05db", "depositDataRoot": "0x16678e6d91a8c3a8f1cdabc037fa32f1d296e629d1665a57f493eda1e6a6964a", "withdrawalCredentials": "0100000000000000000000005cef11327af4104ba0f8a82fbb8628caee7cb1e3", "amount": "32000000000", "depositMessageRoot": "6a572503239cd1f11998af7901c0947fe36eb8efec080f22598d607d3938c1a8", "forkVersion": "00001020", "eth2NetworkName": "goerli", "depositCliVersion": "2.3.0" } ], "validatorRegistrationTxs": [ { "serializeTx": "0x02f9078605010210830f424094c3cd9a0ae89fff83b71b58b6512d43f8a41f363d80b9076406e8fb9c00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f3111b30000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000030b4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000520971aade51840b84fc5b88fee2ef1ed80ce57c2ea9a8fb610d2fdb3a287589a87c421b845e3f1cb4ef5a84eaba6c31d4c159ead3c818758d6fc988a207ea467ff35fb90ab502805569f8ff94042d870ebedc327ea0778476559c95076a99c7cd1b78b94bb2a5098c10b50000c7419476f295e0d1e94b17c1f985c76adfad8b7897bdf34b58388b6b201104616e179e93888016e92ab60b4bf5d844b1a8fd9fdd97e3dba2cfadbe65f1bc3b66aeed8b1be8407a150ae6a028fe72e50d70121e7eab424e02922422ce66fb45c5878eb0d307fae5b5b0637cee897a119563d18082c33fe5ac017d3cfd3a42e2f5f7d8bece98e679000fb7cfd339fbc1470177963d5cd73b6b4001e77f3dcb348cb07797b25fd3b6811e4dfbafe78a4a9d70861fd27001d88253500347ba8ff907bd647b83aa6b5bf727929ee35ce5360a0b7810b355f8e524426e8a6db75e240af29527b398c2d5a926e4867f04483ec61338d7f413cd419d17bc572a0b3ecd98e04426964a8350d1545493e2fe039828f8e74fb48da7f4ee26166b4c2b2b05fa94bf4721a0b6888a8065062ed45bd23f9d3fcbb80ecf3febfb8c90522b20ae724a94f12fb9de80c95dd7b1762d6b15312c3bbde291224fb7b809384404bde5d78bd36801a67154addc466d20c6e6146eda1e263167a96a9d21a1b4fef6d532957cfca20d3311ac2f5bfd6c4601df0eebec49b5a74adce8c1b7fbf82c5333d25c499f72928d3bfe47fa9c54ec9f55c63586758af8a256683952376b4feef745bbc2280e66bb475e48edc4a90eb128bfb3322b30065f3fedf6dcd3180798375eee05abc20433f79e3d6e73948a84057ca7b72b6ba756f257ca1a11f2fa3b130bcf28d9ef80cb946bf11e6008815ee6c100ab1527f13c064bac2b67a8f832ab70c98d39d77940f975c35c8dea26f2e25a5e706da368fa0dd08958ea11904b1b51ca40aab37e581e58a5c60ea1caa08063461b3319e6c8ff21b75f2ff9358ddccf27abea55e7dbad4f474741ff14fe9e63d9c001eec990531a5bc6b2196269cfa0050beced2e2ce55f9dfea48c0c81f3d1a1f4f6548e29de76b085f83f9399c29b89880a15b80e049de2fa9eef3eab7a1a15cd1d6ae2bc8fdc9837f59baf56c11ed7405bda5d2cd2de6fd80c7b7461abfb757c742b3216ef79d8268501cb3531a5fcf9d46b58e828e6aaea4bef8484cc8945912ac611827463d4a3dabe56f608181dfba8ffc7cb1cfdef5a09a9f107652b44d290fc42b0d5e3e16634342af07f205153b0c7d095e0d418f1d0aef8a7e00d41e5af183ceed36d5832169bdd91810b4ad686b85130ec07aeaccfbc26d440684ac34c8005c12b38caa41d18ecd51167afaba0aae2b605cb0cefcae1b4f64ff220167d1f93b73abd75368dd67c3a6ad48448021c66086daf62419d6de350ee3f25aef4784340c0932362da25cff3f1ed7316afce3034d264f1206322c6510aacddb9315f8b532516a52f2483d0a191caa38a10cb40d00494c43ddcc49b54349fd809409a8d6131746ef7adc57a9f7feea9bb3a4142d418e5b1f89ccde686a1627c9a9d5ac9bc6a06685017b15eb549e9bc2e7cf98720b616d8bea14b5b9194280bb1386154be5fd31dc6f64cfe5bbf80fff95e2a82a2a803e579e302c0db931470b78fb32fb1774840002417b86c4ad621e43ec36d2496a7f6b63d470fae3edb863f909ee0e4ce43ca293770a229cbcbd542c9bd123889298c3a6e32c2e5c5f4861afa640a16d5c5089373d3e6ddfdebc223a2d966c3e37d135f3f8805eb3432ff46befac6c41aff89739b1bab6ccee383fb524ff985b5054091fed2d351bff38ec78800200c0", "to": "0xC3CD9A0aE89Fff83b71b58b6512D43F8a41f363D", "gasLimit": "0.000000000001", "data": "0x06e8fb9c00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f3111b30000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000030b4b5f251eac53f34eb1da2b6659d35db303e408c4c830156cf090441564474f356abd023a0e679aa97cefeed850abb2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000520971aade51840b84fc5b88fee2ef1ed80ce57c2ea9a8fb610d2fdb3a287589a87c421b845e3f1cb4ef5a84eaba6c31d4c159ead3c818758d6fc988a207ea467ff35fb90ab502805569f8ff94042d870ebedc327ea0778476559c95076a99c7cd1b78b94bb2a5098c10b50000c7419476f295e0d1e94b17c1f985c76adfad8b7897bdf34b58388b6b201104616e179e93888016e92ab60b4bf5d844b1a8fd9fdd97e3dba2cfadbe65f1bc3b66aeed8b1be8407a150ae6a028fe72e50d70121e7eab424e02922422ce66fb45c5878eb0d307fae5b5b0637cee897a119563d18082c33fe5ac017d3cfd3a42e2f5f7d8bece98e679000fb7cfd339fbc1470177963d5cd73b6b4001e77f3dcb348cb07797b25fd3b6811e4dfbafe78a4a9d70861fd27001d88253500347ba8ff907bd647b83aa6b5bf727929ee35ce5360a0b7810b355f8e524426e8a6db75e240af29527b398c2d5a926e4867f04483ec61338d7f413cd419d17bc572a0b3ecd98e04426964a8350d1545493e2fe039828f8e74fb48da7f4ee26166b4c2b2b05fa94bf4721a0b6888a8065062ed45bd23f9d3fcbb80ecf3febfb8c90522b20ae724a94f12fb9de80c95dd7b1762d6b15312c3bbde291224fb7b809384404bde5d78bd36801a67154addc466d20c6e6146eda1e263167a96a9d21a1b4fef6d532957cfca20d3311ac2f5bfd6c4601df0eebec49b5a74adce8c1b7fbf82c5333d25c499f72928d3bfe47fa9c54ec9f55c63586758af8a256683952376b4feef745bbc2280e66bb475e48edc4a90eb128bfb3322b30065f3fedf6dcd3180798375eee05abc20433f79e3d6e73948a84057ca7b72b6ba756f257ca1a11f2fa3b130bcf28d9ef80cb946bf11e6008815ee6c100ab1527f13c064bac2b67a8f832ab70c98d39d77940f975c35c8dea26f2e25a5e706da368fa0dd08958ea11904b1b51ca40aab37e581e58a5c60ea1caa08063461b3319e6c8ff21b75f2ff9358ddccf27abea55e7dbad4f474741ff14fe9e63d9c001eec990531a5bc6b2196269cfa0050beced2e2ce55f9dfea48c0c81f3d1a1f4f6548e29de76b085f83f9399c29b89880a15b80e049de2fa9eef3eab7a1a15cd1d6ae2bc8fdc9837f59baf56c11ed7405bda5d2cd2de6fd80c7b7461abfb757c742b3216ef79d8268501cb3531a5fcf9d46b58e828e6aaea4bef8484cc8945912ac611827463d4a3dabe56f608181dfba8ffc7cb1cfdef5a09a9f107652b44d290fc42b0d5e3e16634342af07f205153b0c7d095e0d418f1d0aef8a7e00d41e5af183ceed36d5832169bdd91810b4ad686b85130ec07aeaccfbc26d440684ac34c8005c12b38caa41d18ecd51167afaba0aae2b605cb0cefcae1b4f64ff220167d1f93b73abd75368dd67c3a6ad48448021c66086daf62419d6de350ee3f25aef4784340c0932362da25cff3f1ed7316afce3034d264f1206322c6510aacddb9315f8b532516a52f2483d0a191caa38a10cb40d00494c43ddcc49b54349fd809409a8d6131746ef7adc57a9f7feea9bb3a4142d418e5b1f89ccde686a1627c9a9d5ac9bc6a06685017b15eb549e9bc2e7cf98720b616d8bea14b5b9194280bb1386154be5fd31dc6f64cfe5bbf80fff95e2a82a2a803e579e302c0db931470b78fb32fb1774840002417b86c4ad621e43ec36d2496a7f6b63d470fae3edb863f909ee0e4ce43ca293770a229cbcbd542c9bd123889298c3a6e32c2e5c5f4861afa640a16d5c5089373d3e6ddfdebc223a2d966c3e37d135f3f8805eb3432ff46befac6c41aff89739b1bab6ccee383fb524ff985b5054091fed2d351bff38ec78800200", "value": "0.0", "chainId": 5, "type": 2, "maxFeePerGas": "0.000000000000000016", "maxPriorityFeePerGas": "2" } ], "ssvFeeTxs": [ { "serializeTx": "0x02f901c605800210830186a094c3cd9a0ae89fff83b71b58b6512d43f8a41f363d80b901a4bc26e7e50000000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f3111b30000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000016c7ded605b5c00000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004c0", "to": "0xC3CD9A0aE89Fff83b71b58b6512D43F8a41f363D", "gasLimit": "0.0000000000001", "data": "0xbc26e7e50000000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000016c7ded605b5c0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f3111b30000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000016c7ded605b5c00000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004", "value": "0.0", "chainId": 5, "type": 2, "maxFeePerGas": "0.000000000000000016", "maxPriorityFeePerGas": "2" } ], "feeRecipientTx": { "serializeTx": "0x02f84405800210830186a094c3cd9a0ae89fff83b71b58b6512d43f8a41f363d80a4dbcdc2cc0000000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0c0", "to": "0xC3CD9A0aE89Fff83b71b58b6512D43F8a41f363D", "gasLimit": "0.0000000000001", "data": "0xdbcdc2cc0000000000000000000000009c7d4b4595402ed44167c74f9f7c7720ab5528e0", "value": "0.0", "chainId": 5, "type": 2, "maxFeePerGas": "0.000000000000000016", "maxPriorityFeePerGas": "2" }, "approveTx": { "serializeTx": "0x02f86505800210830186a0943a9f01091c446bde031e39ea8354647afef091e780b844095ea7b3000000000000000000000000c3cd9a0ae89fff83b71b58b6512d43f8a41f363dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0", "to": "0x3a9f01091C446bdE031E39ea8354647AFef091E7", "gasLimit": "0.0000000000001", "data": "0x095ea7b3000000000000000000000000c3cd9a0ae89fff83b71b58b6512d43f8a41f363dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "value": "0.0", "chainId": 5, "type": 2, "maxFeePerGas": "0.000000000000000016", "maxPriorityFeePerGas": "2" } } }
-
id
— arbitrary UUID. You can later use that UUID to check the status of the set-up operation. -
status
— operation status. Whenready
, the validator data is ready to be used in the validator registration step -
type
— type of operation:without-encrypt-key
(available) — the validator's private key is returned encrypted to the client.with-encrypt-key
(not available) — the validator private key is instead maintained by P2P to initiate withdrawals when requested by the client.
-
operationPeriodInDays
— operation period denoted in days. -
liquidationPeriodInDays
— liquidation period denoted in days. -
ecdhPublicKey
— Elliptic Curve Diffie-Hellman (ECDH) public key. -
encryptedShares
—publicKey
— validator public key.nonce
— the validator key owner's nonce.sharesData
— the shares (i.e. validator key into a predefined threshold of shares) and the signature, used to prove the validator's owner address, are constructed as sharesData which is used during validator registration through the SSV smart contractecdhEncryptedPrivateKey
— Elliptic Curve Diffie-Hellman (ECDH) private key.
-
validatorsCount
— number of validators. One validator is equal to 32 ETH. -
controllerAddress
— controller address for the validators. -
withdrawalAddress
— withdrawal address for the validators. -
feeRecipientAddress
— fee recipient address. -
depositData
:-
pubkey
— validator public key. -
signature
— validator signature. -
depositDataRoot
— The SHA-256 hash of the SSZ-encoded DepositData object. Used as a protection against malformed input. -
withdrawalCredentials
— withdrawal address credentials, passed in the expected format by Ethereum deposit smart contract. -
amount
— the amount of ETH, denominated in gwei, that is being deposited. -
depositMessageRoot
— hash that represents the root of the deposit message, ensuring the integrity and authenticity of the deposit data. -
forkVersion
— the 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
— the name of the Ethereum 2.0 network where the deposit is being made. -
depositCliVersion
— the version of the deposit command-line interface (CLI) tool that was used to generate the deposit data.
-
-
validatorRegistrationTxs
— transaction data presented in both a serialized and unserialized way to register the validator on SSV.network. -
ssvFeeTxs
— transaction data presented in both a serialized and unserialized way to add SSV tokens to the cluster maintaining the validator on SSV.network. -
feeRecipientTx
— transaction data presented in both a serialized and unserialized way to set the fee recipient address for the selected cluster. -
approveTx
— transaction data presented in both a serialized and unserialized way to approve the transfer of SSV tokens from the SSV.network smart contract on behalf of the users. -
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.
-
Sign and broadcast the transaction
approveTx
either by using the serialized signature inserializeTx
or by constructing the signature using the unserialized data insideapproveTx
.Use
serializeTx
to sign and send signed transaction to the Ethereum network.This step is required only once per account. It enables the SSV smart contract to transfer SSV tokens on your behalf to fund the cluster balance.
-
Sign and broadcast the transaction
feeRecipientTx
either by using the serialized signature inserializeTx
or by constructing the signature using the unserialized data insidefeeRecipientTx
.Use
serializeTx
to sign and send signed transaction to the Ethereum network.This step is required only once per account. It sets the fee recipient address for the validator on the SSV network. This address will be the recipient of the execution layer rewards accrued.
-
Sign and broadcast the transaction
validatorRegistrationTxs
either by using the serialized signature inserializeTx
or by constructing the signature using the unserialized data insidevalidatorRegistrationTxs
.Use
serializeTx
to sign and send signed transaction to the Ethereum network.By broadcasting this transaction, your validator will be registered on the SSV network and simultaneously managed by a pool (i.e. cluster) of four top-performance node operators: Allnodes, Huobi, P2P.org, and Stakeley.
Check an example on Goerli of a successful broadcasted transaction using the
validatorRegistrationTxs
data -
Clients, who prefer to construct a signature themselves to send the deposit amount to the Ethereum deposit smart contract, can retrieve all the required data from step 3 within the object
depositData
.Check an example of how to sign and send a transaction to the Ethereum network.
-
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 SSV network explorer.
What's Next?
- DVT Staking API reference.
Updated 21 days ago