Skip to content

Commit 4df146a

Browse files
authored
Merge pull request #14 from oasisprotocol/rube/multichain
feat: multichain header oracle
2 parents 759fac9 + 2dde101 commit 4df146a

22 files changed

Lines changed: 927 additions & 972 deletions

.env.example

Lines changed: 97 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,102 @@
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+
# ===========================================
310
TARGET_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
914
ORACLE_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

abis/BlockHeaderRequester.json

Lines changed: 0 additions & 128 deletions
This file was deleted.

0 commit comments

Comments
 (0)