Files
zeekay d55d0b03cb feat: comprehensive bootnode platform updates
- 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
2026-02-03 12:48:01 -08:00
..

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

  1. Add chain config to config/chains.yaml
  2. If new chain type, create adapter in multichain/
  3. Implement ChainIndexer interface
  4. Add schema migration if needed

License

BSD-3-Clause