Professional-grade, multi-chain reward event scanner with scheduled automation, JSON reporting, and webhook delivery.
- Multi-chain scanning (Base, Optimism, Arbitrum, Moonbeam)
- Daily scheduled scans via GitHub Actions
- JSON report generation with timestamps
- Webhook notifications (Discord, Slack, custom)
- Production-ready configuration and docs
multi-chain-reward-scanner/
.github/workflows/ automation + CI
src/scan.js main scanner logic
reports/ generated reports (JSON)
sample_reports/ sample output
.env.example configuration template
- Node.js 24+
- npm
Professional landing page is available under docs/.
Steps:
- GitHub → Settings → Pages → Source: Deploy from branch.
- Select
mainand/docs. - Save. Your page will be live at:
https://adrijan-petek.github.io/multi-chain-reward-scanner/
npm installcopy .env.example .envUpdate .env with RPC URLs and per-chain contract lists.
npm run scan:oncenpm run scan:dry.env.example supports per-chain reward contracts:
REWARD_CONTRACTS_BASE=0x...
REWARD_CONTRACTS_OPTIMISM=0x...
REWARD_CONTRACTS_ARBITRUM=0x...
REWARD_CONTRACTS_MOONBEAM=0x...
Other settings:
SCAN_BLOCK_WINDOW(default 500)SCAN_WEBHOOK_URL(optional)REPORT_DIR(defaultreports)
Reports are written to reports/report-<timestamp>.json. See sample_reports/report-sample.json for structure.
GitHub Actions:
.github/workflows/daily-scan.ymlruns daily on a cron schedule.github/workflows/ci.ymlruns a dry scan on every push/PR
BASE_RPCOP_RPCARBITRUM_RPCMOONBEAM_RPCREWARD_CONTRACTS_BASEREWARD_CONTRACTS_OPTIMISMREWARD_CONTRACTS_ARBITRUMREWARD_CONTRACTS_MOONBEAM
Optional:
SCAN_BLOCK_WINDOWSCAN_WEBHOOK_URL
If SCAN_WEBHOOK_URL is set, the full report JSON is posted after each run.
- Lower
SCAN_BLOCK_WINDOWif RPC providers rate-limit requests. - Ensure contracts exist on the chain you scan.
- Use an archival RPC for historical lookbacks.
MIT
