This work is supported by an Optimism governance grant.
Hildr is an OP Stack rollup client written in Java 21 with GraalVM native.
Follow the spec
To run a hildr-node
and op-geth
node, at least 4C8G and 100GB of disk is required, as well as the installation of Java version 21 and Go version 1.20.8, must be lower than v1.21.
hildr-node
First, use Docker start an op-geth
container in hildr project root directory:
cd ./docker && docker compose -f docker/docker-compose.yml up op-geth
Then, once op-geth has been started, start up the hildr-node
in hildr
project root directory:
./gradlew :hildr-node:build -x test \
&& nohup java --enable-preview \
-cp hildr-node/build/libs/hildr-node-{version}.jar io.optimism.Hildr \
--network optimism-sepolia \
--jwt-secret $JWT_SECRET \
--l1-rpc-url $L1_RPC_URL \
--l1-ws-rpc-url $L1_WS_RPC_URL \
--l1-beacon-url $L1_BEACON_RPC_URL \
--l2-rpc-url $L2_RPC_URL \
--l2-engine-url $L2_AUTH_RPC_URL \
--rpc-port $HILDR_RPC_PORT \ # Choose any available port.
--log-level $LOG_LEVEL \ # can be either: "DEBUG","TRACE","INFO","WARN","ERROR"
--sync-mode full >l2-hildr-node.log 2>&1 &
Running a native hildr container on optimism-sepolia network:
docker run -it ghcr.io/optimism-java/hildr:latest-native \
--network optimism-sepolia \
--jwt-secret $JWT_SECRET \
--l1-rpc-url $L1_RPC_URL \
--l1-ws-rpc-url $L1_WS_RPC_URL \
--l1-beacon-url $L1_BEACON_RPC_URL \
--l2-rpc-url $L2_RPC_URL \
--l2-engine-url $L2_AUTH_RPC_URL \
--rpc-port $HILDR_RPC_PORT \
--log-level $LOG_LEVEL \ # can be either: "DEBUG","TRACE","INFO","WARN","ERROR"
--sync-mode full
Running a java hildr container on optimism-sepolia network:
docker run -it ghcr.io/optimism-java/hildr:latest \
--network optimism-sepolia \
--jwt-secret $JWT_SECRET \
--l1-rpc-url $L1_RPC_URL \
--l1-ws-rpc-url $L1_WS_RPC_URL \
--l2-rpc-url $L2_RPC_URL \
--l2-engine-url $L2_AUTH_RPC_URL \
--rpc-port $HILDR_RPC_PORT \
--log-level $LOG_LEVEL \ # can be either: "DEBUG","TRACE","INFO","WARN","ERROR"
--sync-mode full
hildr-node
from sourceInstall op-geth
via the Makefile
in the workspace root:
git clone git@github.com:optimism-java/hildr.git \
cd hildr && ./gradlew build -x test
This command will generate the hildr-node
jar file in hildr/hildr-node/build/libs
You will need three things to run hildr-node
:
Next, you'll need to install a Optimism L2 Execution Engine, which is the equivalent to the Execution Client on the OP Stack. Available options include:
We'll use the reference implementation of the Optimism Execution Engine maintained by OP Labs, the op-geth
.
The op-geth
can be built from source or pulled from a Docker image available on Google Cloud.
We'll run it by docker image.
.env
fileThere has a .env.default file in the ./docker
directory. Copy it as .env
and modify the fields value below:
# Set the network value to `devnet` in the configuration.
NETWORK=optimism-sepolia
# The HTTP RPC endpoint of an L1 node. Generate by Alchemy.com
L1_RPC_URL=https://eth-goerli.g.alchemy.com/v2/<Alchemy App Key>
# The WebSocket RPC endpoint of an L1 node. Generate by Alchemy.com
L1_WS_RPC_URL=wss://eth-goerli.g.alchemy.com/v2/<Alchemy App Key>
# JWT secret for the L2 engine API
JWT_SECRET=bf549f5188556ce0951048ef467ec93067bc4ea21acebe46ef675cd4e8e015ff
# The exeuction client Auth RPC port.
EXECUTION_CLIENT_AUTH_RPC_PORT=5551
# The execution client RPC port.
EXECUTION_CLIENT_RPC_PORT=5545
# The execution client WebSocket port.
EXECUTION_CLIENT_WS_PORT=5546
You also can run a hildr-node on devnet
./gradlew build
For the latest javadocs for the main
branch, run ./gradlew javadoc
and open
the document under the hildr-node/build/docs/javadoc/index.html
in your browser.
./gradlew test
Next copy .env.default
to .env
cd docker/
cp .env.default .env
In the .env
file, modify the L1_RPC_URL
field to contain a valid Ethereum RPC. For the Optimism and Base testnets, this must be a Goerli RPC URL. This RPC can either be from a local node, or a provider such as Alchemy or Infura.
By default, the NETWORK
field in .env
is optimism-goerli
, however base-goerli
is also supported.
Start the docker containers
docker compose up -d
The docker setup contains a Grafana dashboard. To view sync progress, you can check the dashboard at http://localhost:3000
with the username hildr
and password passw0rd
. Alternatively, you can view Hildr's logs by running docker logs hildr-node --follow
.
To help hildr grow, follow Contributing to hildr.