A comprehensive web interface for the RION Oracle Network — a BNB-native oracle system with provable data feeds, dispute resolution, and user insurance mechanisms.
RION Oracle App is a full-featured frontend for interacting with the RION Oracle Network on BNB Chain. The application provides tools for:
- Viewing and managing oracle data feeds across multiple asset classes (crypto, sports outcomes)
- Inspecting price history and feed integrity with cryptographic proof verification
- Participating in dispute resolution through community voting
- Managing prediction markets and game outcome tracking
- Accessing oracle SDK documentation and integration guides
- Receiving insurance compensation for losses due to bad oracle data
The app serves developers, traders, and oracle operators who need to interact with on-chain price feeds, verify data integrity through BLS signatures and Merkle proofs, and participate in the network's governance mechanisms.
- Provable Price Data — BLS signatures and Merkle proofs for cryptographic verification of every price update
- Live Feed Monitoring — Real-time price feeds for crypto assets (BNB, ETH, BTC, SOL, XRP, DOGE, LINK) and sports outcomes
- Public Dispute System — Challenge incorrect oracle reports with community voting and resolution
- User Insurance Vault — Track and claim compensation for losses caused by bad oracle data
- Receipt Verification — Inspect and prove oracle data integrity with on-chain receipts
- Prediction Markets — View and interact with prediction market contracts and outcomes
- SDK Integration — Documentation and examples for developers building on RION
- Explorer Dashboard — Browse contracts, transactions, and network status
- Wallet Integration — Full Web3 support via RainbowKit and Wagmi for BNB Chain (Testnet & Mainnet)
- Next.js 16 — React meta-framework with server & client components
- React 19 — UI component library with hooks
- TypeScript 5 — Static type safety across the application
- Tailwind CSS 4 — Utility-first CSS with custom animations
- Radix UI — Unstyled, accessible component primitives
- React Hook Form — Performant form state management
- TanStack React Query — Server state management and data fetching
- Wagmi 2 — React hooks for Ethereum interaction
- Ethers.js — Blockchain interaction and contract utilities
- Viem — Lightweight Ethereum client library
- RainbowKit — Beautiful wallet connection interface
- Web3 Provider — BNB Chain Testnet (ChainID 97) and Mainnet (ChainID 56)
- ESLint — Code quality and style enforcement
- PostCSS — CSS transformation pipeline
- Zod — TypeScript-first schema validation
- Node.js 18+ (check with
node --version) - pnpm 8+ or npm 9+ (this project uses pnpm-lock.yaml)
- Git for version control
- Clone the repository:
git clone https://github.com/RionOracle/RionOracle.git
cd rion-app- Install dependencies:
pnpm install
# or
npm install- Set up environment variables:
Create a
.env.localfile in the project root (see Configuration & Environment Variables section below):
cp .env.example .env.local # if an example exists
# or manually create and populate .env.localStart the development server:
pnpm run dev
# or
npm run devThe app will be available at http://localhost:3000
Build for production:
pnpm run build
# or
npm run buildStart the production server:
pnpm run start
# or
npm run startThe application requires several environment variables for blockchain interaction and API integrations. Create a .env.local file in the project root with the following variables:
IMPORTANT: Do NOT commit .env.local or any .env files to version control. The repository's .gitignore already excludes these files.
| Variable | Description | Example |
|---|---|---|
NEXT_PUBLIC_RPC_URL |
BNB Chain RPC endpoint (testnet or mainnet) | https://data-seed-prebsc-1-s1.binance.org:8545 |
| Variable | Description |
|---|---|
NEXT_PUBLIC_FEED_REGISTRY_ADDRESS |
FeedRegistry contract address for price data feeds |
NEXT_PUBLIC_DISPUTE_ADDRESS |
Dispute contract address for dispute resolution |
NEXT_PUBLIC_INSURANCE_VAULT_ADDRESS |
InsuranceVault contract address for user compensation |
NEXT_PUBLIC_RECEIPT_STORE_ADDRESS |
ReceiptStore contract address for proof verification |
| Variable | Description |
|---|---|
NEXT_PUBLIC_BNB_AGGREGATOR_ADDRESS |
Aggregator for BNB/USD price feed |
NEXT_PUBLIC_ETH_AGGREGATOR_ADDRESS |
Aggregator for ETH/USD price feed |
NEXT_PUBLIC_BTC_AGGREGATOR_ADDRESS |
Aggregator for BTC/USD price feed |
NEXT_PUBLIC_SOL_AGGREGATOR_ADDRESS |
Aggregator for SOL/USD price feed |
NEXT_PUBLIC_XRP_AGGREGATOR_ADDRESS |
Aggregator for XRP/USD price feed |
NEXT_PUBLIC_DOGE_AGGREGATOR_ADDRESS |
Aggregator for DOGE/USD price feed |
NEXT_PUBLIC_LINK_AGGREGATOR_ADDRESS |
Aggregator for LINK/USD price feed |
| Variable | Description |
|---|---|
NEXT_PUBLIC_GAME_LAKERS_CELTICS |
Game outcome contract: Lakers vs Celtics |
NEXT_PUBLIC_GAME_WARRIORS_NETS |
Game outcome contract: Warriors vs Nets |
NEXT_PUBLIC_GAME_HEAT_BUCKS |
Game outcome contract: Heat vs Bucks |
NEXT_PUBLIC_GAME_SUNS_MAVERICKS |
Game outcome contract: Suns vs Mavericks |
NEXT_PUBLIC_GAME_76ERS_NUGGETS |
Game outcome contract: 76ers vs Nuggets |
These variables are used by API routes for oracle submission and should never be exposed to the client:
| Variable | Description |
|---|---|
COUNCIL_01_PRIVATE_KEY |
Private key for Council-01 oracle node |
COUNCIL_02_PRIVATE_KEY |
Private key for Council-02 oracle node |
COUNCIL_03_PRIVATE_KEY |
Private key for Council-03 oracle node |
THE_ODDS_API_KEY |
API key for The Odds API (sports data) |
# Network
NEXT_PUBLIC_RPC_URL=https://data-seed-prebsc-1-s1.binance.org:8545
# Contracts
NEXT_PUBLIC_FEED_REGISTRY_ADDRESS=0x...
NEXT_PUBLIC_DISPUTE_ADDRESS=0x...
NEXT_PUBLIC_INSURANCE_VAULT_ADDRESS=0x...
NEXT_PUBLIC_RECEIPT_STORE_ADDRESS=0x...
# Price Feeds
NEXT_PUBLIC_BNB_AGGREGATOR_ADDRESS=0x...
NEXT_PUBLIC_ETH_AGGREGATOR_ADDRESS=0x...
NEXT_PUBLIC_BTC_AGGREGATOR_ADDRESS=0x...
# ... other aggregators
# Game Outcomes
NEXT_PUBLIC_GAME_LAKERS_CELTICS=0x...
# ... other games
# Server-side only (NEVER expose these)
COUNCIL_01_PRIVATE_KEY=0x...
COUNCIL_02_PRIVATE_KEY=0x...
COUNCIL_03_PRIVATE_KEY=0x...
THE_ODDS_API_KEY=your_api_key_here| Command | Purpose |
|---|---|
pnpm run dev |
Start development server with hot reload |
pnpm run build |
Create optimized production build |
pnpm run start |
Start production server (requires prior build) |
pnpm run lint |
Run ESLint to check code quality |
rion-app/
├── app/ # Next.js 13+ App Router
│ ├── page.tsx # Home page
│ ├── layout.tsx # Root layout with providers
│ ├── api/ # API routes (price feeds, oracle submission, etc.)
│ ├── explorer/ # Contract explorer interface
│ ├── predictions/ # Prediction market views
│ ├── disputes/ # Dispute resolution interface
│ ├── proof/ # Proof verification tools
│ ├── receipts/ # Oracle receipt inspection
│ ├── game/ # Game outcome markets
│ ├── lab/ # Experimental features
│ ├── docs/ # Documentation pages
│ └── status/ # Network status dashboard
├── components/ # React components
│ └── ui/ # Radix UI component wrappers
├── lib/ # Utilities and helpers
│ ├── contracts.ts # Contract addresses and ABIs
│ └── analytics.ts # Analytics integration
├── hooks/ # Custom React hooks
├── sdk/ # RION SDK reference implementations
├── contracts/ # Solidity smart contracts (Foundry)
├── styles/ # Global styles and Tailwind config
├── public/ # Static assets
├── assets/ # Project assets (logos, banners)
└── scripts/ # Utility scripts (oracle deployment, testing)
Real-time oracle price feeds with historical data, verification proofs, and feed status.
Interface for challenging oracle reports, voting on disputes, and viewing resolution outcomes.
View available insurance claims, verify proof of losses, and manage compensation claims.
Interact with prediction market contracts, view available markets, and track outcomes.
Comprehensive guides for SDK integration, contract interaction, and API usage.
RION Oracle App supports both testnet and mainnet deployments:
| Network | Chain ID | RPC Endpoint | Block Explorer |
|---|---|---|---|
| BNB Testnet | 97 | https://data-seed-prebsc-1-s1.binance.org:8545 | https://testnet.bscscan.com |
| BNB Mainnet | 56 | https://bsc-dataseed.binance.org | https://bscscan.com |
Switch networks via the wallet connection interface or by updating NEXT_PUBLIC_RPC_URL.
Deploy to any Node.js hosting:
# Build production bundle
pnpm run build
# Set environment variables in your host
export NEXT_PUBLIC_RPC_URL=...
export NEXT_PUBLIC_FEED_REGISTRY_ADDRESS=...
# ... other env vars
# Start server (ensure Node.js 18+ is installed)
pnpm run startCreate a Dockerfile for containerized deployment (example):
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]- ESLint enforces code style consistency
- TypeScript ensures type safety
- Tailwind CSS provides utility-first styling
Run linting:
pnpm run lint- Create a new directory under
app/(e.g.,app/my-feature/) - Add
page.tsxfor the route - Import layout and components as needed
- Follow existing patterns for wallet integration and contract interaction
- Update contract addresses in
lib/contracts.ts - Add environment variables in
.env.local - Create new page or component to display the feed
- Use existing fetch/query hooks from
lib/or create new ones
- Never commit
.env.localor.env.*files — they may contain sensitive keys - Private keys should only be in server-side code — never pass to client components
- Use
NEXT_PUBLIC_*prefix ONLY for client-safe variables — values are visible to users - Verify all contract addresses before interacting — especially on mainnet
- Keep dependencies updated — run
pnpm updateperiodically
Run on a different port:
pnpm run dev -- -p 3001Clear cache and reinstall:
rm -rf .next node_modules
pnpm install- Verify
NEXT_PUBLIC_RPC_URLis valid - Check browser console for error messages
- Ensure wallet (MetaMask, etc.) is connected to the correct network
- Clear browser cache and try again
- Verify contract addresses in
.env.local - Check that addresses are valid for the connected network
- Ensure contracts are deployed on the target network
- RION Oracle Contracts — Smart contract source and ABIs
- SDK Documentation — RION SDK integration examples
- Examples — Code samples for common tasks
- Architecture Docs — System design and data flow
- Deployment Guide — Production deployment instructions
This project is licensed under the MIT License — see the LICENSE file for details.
For questions, issues, or contributions:
- GitHub Issues: Report bugs or request features
- Documentation: See ./docs/ for comprehensive guides
Built with ❤️ by the RION Oracle Team
