mirror of
https://github.com/hanzoai/bootnode.git
synced 2026-09-30 20:46:32 +00:00
- Add brand assets and logos - Add KMS integration for secure key management - Add infrastructure configs (cloud providers, monitoring) - Add indexer service with documentation - Update K8s deployments and ingress - Enhance dashboard pages (analytics, assets, infrastructure) - Update auth and API components - Add .gitignore for embedded repos
Bootnode Indexer
Multi-chain blockchain indexer for the Bootnode platform. Forked from luxfi/indexer.
Features
- 100+ Chain Support: Indexes data from Ethereum, Solana, Bitcoin, and 97+ other chains
- High Performance: Optimized for high-throughput indexing with parallel processing
- DataStore Integration: Writes indexed data to ClickHouse for fast analytics queries
- Protocol Indexing: Supports 50+ DeFi, NFT, and bridge protocols
- Real-time Events: Publishes events to RabbitMQ for webhook delivery
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ Bootnode Indexer │
├─────────────────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ EVM │ │ Solana │ │ Bitcoin │ │ Lux │ │
│ │ Indexer │ │ Indexer │ │ Indexer │ │ Native │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ └─────────────┴─────────────┴─────────────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ Manager │ │
│ └──────┬──────┘ │
├───────────────────────────┼─────────────────────────────────────┤
│ Storage Layer │ │
│ ┌────────────┐ ┌────────┴───────┐ ┌───────────────┐ │
│ │ PostgreSQL │ │ DataStore │ │ RabbitMQ │ │
│ │ (Metadata) │ │ (ClickHouse) │ │ (Events) │ │
│ └────────────┘ └────────────────┘ └───────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Supported Chains
EVM Chains
- Ethereum (mainnet, sepolia, holesky)
- Arbitrum (one, nova, sepolia)
- Base (mainnet, sepolia)
- Optimism (mainnet, sepolia)
- Polygon (PoS, zkEVM)
- zkSync Era
- Scroll
- Linea
- BNB Chain (mainnet, opBNB)
- Avalanche C-Chain
- Gnosis
- Celo
- Blast
- Mantle
- Mode
- Zora
- And 50+ more...
Non-EVM Chains
- Solana (mainnet, devnet)
- Bitcoin (mainnet, testnet)
- Aptos
- Starknet
- Flow
- Tron
- TON
Lux Native
- C-Chain (EVM)
- P-Chain (Platform/Staking)
- X-Chain (Assets/DAG)
Configuration
Configuration is done via config/chains.yaml:
ethereum:
mainnet:
chain_id: 1
name: "Ethereum Mainnet"
type: evm
rpc: "${ETH_MAINNET_RPC}"
enabled: true
protocols:
- uniswap_v3
- aave_v3
- seaport
Environment Variables
# Database
DATABASE_URL=postgres://user:pass@localhost:5432/bootnode
DATASTORE_URL=clickhouse://user:pass@localhost:8123/bootnode
# Message Queue
RABBITMQ_URL=amqp://user:pass@localhost:5672/
# Cache
REDIS_URL=redis://localhost:6379/1
# Settings
CONFIG_PATH=/app/config/chains.yaml
LOG_LEVEL=info
MAX_CHAINS=100
BATCH_SIZE=1000
API Endpoints
| Endpoint | Description |
|---|---|
GET /health |
Health check |
GET /stats |
Aggregate indexing stats |
GET /chains |
Per-chain stats |
GET /chain/{id} |
Individual chain stats |
GET /metrics |
Prometheus metrics |
Running Locally
# With Go
go run ./cmd/multichain --config config/chains.yaml
# With Docker
docker build -t bootnode/indexer .
docker run -p 5000:5000 \
-e DATABASE_URL=... \
-e DATASTORE_URL=... \
bootnode/indexer
Development
# Install dependencies
go mod download
# Run tests
go test ./...
# Build
go build -o indexer ./cmd/multichain
# Run
./indexer --config config/chains.yaml
Adding New Chains
- Add chain config to
config/chains.yaml - If new chain type, create adapter in
multichain/ - Implement
ChainIndexerinterface - Add schema migration if needed
License
BSD-3-Clause