cargo build --release
# insert valid api keys
./target/release/beerus -c examples/conf/beerus.json
# wait for server to start
hurl examples/rpc/starknet_getStateRoot.hurl
Beerus relies on TWO untrusted RPC endpoints. As these are untrusted they will
typically not be nodes run on your local host or your local network. These
untrusted RPC providers must adhere to both the l1 eth_getProof
endpoint
as well as the l2 pathfinder_getProof
endpoint. For this we recommend using
Alchemy as your untrusted L2 node provider.
NOTE: we rely on helios for both valid checkpoint values and consensus rpc urls
field | example | description |
---|---|---|
network | MAINNET or GOERLI | network to query |
eth_execution_rpc | https://eth-mainnet.g.alchemy.com/v2/YOURAPIKEY | untrusted l1 node provider url |
starknet_rpc | https://starknet-mainnet.g.alchemy.com/v2/YOURAPIKEY | untrusted l2 node provider url |
data_dir | tmp | OPTIONAL location to store both l1 and l2 data |
poll_secs | 5 | OPTIONAL seconds to wait for querying sn state |
rpc_addr | 127.0.0.1:3030 | OPTIONAL local address to listen for rpc reqs |
fee_token_addr | 0x049d36...e004dc7 | OPTIONAL fee token to check for getBalance |
cargo build --all --release
cargo test --all
docker build . -t beerus
docker run -e NETWORK=<arg> -e ETH_EXECUTION_RPC=<arg> -e STARKNET_RPC=<arg> -it beerus
cd examples/core
cargo run --example basic
cargo run --example call
Dependencies:
- npm
- CORS bypass
- local pathfinder node at
http://localhost:9545
- execution env var -
ETH_EXECUTION_RPC
cd examples/wasm
# install node deps
npm i
# build webpack & wasm modules
npm run build
# run example
./run.sh
# navigate browser to http://localhost:8080
# open developer console
Starknet endpoints (in compliance with Starknet specs):
Endpoint | Supported |
---|---|
starknet_getBlockWithTxHashes |
✅ |
starknet_getBlockWithTxs |
✅ |
starknet_getStateUpdate |
✅ |
starknet_getStorageAt |
✅ |
starknet_getTransactionByHash |
✅ |
starknet_getTransactionByBlockIdAndIndex |
✅ |
starknet_getTransactionReceipt |
✅ |
starknet_getClass |
✅ |
starknet_getClassHashAt |
✅ |
starknet_getClassAt |
✅ |
starknet_getBlockTransactionCount |
✅ |
starknet_call |
✅ |
starknet_estimateFee |
✅ |
starknet_estimateFeeSingle |
✅ |
starknet_blockNumber |
✅ |
starknet_blockHashAndNumber |
✅ |
starknet_chainId |
✅ |
starknet_pendingTransactions |
✅ |
starknet_syncing |
✅ |
starknet_syncing |
✅ |
starknet_getEvents (not validated) |
✅ |
starknet_getNonce |
✅ |
starknet_addDeclareTransaction |
❌ |
starknet_addDeployAccountTransaction |
❌ |
starknet_addInvokeTransaction |
❌ |
starknet_getProof |
✅ |
starknet_getBalance |
✅ |
starknet_getStateRoot |
✅ |
Reach out to the maintainer at one of the following places:
- GitHub Discussions
- Contact options listed on this GitHub profile
Beerus follows good practices of security, but 100% security cannot be assured. Beerus is provided "as is" without any warranty. Use at your own risk.
_For more information and to report security issues, please refer to our security documentation.
- Huge props to A16z for their work on helios.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!