{"id":13634663,"url":"https://github.com/eigerco/beerus","last_synced_at":"2026-01-16T23:04:39.950Z","repository":{"id":63560454,"uuid":"563865519","full_name":"eigerco/beerus","owner":"eigerco","description":"A stateless trustless Starknet light client in Rust 🦀","archived":false,"fork":false,"pushed_at":"2025-04-01T17:12:47.000Z","size":15329,"stargazers_count":260,"open_issues_count":5,"forks_count":88,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-14T07:05:37.145Z","etag":null,"topics":["ethereum","library","lightclient","starknet","storage-proof"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/eigerco.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":"2022-11-09T13:59:01.000Z","updated_at":"2025-04-07T15:27:34.000Z","dependencies_parsed_at":"2023-10-02T21:41:49.439Z","dependency_job_id":"bb0816ae-23ff-46b5-914a-9d0a9cdd16c3","html_url":"https://github.com/eigerco/beerus","commit_stats":null,"previous_names":["keep-starknet-strange/beerus"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigerco%2Fbeerus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigerco%2Fbeerus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigerco%2Fbeerus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigerco%2Fbeerus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eigerco","download_url":"https://codeload.github.com/eigerco/beerus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249565247,"owners_count":21292427,"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":["ethereum","library","lightclient","starknet","storage-proof"],"created_at":"2024-08-02T00:00:29.134Z","updated_at":"2025-04-18T23:32:33.015Z","avatar_url":"https://github.com/eigerco.png","language":"Rust","readme":"### UPDATE: 2025-02-07\n\n*Hey everyone,*\n\n*We wanted to share that the team at Eiger will be putting development on Beerus on hold for now.*\n\n*With Starknet’s work on consensus and zk proof verification still in progress, we believe it’s best to pause Beerus until the specs are finalized.\nWe’ve truly enjoyed working on Beerus and are incredibly grateful to everyone who’s been part of the journey so far. Thank you for your support, insights, and contributions! We’re excited for what’s ahead.*\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"etc/beerus.png\" height=\"250\" /\u003e\n  \u003cdiv align=\"center\"\u003e\n\n  [![check-job-status](https://github.com/eigerco/beerus/actions/workflows/check.yml/badge.svg)](https://github.com/eigerco/beerus/actions/workflows/check.yml)\n\n  \u003c/div\u003e\n  \u003ch1\u003eBeerus\u003c/h1\u003e\n\n  Beerus is a stateless and (soon to be completely) trustless Starknet Light Client.\n\u003c/div\u003e\n\n## Project updates\n\nAt the beginning of 2024 [Eiger](https://www.eiger.co/) took over the ownership of the Beerus repository and leadership of the project. Beerus was started by the Starkware Exploration Team and we are grateful for their trust and the excellent work they have done.\n\nOne of our goals is to integrate Beerus into web-based wallets, enabling users to switch seamlessly to a light client mode. This transition is crucial for those who prefer not to rely on untrusted RPC providers, a critical step to trustless operation.\n\nWe post development updates on the [Telegram channel](https://t.me/BeerusStarknet)\n\n* 2025-JAN-21: Switch to L2 network (instead of L1) and release [v0.7.0](https://github.com/eigerco/beerus/releases/tag/v0.7.0).\n* 2024-AUG-28: Migrate to the [Starknet v0.7.1 OpenRpc spec](https://github.com/starkware-libs/starknet-specs/tree/v0.7.1).\n* 2024-JUN-18: \"Beerus Reborn\": brand new Beerus with RPC Codegen, Stateless Execution, State Proof Verification, release [v0.5.0](https://github.com/eigerco/beerus/releases/tag/v0.5.0)\n* 2024-FEB-29: Migrate to the [Starknet v0.6.0 OpenRPC spec](https://github.com/starkware-libs/starknet-specs/tree/v0.6.0)\n* 2024-JAN-17: [Blog: Eiger takes responsibility over Beerus](https://www.eiger.co/blog/eiger-taking-over-ownership-for-beerus-working-on-starknet-light-clients)\n\n## Getting Started\n\n### Running Beerus for the first time\n\nCopy the configuration file from `etc/conf/beerus.toml` and set up the RPC provider URLs in the copy.\nMake sure that providers are compatible. Read more about providers [here](#rpc-providers)\n\nThen run:\n```bash\ncargo run --release -- -c ./path/to/config.toml\n```\n\nOnce Beerus has started to verify that it is up and running, try this request:\n```\ncurl -H 'Content-type: application/json' -d'{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"starknet_getStateRoot\",\n    \"params\": [],\n    \"id\": 1\n}' http://127.0.0.1:3030\n```\n\nThe successful result should look similar to the one below:\n```\n{\"jsonrpc\":\"2.0\",\"result\":\"0x539895aff28be4958188c1d4e8e68ee6772bdd49dd9362a4fbb189e61c54ff1\",\"id\":1}\n```\n\n### Configuration\n\n| field   | example | description |\n| ----------- | ----------- | ----------- |\n| starknet_rpc | https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_7/{YOUR_API_KEY} | Starknet service provider URL |\n| gateway_url | https://alpha-mainnet.starknet.io | `OPTIONAL` Feeder Gateway base URL |\n| data_dir | tmp | `OPTIONAL` location to store both L1 and L2 data |\n| poll_secs | 5 | `OPTIONAL` seconds to wait for querying sn state, min = 1 and max = 3600 |\n| rpc_addr | 127.0.0.1:3030 | `OPTIONAL` local address to listen for rpc reqs |\n\n#### RPC provider\nBeerus relies on Starknet RPC service provider and on Feeder Gateway URL.\n\n##### Starknet RPC endpoint\nBeerus expects serving the [v0.7.1 of the Starknet OpenRPC specs](https://github.com/starkware-libs/starknet-specs/tree/v0.7.1).\n\nStarknet RPC provider must also support the [Pathfinder's extension API](https://github.com/eqlabs/pathfinder#pathfinder-extension-api) `pathfinder_getProof` endpoint. \n\nYou can check if the provider is compatible by running this command:\n```bash\n# This is an example RPC url. Use your RPC provider url to check if the node is compatible.\nSTARKNET_RPC_URL=\"https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/{YOUR_API_KEY}\"\ncurl --request POST \\\n     --url $STARKNET_RPC_URL \\\n     --header 'content-type: application/json' \\\n     --data '\n{\n  \"id\": 1,\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"pathfinder_getProof\",\n  \"params\": [\n    {\n      \"block_number\": 56072\n    },\n    \"0x07cb0dca5767f238b056665d2f8350e83a2dee7eac8ec65e66bbc790a4fece8a\",\n    [\n        \"0x01d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470\"\n    ]\n  ]\n}\n'\n```\n\nIf you get a response similar to the one below, then the provider is **not compatible**.\n```\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"error\": {\n    \"code\": -32601,\n    \"message\": \"method 'pathfinder_getProof' not found\"\n  }\n}\n```\n\nWe recommend using one of these providers:\n- [Alchemy](https://docs.alchemy.com/reference/starknet-api-faq#what-versions-of-starknet-api-are-supported)\n- [Chainstack](https://docs.chainstack.com/docs/starknet-tooling)\n- [Reddio](https://docs.reddio.com/guide/node/starknet.html#grab-starknet-sepolia-endpoint)\n\nMore API providers can be found [here](https://docs.starknet.io/documentation/tools/api-services/).\n\n## Development\n\n#### Build\n\n```bash\ncargo build --release\n```\n\n#### Test\n\n```bash\ncargo test\n\n## Run integration tests against live endpoint\nexport STARKNET_MAINNET_URL=https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_7/${ALCHEMY_API_KEY}\nexport STARKNET_SEPOLIA_URL=https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/${ALCHEMY_API_KEY}\nBEERUS_TEST_RUN=1 cargo test\n```\n\n#### Docker\n\n```bash\ndocker build . -t beerus\n```\n\n```bash\ndocker run -e STARKNET_RPC=\u003carg\u003e -it beerus\n```\n\n#### Examples\n\n```bash\nALCHEMY_API_KEY='YOURAPIKEY' cargo run --release --example call\nALCHEMY_API_KEY='YOURAPIKEY' cargo run --release --example state\n```\n\n## Security\n\nBeerus follows good practices of security, but 100% security cannot be assured.\nBeerus is provided **\"as is\"** without any **warranty**. Use at your own risk.\n","funding_links":[],"categories":["Applications","Rust"],"sub_categories":["Blockchain"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feigerco%2Fbeerus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feigerco%2Fbeerus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feigerco%2Fbeerus/lists"}