Private Ethereum testnet with geth + lighthouse across multiple VMs. Nodes peer via shared genesis.
Telescope ships metrics and logs to monitoring.
./scripts/generate-genesis.shAfter genesis generation, get the pubkey from node-1's key:
docker run --rm -v $(pwd)/genesis/nodekeys:/keys ethereum/client-go:v1.15.2 \
bootnode -nodekey=/keys/node-1.key -writeaddresscd terraform/environments/testnet
cp terraform.tfvars.example terraform.tfvars
# set bootnode_pubkey from step 2
terraform init && terraform apply| Port | Service |
|---|---|
| 8545 | JSON-RPC |
| 5052 | Lighthouse API |
| 4000 | Blockscout |
| 3000 | Grafana |
| 9090 | Prometheus |
# check peers
ssh ubuntu@<IP> 'docker exec geth geth attach --exec "admin.peers.length"'
# check blocks
curl -s http://<RPC_IP>:8545 -X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","id":1}'The benchmark workflow lives under scripts/benchmark/README.md.
It benchmarks the deployed RPC endpoint, records chain progression separately, stores raw results under results/, and generates side-by-side comparison reports under reports/.
terraform destroy