{"id":19252149,"url":"https://github.com/optimism-java/hildr","last_synced_at":"2025-04-21T13:30:46.687Z","repository":{"id":166678270,"uuid":"641733856","full_name":"optimism-java/hildr","owner":"optimism-java","description":"Hildr is an OP Stack rollup client written in latest Java.","archived":false,"fork":false,"pushed_at":"2025-01-19T02:20:49.000Z","size":5121,"stargazers_count":43,"open_issues_count":30,"forks_count":16,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-01T13:37:55.189Z","etag":null,"topics":["op-lab","op-stack","optimism"],"latest_commit_sha":null,"homepage":"https://optimism-java.github.io/hildr-docs","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/optimism-java.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-17T04:02:49.000Z","updated_at":"2024-12-14T16:54:55.000Z","dependencies_parsed_at":"2023-12-15T11:23:47.730Z","dependency_job_id":"a2962e98-5062-4296-882e-72c9f32cab92","html_url":"https://github.com/optimism-java/hildr","commit_stats":null,"previous_names":["optimism-java/hildr"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimism-java%2Fhildr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimism-java%2Fhildr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimism-java%2Fhildr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimism-java%2Fhildr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/optimism-java","download_url":"https://codeload.github.com/optimism-java/hildr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250064518,"owners_count":21368920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["op-lab","op-stack","optimism"],"created_at":"2024-11-09T18:25:39.730Z","updated_at":"2025-04-21T13:30:42.990Z","avatar_url":"https://github.com/optimism-java.png","language":"Java","readme":"[![hildr CI](https://github.com/optimism-java/hildr/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/optimism-java/hildr/actions/workflows/build.yml)\n[![License](https://img.shields.io/badge/license-MIT-blue)](https://opensource.org/licenses/MIT)\n![Coverage](.github/badges/jacoco.svg)\n![Branches](.github/badges/branches.svg)\n\n# Hildr\n\nThis work is supported by an [Optimism governance grant](https://app.charmverse.io/op-grants/proposals?id=e5613e76-a26f-41e4-9f0d-4e2dbfccf5b8).\n\nHildr is an OP Stack rollup client written in Java 21 with GraalVM native.\n\nFollow the [spec](https://github.com/ethereum-optimism/optimism/blob/develop/specs/rollup-node.md)\n\n- [Rust](https://github.com/a16z/magi)\n- [Go](https://github.com/ethereum-optimism/optimism/tree/develop/op-node)\n\n## System requirements\nTo 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.\n\n## Running `hildr-node`\n\nFirst, use Docker start an `op-geth` container in hildr project root directory:\n\n```shell\ncd ./docker \u0026\u0026 docker compose -f docker/docker-compose.yml up op-geth\n```\n\n### Use shell\nThen, once op-geth has been started, start up the `hildr-node` in `hildr` project root directory:\n```shell\n./gradlew :hildr-node:build -x test \\\n\t\u0026\u0026 nohup java --enable-preview \\\n\t\t-cp hildr-node/build/libs/hildr-node-{version}.jar io.optimism.Hildr \\\n\t\t--network optimism-sepolia \\\n\t\t--jwt-secret $JWT_SECRET \\\n\t\t--l1-rpc-url $L1_RPC_URL \\\n\t\t--l1-ws-rpc-url $L1_WS_RPC_URL \\\n\t\t--l1-beacon-url $L1_BEACON_RPC_URL \\\n\t\t--l2-rpc-url $L2_RPC_URL \\\n\t\t--l2-engine-url $L2_AUTH_RPC_URL \\\n\t\t--rpc-port $HILDR_RPC_PORT \\ # Choose any available port.\n\t\t--log-level $LOG_LEVEL \\ # can be either: \"DEBUG\",\"TRACE\",\"INFO\",\"WARN\",\"ERROR\"\n\t\t--sync-mode full \u003el2-hildr-node.log 2\u003e\u00261 \u0026\n```\n\n### Use docker\n\nRunning a native hildr container on optimism-sepolia network:\n```shell\ndocker run -it ghcr.io/optimism-java/hildr:latest-native \\\n\t--network optimism-sepolia \\\n\t--jwt-secret $JWT_SECRET \\\n\t--l1-rpc-url $L1_RPC_URL \\\n\t--l1-ws-rpc-url $L1_WS_RPC_URL \\\n\t--l1-beacon-url $L1_BEACON_RPC_URL \\\n\t--l2-rpc-url $L2_RPC_URL \\\n\t--l2-engine-url $L2_AUTH_RPC_URL \\\n\t--rpc-port $HILDR_RPC_PORT \\\n\t--log-level $LOG_LEVEL \\ # can be either: \"DEBUG\",\"TRACE\",\"INFO\",\"WARN\",\"ERROR\"\n\t--sync-mode full\n```\n\nRunning a java hildr container on optimism-sepolia network:\n```shell\ndocker run -it ghcr.io/optimism-java/hildr:latest \\\n\t--network optimism-sepolia \\\n\t--jwt-secret $JWT_SECRET \\\n\t--l1-rpc-url $L1_RPC_URL \\\n\t--l1-ws-rpc-url $L1_WS_RPC_URL \\\n\t--l2-rpc-url $L2_RPC_URL \\\n\t--l2-engine-url $L2_AUTH_RPC_URL \\\n\t--rpc-port $HILDR_RPC_PORT \\\n\t--log-level $LOG_LEVEL \\ # can be either: \"DEBUG\",\"TRACE\",\"INFO\",\"WARN\",\"ERROR\"\n\t--sync-mode full\n```\n\n## Installing Hildr Node\n\n### Building `hildr-node` from source\n\n\nInstall `op-geth` via the `Makefile` in the workspace root:\n\n```shell\ngit clone git@github.com:optimism-java/hildr.git \\\ncd hildr \u0026\u0026 ./gradlew build -x test\n```\n\nThis command will generate the `hildr-node` jar file in `hildr/hildr-node/build/libs`\n\n## Running on Optimism Sepolia\n\nYou will need three things to run `hildr-node`:\n1. An archival L1 node, synced to the settlement layer of the OP Stack chain you want to sync (e.g. reth, geth, besu, nethermind, etc.)\n2. An Optimism Execution Engine (e.g. op-geth, op-reth, op-erigon, etc.)\n3. An instance of hildr-node.\nFor this example, we'll start an Optimism Sepolia Node.\n\n\n### Installing an Optimism Execution Engine\n\nNext, you'll need to install a [Optimism L2 Execution Engine](https://github.com/ethereum-optimism/optimism/blob/develop/specs/exec-engine.md), which is the equivalent to the Execution Client on the OP Stack.\nAvailable options include:\n1. [op-geth](https://github.com/ethereum-optimism/op-geth)\n2. [reth](https://github.com/paradigmxyz/reth)\n3. [op-erigon](https://github.com/testinprod-io/op-erigon)\n\nWe'll use the reference implementation of the Optimism Execution Engine maintained by OP Labs, the `op-geth`.\n\nThe `op-geth` can be built from source or pulled from a [Docker image available on Google Cloud](https://console.cloud.google.com/artifacts/docker/oplabs-tools-artifacts/us/images/op-geth).\n\nWe'll run it by docker image.\n\n### Modify `.env` file\n\nThere has a .env.default file in the `./docker` directory. Copy it as `.env` and modify the fields value below:\n\n```properties\n# Set the network value to `devnet` in the configuration.\nNETWORK=optimism-sepolia\n\n# The HTTP RPC endpoint of an L1 node. Generate by Alchemy.com\nL1_RPC_URL=https://eth-goerli.g.alchemy.com/v2/\u003cAlchemy App Key\u003e\n\n# The WebSocket RPC endpoint of an L1 node. Generate by Alchemy.com\nL1_WS_RPC_URL=wss://eth-goerli.g.alchemy.com/v2/\u003cAlchemy App Key\u003e\n\n# JWT secret for the L2 engine API\nJWT_SECRET=bf549f5188556ce0951048ef467ec93067bc4ea21acebe46ef675cd4e8e015ff\n\n# The exeuction client Auth RPC port.\nEXECUTION_CLIENT_AUTH_RPC_PORT=5551\n\n# The execution client RPC port.\nEXECUTION_CLIENT_RPC_PORT=5545\n\n# The execution client WebSocket port.\nEXECUTION_CLIENT_WS_PORT=5546\n\n```\n\n### Running devnet\n\nYou also can run a hildr-node on [devnet](./docs/devnet.md)\n\n## Build Hildr\n\n### Prerequisites\n- Install [GraalVM latest version](https://www.graalvm.org/latest/docs/getting-started/)\n\n### Build jar\n\n```shell\n./gradlew build\n```\n\n## Javadoc\n\nFor the latest javadocs for the `main` branch, run `./gradlew javadoc` and open\nthe document under the `hildr-node/build/docs/javadoc/index.html` in your browser.\n\n## Testing\n\n```\n./gradlew test\n```\n\n## Running from docker image\n\nNext copy `.env.default` to `.env`\n```sh\ncd docker/\ncp .env.default .env\n```\n\nIn 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.\n\nBy default, the `NETWORK` field in `.env` is `optimism-goerli`, however `base-goerli` is also supported.\n\nStart the docker containers\n```sh\ndocker compose up -d\n```\n\nThe 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`.\n\n## Contribution\nTo help hildr grow, follow [Contributing to hildr](CONTRIBUTING.md).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptimism-java%2Fhildr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foptimism-java%2Fhildr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptimism-java%2Fhildr/lists"}