Helios is a trustless, efficient Ethereum light client that converts an untrusted centralized RPC endpoint into a safe, unmanipulable local RPC. This guide explains how to integrate Helios with ΞTHΛURΛ for enhanced security and decentralization.
- Trustless Verification: Helios cryptographically verifies all data from the RPC provider
- Security: Protects against malicious or compromised RPC providers
- Privacy: Reduces reliance on centralized infrastructure
- Fast Sync: Syncs in seconds using light client protocol
- Lightweight: Minimal storage and resource requirements
- Local RPC: Provides a local JSON-RPC endpoint at
http://127.0.0.1:8545
Untrusted RPC Provider → Helios Light Client → Verified Local RPC → Your DApp
(Alchemy, Infura) (Cryptographic (127.0.0.1:8545) (ΞTHΛURΛ)
Verification)
Helios uses Ethereum's consensus layer to verify execution layer data, ensuring that all responses from the RPC provider are cryptographically correct.
# Install heliosup (Helios installer)
curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bash
# Reload your shell
source ~/.bashrc # or source ~/.zshrc
# Install Helios
heliosup# Install from source
cargo install helios --lockedhelios --version
# Should output: cli 0.5.1 (or later)Edit your .env file:
# Your existing RPC provider (will be verified by Helios)
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY
# Optional: Mainnet RPC
MAINNET_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEYThe project includes a helios-config.toml file with pre-configured settings for:
- Sepolia Testnet (development)
- Ethereum Mainnet (production)
- Holesky Testnet (alternative)
You can customize this file or use command-line options.
Checkpoints are the root of trust in Helios. They should be updated periodically (recommended: every 2 weeks).
- Visit https://sepolia.beaconcha.in
- Find the latest finalized epoch
- Click on the first slot of that epoch
- Copy the "Block Root" value
- Update in
helios-config.tomlor use with--checkpointflag
- Visit https://beaconcha.in
- Follow the same process as above
# Get instructions for updating checkpoint
./scripts/update-checkpoint.sh sepoliaStart Helios for Sepolia testnet:
# Make the script executable
chmod +x scripts/start-helios.sh
# Start Helios
./scripts/start-helios.sh sepoliaThis will:
- Check if Helios is installed
- Load your RPC configuration from
.env - Start a local RPC server at
http://127.0.0.1:8545 - Verify all data from your RPC provider
You can also start Helios manually with custom options:
# Sepolia with auto-checkpoint fallback
helios ethereum \
--network sepolia \
--execution-rpc $SEPOLIA_RPC_URL \
--consensus-rpc https://ethereum-sepolia-beacon-api.publicnode.com \
--load-external-fallback
# Mainnet with specific checkpoint
helios ethereum \
--network mainnet \
--execution-rpc $MAINNET_RPC_URL \
--consensus-rpc https://www.lightclientdata.org \
--checkpoint 0x85e6151a246e8fdba36db27a0c7678a575346272fe978c9281e13a8b26cdfa68Once Helios is running, update your configuration to use the local RPC:
Update .env:
SEPOLIA_RPC_URL=http://127.0.0.1:8545Then deploy as usual:
forge script script/Deploy.s.sol:DeployScript --rpc-url sepolia --broadcastUpdate frontend/.env:
VITE_RPC_URL=http://127.0.0.1:8545Note: The frontend will need to run on the same machine as Helios, or you'll need to configure Helios to accept remote connections:
helios ethereum \
--network sepolia \
--execution-rpc $SEPOLIA_RPC_URL \
--rpc-bind-ip 0.0.0.0 # Allow remote access (use with caution)helios ethereum \
--network sepolia \
--execution-rpc $SEPOLIA_RPC_URL \
--rpc-port 8546 # Use port 8546 instead of 8545Helios caches checkpoints for faster startup:
helios ethereum \
--network sepolia \
--execution-rpc $SEPOLIA_RPC_URL \
--data-dir ~/.helios/sepoliaEnable strict checking (errors if checkpoint is > 2 weeks old):
helios ethereum \
--network sepolia \
--execution-rpc $SEPOLIA_RPC_URL \
--strict-checkpoint-ageCreate or edit ~/.helios/helios.toml:
[sepolia]
consensus_rpc = "https://ethereum-sepolia-beacon-api.publicnode.com"
execution_rpc = "https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY"
checkpoint = "0x..."
rpc_port = 8545
rpc_bind_ip = "127.0.0.1"Then start with just:
helios ethereum --network sepoliaError: "Checkpoint is too old"
Solution: Update your checkpoint using the latest finalized epoch from beaconcha.in
# Use automatic fallback
helios ethereum --network sepolia --execution-rpc $SEPOLIA_RPC_URL --load-external-fallbackError: "Failed to connect to execution RPC"
Solution:
- Verify your RPC URL is correct in
.env - Check that your RPC provider supports
eth_getProofendpoint - Ensure you have a valid API key
Error: "Failed to sync"
Solution:
- Check your internet connection
- Try a different consensus RPC endpoint
- Verify the checkpoint is valid
Error: "Address already in use"
Solution: Either stop the existing process on port 8545 or use a different port:
helios ethereum --network sepolia --execution-rpc $SEPOLIA_RPC_URL --rpc-port 8546- Update Checkpoints Regularly: Update every 1-2 weeks for optimal security
- Use Reliable Consensus RPC: Choose a stable consensus layer endpoint
- Monitor Helios Logs: Watch for warnings or errors
- Backup Configuration: Keep your
helios-config.tomlbacked up - Test Before Production: Always test with Sepolia before using on mainnet
# Terminal 1: Start Helios
./scripts/start-helios.sh sepolia
# Terminal 2: Deploy contracts
make deploy-sepolia
# Terminal 3: Run frontend
cd frontend && npm run dev# Start Helios for mainnet
./scripts/start-helios.sh mainnet
# Deploy to mainnet (use with caution!)
make deploy-mainnet| Network | Chain ID | Consensus RPC | Checkpoint Source |
|---|---|---|---|
| Sepolia | 11155111 | https://ethereum-sepolia-beacon-api.publicnode.com | https://sepolia.beaconcha.in |
| Mainnet | 1 | https://www.lightclientdata.org | https://beaconcha.in |
| Holesky | 17000 | http://testing.holesky.beacon-api.nimbus.team | https://holesky.beaconcha.in |
- Helios GitHub
- Helios Documentation
- Ethereum Light Client Spec
- Beacon Chain Explorer (Mainnet)
- Beacon Chain Explorer (Sepolia)
- Checkpoint Trust: The initial checkpoint is the root of trust. Always verify it from multiple sources
- Consensus RPC: While Helios verifies data, use reputable consensus RPC providers
- Network Security: When exposing Helios RPC (
--rpc-bind-ip 0.0.0.0), use proper firewall rules - Regular Updates: Keep Helios updated to the latest version
Q: Do I need to run a full node? A: No! Helios is a light client that requires minimal resources.
Q: How much storage does Helios need? A: Very little - just 32 bytes per network for checkpoint caching.
Q: Can I use Helios in production? A: Yes, but ensure you keep checkpoints updated and monitor the service.
Q: Does Helios work with all RPC providers?
A: It works with any provider that supports eth_getProof (Alchemy, Infura, etc.)
Q: What's the performance impact? A: Minimal - Helios adds cryptographic verification but syncs in seconds.