Local Node
Run Vara.eth locally for development and debugging.
Local Node
For advanced development and debugging, you can run a local Vara.eth node in two modes:
- Node-only mode (recommended default) — connect your local node to an existing Ethereum Router (for example, Hoodi). No local Router deployment required.
- Full local stack — run local Ethereum + deploy Router yourself + connect node to it.
Prerequisites
Before starting, complete Tools Install (at minimum: ethexe CLI).
Mode 1: Node-Only (No Router Deployment)
Use this when you already have a Router address (for example on Hoodi).
ethexe run \
--ethereum-rpc "wss://hoodi-reth-rpc.gear-tech.io/ws" \
--ethereum-router "0xBC888a8B050B9B76a985d91c815d2c4f2131a58A" \
--rpc-port 9944Best Default for Docs Readers
Most developers do not need to deploy Router locally. Node-only mode is enough to inspect behavior, test RPC flows, and run integration checks against an existing network Router.
Mode 2: Full Local Stack (Deploy Router Yourself)
Use this when you want a fully isolated environment.
1) Start local Ethereum
anvil --port 8545 --block-time 22) Deploy Router/WVARA contracts
git clone https://github.com/gear-tech/gear.git
cd gear/ethexe/contracts
forge install
forge script script/Router.s.sol:RouterScript \
--rpc-url "ws://127.0.0.1:8545" \
--broadcast3) Get deployed Router proxy address
export ROUTER=$(jq -r '.transactions[] | select(.contractName=="TransparentUpgradeableProxy") | .contractAddress' \
broadcast/Router.s.sol/31337/run-latest.json | head -n1)
echo "$ROUTER"4) Run ethexe node against local Router
ethexe run \
--ethereum-rpc "ws://127.0.0.1:8545" \
--ethereum-router "$ROUTER" \
--rpc-port 9944Available Endpoints
Once running, these endpoints become available:
| Endpoint | Address | Description |
|---|---|---|
| Ethexe RPC | http://127.0.0.1:9944 | Main RPC endpoint for Vara.eth operations |
| Ethereum RPC | ws://127.0.0.1:8545 | Ethereum-compatible RPC (Anvil) |
| Router Contract | <your-router-address> | Router used by your node |
Quick Test
Verify the node is running:
# Check Ethexe RPC
curl http://127.0.0.1:9944 -X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# Check Ethereum RPC
cast block-number --rpc-url http://127.0.0.1:8545Advanced Configuration
Custom RPC Port
ethexe run \
--ethereum-rpc "wss://hoodi-reth-rpc.gear-tech.io/ws" \
--ethereum-router "0xBC888a8B050B9B76a985d91c815d2c4f2131a58A" \
--rpc-port 8080Disable P2P Networking
ethexe run \
--ethereum-rpc "wss://hoodi-reth-rpc.gear-tech.io/ws" \
--ethereum-router "0xBC888a8B050B9B76a985d91c815d2c4f2131a58A" \
--no-networkEnable Debug Logging
RUST_LOG=debug ethexe run \
--ethereum-rpc "wss://hoodi-reth-rpc.gear-tech.io/ws" \
--ethereum-router "0xBC888a8B050B9B76a985d91c815d2c4f2131a58A"Reset State
Stop the node and delete the local database to reset:
rm -rf ~/.ethexe/dbTroubleshooting
"Connection refused" on port 8545
→ Start Anvil manually: anvil --port 8545 (only for full local stack)
"Contract not found"
→ Re-deploy Router contracts and update --ethereum-router
Slow compilation
→ Use prebuilt ethexe binary if you do not need custom source changes
Switch Back to Testnet
To use the Hoodi testnet again:
- Stop your local node
- Run
ethexe txcommands with Hoodi RPC/router values (or put them into.ethexe.toml):ethexe tx query "$PROGRAM_ID" \ --ethereum-rpc "wss://hoodi-reth-rpc.gear-tech.io/ws" \ --ethereum-router "0xBC888a8B050B9B76a985d91c815d2c4f2131a58A" \ --sender "$SENDER"
→ Networks