## Issue Addressed Resolves #1717 ## Proposed Changes Add quoting for epochs, slots, and `effective_balance` ## Additional Info
4.2 KiB
Beacon Node API
Lighthouse implements the standard Eth2 Beacon Node API specification. Please follow that link for a full description of each API endpoint.
Warning: the standard API specification is still in flux and the Lighthouse implementation is partially incomplete. You can track the status of each endpoint at #1434.
Starting the server
A Lighthouse beacon node can be configured to expose a HTTP server by supplying the --http
flag. The default listen address is 127.0.0.1:5052
.
The following CLI flags control the HTTP server:
--http
: enable the HTTP server (required even if the following flags are provided).--http-port
: specify the listen port of the server.--http-address
: specify the listen address of the server.--http-allow-origin
: specify the value of theAccess-Control-Allow-Origin
header. The default is to not supply a header.
The schema of the API aligns with the standard Eth2 Beacon Node API as defined at github.com/ethereum/eth2.0-APIs. An interactive specification is available here.
CLI Example
Start the beacon node with the HTTP server listening on http://localhost:5052:
lighthouse bn --http
HTTP Request/Response Examples
This section contains some simple examples of using the HTTP API via curl
.
All endpoints are documented in the Eth2 Beacon Node API
specification.
View the head of the beacon chain
Returns the block header at the head of the canonical chain.
curl -X GET "http://localhost:5052/eth/v1/beacon/headers/head" -H "accept:
application/json"
{
"data": {
"root": "0x4381454174fc28c7095077e959dcab407ae5717b5dca447e74c340c1b743d7b2",
"canonical": true,
"header": {
"message": {
"slot": "3199",
"proposer_index": "19077",
"parent_root": "0xf1934973041c5896d0d608e52847c3cd9a5f809c59c64e76f6020e3d7cd0c7cd",
"state_root": "0xe8e468f9f5961655dde91968f66480868dab8d4147de9498111df2b7e4e6fe60",
"body_root": "0x6f183abc6c4e97f832900b00d4e08d4373bfdc819055d76b0f4ff850f559b883"
},
"signature": "0x988064a2f9cf13fe3aae051a3d85f6a4bca5a8ff6196f2f504e32f1203b549d5f86a39c6509f7113678880701b1881b50925a0417c1c88a750c8da7cd302dda5aabae4b941e3104d0cf19f5043c4f22a7d75d0d50dad5dbdaf6991381dc159ab"
}
}
}
View the status of a validator
Shows the status of validator at index 1
at the head
state.
curl -X GET "http://localhost:5052/eth/v1/beacon/states/head/validators/1" -H "accept: application/json"
{
"data": {
"index": "1",
"balance": "63985937939",
"status": "Active",
"validator": {
"pubkey": "0x873e73ee8b3e4fcf1d2fb0f1036ba996ac9910b5b348f6438b5f8ef50857d4da9075d0218a9d1b99a9eae235a39703e1",
"withdrawal_credentials": "0x00b8cdcf79ba7e74300a07e9d8f8121dd0d8dd11dcfd6d3f2807c45b426ac968",
"effective_balance": "32000000000",
"slashed": false,
"activation_eligibility_epoch": "0",
"activation_epoch": "0",
"exit_epoch": "18446744073709551615",
"withdrawable_epoch": "18446744073709551615"
}
}
}
Troubleshooting
HTTP API is unavailable or refusing connections
Ensure the --http
flag has been supplied at the CLI.
You can quickly check that the HTTP endpoint is up using curl
:
curl -X GET "http://localhost:5052/eth/v1/node/version" -H "accept: application/json"
The beacon node should respond with its version:
{"data":{"version":"Lighthouse/v0.2.9-6f7b4768a/x86_64-linux"}}
If this doesn't work, the server might not be started or there might be a network connection error.
I cannot query my node from a web browser (e.g., Swagger)
By default, the API does not provide an Access-Control-Allow-Origin
header,
which causes browsers to reject responses with a CORS error.
The --http-allow-origin
flag can be used to add a wild-card CORS header:
lighthouse bn --http --http-allow-origin "*"
Warning: Adding the wild-card allow-origin flag can pose a security risk. Only use it in production if you understand the risks of a loose CORS policy.