evm-history
# build with local profile, without tests, with docker image build
# (!!!) Use java 21 to build, because lombok do not support java 23+
mvn clean install
# with tests, test using dev services, so no need to run any infra
mvn clean install -DskipTests=false
# run infra
cd {project-root}/src/main/docker
docker compose up -d
# run project from docker
docker compose -f project.yml up -d
# for runing project from IDE, just run io.evm.history.Main.main(String... args)
# Open dashboard
http://localhost:8080/
# stop the app from docker
cd {project-root}/src/main/docker
docker compose -f project.yml down
# stop the infra
docker compose down
# if you want the volumes also to be deleted
docker compose down -v
| Name | URL | Description |
|---|---|---|
| Dashboard | localhost:8080 |
Dashboard endpoint |
| Healthcheck | localhost:8080/q/health |
Healthcheck endpoint |
| Metrics | localhost:8080/q/metrics |
Metrics endpoint. Return metrics in 'Prometheus' format |
- top 10 contracts called in the transactions that make up a blocks (by amount of calls)

- For each top 10 contract calculate
- All RPC calls (blocks, receipts, contract code) are
batched. See: - Added
throttlingandretriesto address rate limits and service unavailability. See: - Data is
yearly partitioned, so we assume to be ok on performance even with whole blockchain data (testnet for sure). See: - Data is
indexed, so we assume to be ok on search performance even with whole blockchain data (testnet for sure). See: - Partial search indexed as
edge_ngram, so we assume to be ok on search performance even with whole blockchain data (testnet for sure). See:
- Switch contracts cache to Redis or DB calls
- Track other contract interactions from logs
- Get ABI and add tx ABI parsing
- Try to add contract code decompilation if there is no ABI available

