Run a HPP Node
Instructions about how to run a HPP Node.
Minimum hardware configuration
The following is the minimum hardware configuration required to set up a Nitro full node (not archival):
RAM
16 GB
CPU
4 core CPU (for AWS, a t3 xLarge instance)
Storage Type
NVMe SSD drives are recommended
Storage size
Depends on the chain and its traffic overtime
Please note that:
These minimum requirements for RAM and CPU are recommended for nodes that process a small amount of RPC requests. For nodes that require processing multiple simultaneous requests, both RAM and number of CPU cores will need to be scaled with the amount of traffic being served.
Single core performance is important. If the node is falling behind and a single core is 100% busy, it is recommended to update to a faster processor
The minimum storage requirements will change over time as the chain grows. Using more than the minimum requirements to run a robust full node is recommended.
Prerequisites
Download and install Docker, ensure it is running.
Unlimited rate limit Ethereum RPC endpoint and beacon chain RPC endpoint
Run the node
Specify a local path to store data for running the node, determine the EigenDA Nitro version, and then execute it.
The node should now be running and looking for peers to sync.
For a more detailed node run instruction, please refer to this link. https://github.com/hpp-io/node
HPP Mainnet
generate EigenDA Proxy environment
# EigenDA Proxy - .env.eigenda.mainnet
EIGENDA_PROXY_EIGENDA_DISPERSER_RPC=disperser.eigenda.xyz:443
EIGENDA_PROXY_EIGENDA_STATUS_QUERY_INTERVAL=5s
EIGENDA_PROXY_EIGENDA_STATUS_QUERY_TIMEOUT=2400s
EIGENDA_PROXY_EIGENDA_ETH_RPC=https://ethereum-rpc.publicnode.com
EIGENDA_PROXY_EIGENDA_SERVICE_MANAGER_ADDR=0x870679E138bCdf293b7Ff14dD44b70FC97e12fc0
Replace your rpc urls :
EIGENDA_PROXY_EIGENDA_ETH_RPC
generate docker-compose.yml
version: '3.8'
services:
eigenda-proxy:
image: ghcr.io/layr-labs/eigenda-proxy:v1.8.2
ports:
- "3100:3100"
env_file:
- .env.eigenda.mainnet
command: [
"--addr", "0.0.0.0",
"--port", "3100",
"--api-enabled", "admin"
]
run EigenDA Proxy
docker compose -p eigenda-proxy up -d
# status
curl http://localhost:3100/admin/eigenda-dispersal-backend
{"eigenDADispersalBackend":"V1"}
generate and edit hpp-mainnet-node-config.json
{
"chain": {
"info-json": "[{\"chain-id\":190415,\"parent-chain-id\":1,\"chain-name\":\"conduit-orbit-deployer\",\"chain-config\":{\"chainId\":190415,\"homesteadBlock\":0,\"daoForkBlock\":null,\"daoForkSupport\":true,\"eip150Block\":0,\"eip150Hash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"eip155Block\":0,\"eip158Block\":0,\"byzantiumBlock\":0,\"constantinopleBlock\":0,\"petersburgBlock\":0,\"istanbulBlock\":0,\"muirGlacierBlock\":0,\"berlinBlock\":0,\"londonBlock\":0,\"clique\":{\"period\":0,\"epoch\":0},\"arbitrum\":{\"EnableArbOS\":true,\"AllowDebugPrecompiles\":false,\"DataAvailabilityCommittee\":true,\"InitialArbOSVersion\":32,\"InitialChainOwner\":\"0xF91B7476e52374dD75fb3d598C5f2D5dc019fc90\",\"GenesisBlockNum\":0}},\"rollup\":{\"bridge\":\"0x9948eDFBb9e0b104bAd60393dBe79d0BC7937014\",\"inbox\":\"0xE0400a87d5Ee8a2Fc1dF2aAf4B6d8f89d0B9bE55\",\"sequencer-inbox\":\"0x9B26957a661bc862FA0d7eb21813Aa008d0Cc6E6\",\"rollup\":\"0xf0d2960a37B33567FF7507C2d59da021277663A1\",\"validator-utils\":\"0x84eA2523b271029FFAeB58fc6E6F1435a280db44\",\"validator-wallet-creator\":\"0x0A5eC2286bB15893d5b8f320aAbc823B2186BA09\",\"deployed-at\":22943219}}]",
"name": "conduit-orbit-deployer"
},
"parent-chain": {
"connection": {
"url": "https://ethereum-rpc.publicnode.com"
},
"blob-client": {
"beacon-url": "https://ethereum-beacon-api.publicnode.com"
}
},
"node": {
"feed": {
"input": {
"url": "wss://relay-hpp-mainnet-xeajiyxsci.t.conduit.xyz"
}
},
"batch-poster": {
"enable-eigenda-failover": true
},
"eigen-da": {
"enable": true,
"rpc": "http://localhost:3100"
},
"data-availability": {
"enable": true,
"rest-aggregator": {
"enable": true,
"urls": "https://das-hpp-mainnet-xeajiyxsci.t.conduit.xyz"
}
}
},
"execution": {
"forwarding-target": "https://mainnet.hpp.io"
},
"http": {
"api": "net,web3,eth",
"corsdomain": "*",
"addr": "0.0.0.0",
"vhosts": "*"
}
}
Replace your rpc and node urls :
parent-chain.connection.url
parent-chain.blob-client
node.eigen-da.rpc
run EigenDA Nitro Node
docker run --rm -it \
--name hpp-node-mainnet \
-v ./hpp-mainnet-node-config.json:/config/nodeConfig.json \
-v ./hpp-mainnet:/home/user/.arbitrum \
-p 8547:8547 -p 8548:8548 \
ghcr.io/layr-labs/nitro/nitro-node:v3.5.7 \
--conf.file /config/nodeConfig.json \
--http.api "web3,net,eth,debug,txpool" \
--http.addr 0.0.0.0 \
--http.corsdomain "*"
HPP Sepolia (Testnet)
generate EigenDA Proxy environment
# EigenDA Proxy - .env.eigenda.sepolia
EIGENDA_PROXY_EIGENDA_DISPERSER_RPC=disperser-testnet-sepolia.eigenda.xyz:443
EIGENDA_PROXY_EIGENDA_STATUS_QUERY_INTERVAL=5s
EIGENDA_PROXY_EIGENDA_STATUS_QUERY_TIMEOUT=2400s
EIGENDA_PROXY_EIGENDA_ETH_RPC=https://ethereum-sepolia-rpc.publicnode.com
EIGENDA_PROXY_EIGENDA_SERVICE_MANAGER_ADDR=0x3a5acf46ba6890B8536420F4900AC9BC45Df4764
generate docker-compose.yml
version: '3.8'
services:
eigenda-proxy:
image: ghcr.io/layr-labs/eigenda-proxy:v1.8.2
ports:
- "3100:3100"
env_file:
- .env.eigenda.sepolia
command: [
"--addr", "0.0.0.0",
"--port", "3100",
"--api-enabled", "admin"
]
run EigenDA Proxy
docker compose -p eigenda-proxy up -d
# status
curl http://localhost:3100/admin/eigenda-dispersal-backend
{"eigenDADispersalBackend":"V1"}
generate and edit hpp-sepolia-node-config.json
{
"chain": {
"info-json": "[{\"chain-id\":181228,\"parent-chain-id\":11155111,\"chain-name\":\"conduit-orbit-deployer\",\"chain-config\":{\"chainId\":181228,\"homesteadBlock\":0,\"daoForkBlock\":null,\"daoForkSupport\":true,\"eip150Block\":0,\"eip150Hash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"eip155Block\":0,\"eip158Block\":0,\"byzantiumBlock\":0,\"constantinopleBlock\":0,\"petersburgBlock\":0,\"istanbulBlock\":0,\"muirGlacierBlock\":0,\"berlinBlock\":0,\"londonBlock\":0,\"clique\":{\"period\":0,\"epoch\":0},\"arbitrum\":{\"EnableArbOS\":true,\"AllowDebugPrecompiles\":false,\"DataAvailabilityCommittee\":true,\"InitialArbOSVersion\":32,\"InitialChainOwner\":\"0x3324DC1E72Ee0C0D0483503B5d36A592bfC862D9\",\"GenesisBlockNum\":0}},\"rollup\":{\"bridge\":\"0x1DDe0F57E7889B6866505634E58E3057b01dfed0\",\"inbox\":\"0xAAD45a7bF65b43E56767CdE3Ab84A5433c714Afc\",\"sequencer-inbox\":\"0x7A6398deA2adc6fe4A3cfBA3352840bB03e440d3\",\"rollup\":\"0x60b33120F5572608CC33c5C3a40c992987B59Edc\",\"validator-utils\":\"0x9d502DD38E6E7FBdd3b7e964345d544ec37f1D72\",\"validator-wallet-creator\":\"0x684A827456373a0C0379B1C82BA31Ee5E4F88F62\",\"deployed-at\":8539104} }]",
"name": "conduit-orbit-deployer"
},
"parent-chain": {
"connection": {
"url": "https://ethereum-sepolia-rpc.publicnode.com"
},
"blob-client": {
"beacon-url": "https://ethereum-sepolia-beacon-api.publicnode.com"
}
},
"node": {
"feed": {
"input": {
"url": "wss://relay-hpp-sepolia-turdrv0107.t.conduit.xyz"
}
},
"batch-poster": {
"enable-eigenda-failover": true
},
"eigen-da": {
"enable": true,
"rpc": "http://localhost:3100"
},
"data-availability": {
"enable": true,
"rest-aggregator": {
"enable": true,
"urls": "https://das-hpp-sepolia-turdrv0107.t.conduit.xyz"
}
}
},
"execution": {
"forwarding-target": "https://rpc-hpp-sepolia-turdrv0107.t.conduit.xyz"
},
"http": {
"api": "net,web3,eth",
"corsdomain": "*",
"addr": "0.0.0.0",
"vhosts": "*"
}
}
Replace your rpc and node urls :
parent-chain.connection.url
parent-chain.blob-client
node.eigen-da.rpc
run EigenDA Nitro Node
docker run --rm -it \
--name hpp-node-sepolia \
-v ./hpp-sepolia-node-config.json:/config/nodeConfig.json \
-v ./hpp-sepolia:/home/user/.arbitrum \
-p 8547:8547 -p 8548:8548 \
ghcr.io/layr-labs/nitro/nitro-node:v3.5.7 \
--conf.file /config/nodeConfig.json \
--http.api "web3,net,eth,debug,txpool" \
--http.addr 0.0.0.0 \
--http.corsdomain "*"
HPP generates blocks only when there are transactions to process. So if you don't see new blocks coming in, it just means there's no transaction activity - your node is still syncing correctly.
Last updated