1- # Common configuration (all modes)
2- SOURCE_RPC_URL = https://eth-sepolia.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY
1+ # ROFL Header Oracle - Multi-Chain Configuration
2+ # ===============================================
3+ # Each chain runs as a separate container (oracle-base, oracle-eth, oracle-arb).
4+ # To enable/disable a chain, comment/uncomment its service in compose.yaml.
5+ # If a chain's service is enabled, its RPC URL is REQUIRED.
6+
7+ # ===========================================
8+ # SHARED CONFIGURATION (all chains)
9+ # ===========================================
310TARGET_RPC_URL = https://testnet.sapphire.oasis.io
4- ROFL_ADAPTER_ADDRESS = YOUR_ROFL_ADAPTER_ADDRESS # ROFLAdapter contract address on Sapphire
5- REQUEST_TIMEOUT = 30 # HTTP request timeout in seconds
6- RETRY_COUNT = 3 # Number of retry attempts for failed operations
11+ ROFL_ADAPTER_ADDRESS = YOUR_ROFL_ADAPTER_ADDRESS
712
813# Oracle mode: event_listener, push, watcher, or token_watcher
914ORACLE_MODE = event_listener
1015
11- # Logging configuration
12- LOG_LEVEL = INFO # DEBUG, INFO, WARNING, ERROR, CRITICAL
13- JSON_LOGS = false # Enable JSON-formatted structured logging (recommended for production)
14-
15- # Event Listener Mode Configuration (ORACLE_MODE=event_listener)
16- SOURCE_CONTRACT_ADDRESS = 0x85BfE05492aFC3D04Ff3B2ca6771ACF6f853d90d # BlockHeaderRequester contract
17- POLLING_INTERVAL = 12 # Seconds between event checks
18- LOOKBACK_BLOCKS = 100 # Blocks to look back on startup
19-
20- # Push Mode Configuration (ORACLE_MODE=push)
21- PUSH_INTERVAL = 60 # Seconds between block pushes
22- PUSH_BATCH_SIZE = 20 # Max blocks to push per iteration
23-
24- # Watcher Mode Configuration (ORACLE_MODE=watcher)
25- WATCH_ADDRESSES = 0xAddress1,0xAddress2 # Comma-separated addresses to watch
26- SCAN_INTERVAL = 60 # Seconds between scanning for interactions
27- WATCHER_BATCH_SIZE = 50 # Max blocks to scan per iteration
28- # LOOKBACK_BLOCKS=100 # Also used in watcher mode
29- ENABLE_INTERNAL_TX_DETECTION = false # Enable internal transaction detection (requires archive node with debug API)
30-
31- # Token Watcher Mode Configuration (ORACLE_MODE=token_watcher)
32- TOKEN_ADDRESSES = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 # Comma-separated ERC20 token contract addresses (e.g., USDC, USDT)
33- RECIPIENT_ADDRESSES = 0xYourAddress1,0xYourAddress2 # Comma-separated recipient addresses to watch for
34- SCAN_INTERVAL = 5 # Seconds between scans (default: 5 for fast detection)
35- # Note: On first startup, begins monitoring from current block (no historical scan)
36- # Note: Scans all new blocks since last check (no batch size limit)
37-
38- # Local mode configuration (for testing without ROFL)
39- # Only required when running with --local flag or compose.local.yaml
40- LOCAL_PRIVATE_KEY = 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
16+ # HTTP settings
17+ REQUEST_TIMEOUT = 30
18+ RETRY_COUNT = 3
19+
20+ # Logging
21+ LOG_LEVEL = INFO
22+ JSON_LOGS = false
23+
24+ # ===========================================
25+ # BASE CHAIN (Chain ID: 8453) → oracle-base
26+ # ===========================================
27+ BASE_SOURCE_RPC_URL = https://base-mainnet.g.alchemy.com/v2/YOUR_KEY
28+
29+ # Event listener mode only
30+ # BASE_SOURCE_CONTRACT_ADDRESS=0x... # BlockHeaderRequester on Base
31+ # BASE_POLLING_INTERVAL=2
32+ # BASE_LOOKBACK_BLOCKS=100
33+
34+ # Watcher mode only
35+ # BASE_WATCH_ADDRESSES=0xAddress1,0xAddress2
36+ # BASE_SCAN_INTERVAL=2
37+ # BASE_WATCHER_BATCH_SIZE=50
38+ # BASE_ENABLE_INTERNAL_TX_DETECTION=false
39+
40+ # Push mode only
41+ # BASE_PUSH_INTERVAL=2
42+ # BASE_PUSH_BATCH_SIZE=20
43+
44+ # Token watcher mode only (also uses SCAN_INTERVAL from watcher)
45+ # BASE_TOKEN_ADDRESSES=0xTokenAddress
46+ # BASE_RECIPIENT_ADDRESSES=0xRecipient1,0xRecipient2
47+ # BASE_MAX_BLOCKS_PER_SCAN=10
48+
49+ # ===========================================
50+ # ETHEREUM (Chain ID: 1) → oracle-eth
51+ # ===========================================
52+ ETH_SOURCE_RPC_URL = https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
53+
54+ # Event listener mode only
55+ # ETH_SOURCE_CONTRACT_ADDRESS=0x... # BlockHeaderRequester on Ethereum
56+ # ETH_POLLING_INTERVAL=12
57+ # ETH_LOOKBACK_BLOCKS=100
58+
59+ # Watcher mode only
60+ # ETH_WATCH_ADDRESSES=0xAddress1,0xAddress2
61+ # ETH_SCAN_INTERVAL=12
62+ # ETH_WATCHER_BATCH_SIZE=50
63+ # ETH_ENABLE_INTERNAL_TX_DETECTION=false
64+
65+ # Push mode only
66+ # ETH_PUSH_INTERVAL=12
67+ # ETH_PUSH_BATCH_SIZE=20
68+
69+ # Token watcher mode only (also uses SCAN_INTERVAL from watcher)
70+ # ETH_TOKEN_ADDRESSES=0xTokenAddress
71+ # ETH_RECIPIENT_ADDRESSES=0xRecipient1,0xRecipient2
72+ # ETH_MAX_BLOCKS_PER_SCAN=10
73+
74+ # ===========================================
75+ # ARBITRUM (Chain ID: 42161) → oracle-arb
76+ # ===========================================
77+ ARB_SOURCE_RPC_URL = https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY
78+
79+ # Event listener mode only
80+ # ARB_SOURCE_CONTRACT_ADDRESS=0x... # BlockHeaderRequester on Arbitrum
81+ # ARB_POLLING_INTERVAL=1
82+ # ARB_LOOKBACK_BLOCKS=100
83+
84+ # Watcher mode only
85+ # ARB_WATCH_ADDRESSES=0xAddress1,0xAddress2
86+ # ARB_SCAN_INTERVAL=1
87+ # ARB_WATCHER_BATCH_SIZE=50
88+ # ARB_ENABLE_INTERNAL_TX_DETECTION=false
89+
90+ # Push mode only
91+ # ARB_PUSH_INTERVAL=1
92+ # ARB_PUSH_BATCH_SIZE=20
93+
94+ # Token watcher mode only (also uses SCAN_INTERVAL from watcher)
95+ # ARB_TOKEN_ADDRESSES=0xTokenAddress
96+ # ARB_RECIPIENT_ADDRESSES=0xRecipient1,0xRecipient2
97+ # ARB_MAX_BLOCKS_PER_SCAN=10
98+
99+ # ===========================================
100+ # LOCAL MODE (testing without ROFL)
101+ # ===========================================
102+ LOCAL_PRIVATE_KEY = 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
0 commit comments