Skip to main content

Relay Binary Configuration

This document describes the configuration options for the Symbiotic Relay binary, which manages validator sets and performs signature aggregation for blockchain consensus systems.

YAML Configuration Structure

The relay binary uses a YAML configuration file with the following main sections:

Core Configuration

# Chain URLs for EVM client connections
chain_urls:
- "https://ethereum-rpc-url"
- "https://backup-rpc-url"

# Driver contract address (ValSetDriver)
driver_address:
chain_id: 1
address: "0x..."

# Request timeout for EVM operations
request_timeout: "30s"

# Node roles (can be combined)
signer: true # Signs validator sets
aggregator: true # Aggregates signatures
committer: true # Commits to blockchain

# Polling interval for epoch detection
polling_interval: "10s"

Network Configuration

The relay automatically retrieves network configuration from the ValSetDriver contract, including:

  • Voting Power Providers: Cross-chain addresses that provide validator voting power data
  • Keys Provider: Contract address for validator cryptographic keys
  • Replicas: Settlement contract addresses for validator set commitments
  • Verification Type: Signature aggregation method (ZK or Simple)
  • Validator Constraints: Maximum voting power, minimum inclusion threshold, max validator count
  • Key Requirements: Required cryptographic key tags and quorum thresholds

ValSetDriver and Settlement

ValSetDriver Configuration

The ValSetDriver contract serves as the central configuration source for the relay network.

Key parameters managed by ValSetDriver:

  • Epoch Management: Duration and timing of validator set epochs
  • Voting Power Providers: Contracts that determine validator voting power
  • Settlement Replicas: Target contracts for validator set commitments
  • Verification Parameters: Cryptographic verification settings

Settlement Integration

The relay can commit validator sets to one or multiple settlement contracts (replicas).

Settlement configuration includes:

  • Cross-chain addresses: Chain ID and contract address pairs
  • Verification type: ZK proofs or simple aggregation
  • Quorum thresholds: Minimum voting power required for commitment

Secret Key Management

Key Provider Interface

The relay uses a KeyProvider interface for cryptographic operations

Supported Key Types

The relay supports:

  • BLS BN254: For signature aggregation and ZK proofs
  • ECDSA secp256k1: For standard Ethereum signatures

Key Configuration

key_provider:
type: "file" | "hardware" | "remote"
config:
# Provider-specific configuration
path: "/path/to/keystore"
password_file: "/path/to/password"

Other Parameters

Performance Tuning

# EVM client configuration
evm_client:
request_timeout: "30s"
max_retries: 3
retry_delay: "1s"

# Repository configuration
repository:
type: "badger" | "memory"
path: "/data/relay"

Monitoring and Metrics

# Metrics configuration
metrics:
enabled: true
address: ":8080"
path: "/metrics"

# Logging configuration [9](#header-9)
log:
level: "info"
format: "json"

Node Role Configuration

The relay supports three primary node types that can be combined:

  • Signer Nodes: Create signatures for validator sets using private keys
  • Aggregator Nodes: Collect signatures and generate aggregation proofs
  • Committer Nodes: Submit validator sets to settlement contracts

Network Discovery

# P2P networking
p2p:
listen_address: "/ip4/0.0.0.0/tcp/9000"
bootstrap_peers:
- "/ip4/bootstrap1.example.com/tcp/9000/p2p/..."

Example Configuration

chain_urls:
- "https://eth-mainnet.g.alchemy.com/v2/your-api-key"
driver_address:
chain_id: 1
address: "0x1234567890123456789012345678901234567890"
request_timeout: "30s"
polling_interval: "10s"

# Node capabilities
signer: true
aggregator: true
committer: false

# Key management
key_provider:
type: "file"
config:
keystore_path: "/etc/relay/keystore"
password_file: "/etc/relay/password"

# Storage
repository:
type: "badger"
path: "/var/lib/relay/data"

# Monitoring
metrics:
enabled: true
address: ":8080"
log:
level: "info"