Welcome to the official Oracle Node guide for the Orion Decentralized Oracle Network on the exSat Network. This node fetches real-time BTC/USD prices, cryptographically signs the data, and sends it to the network via WebSocket, enabling secure data feeds for exSat-based DeFi applications.
This guide walks you through setting up and running your own Oracle Node locally to join the network.
- Fetches live BTC/USD price from CryptoCompare.
- Cryptographically signs the data for authenticity.
- Sends signed data to the Orion Network WebSocket endpoint.
- Auto-registers as an oracle if not already registered.
Before getting started, ensure you have the following installed:
- Python 3.9+
- Node.js (optional, for managing WebSocket server locally)
- pip (Python package manager)
- An exSat-compatible wallet (e.g., a Bitcoin wallet supporting exSat transactions)
- A CryptoCompare API key (sign up here)
Clone the Oracle Node repository and navigate to the project directory:
git clone https://https://github.com/balendu9/exsat_node/tree/main
cd oracle-nodeInstall the required Python packages:
pip install -r requirements.txtRename the .env.example file to .env and add your private key:
PRIVATE_KEY=your_private_key_hereOther configuration data is pre-set in the .env file.
.env file private and secure.
Ensure the following file is in the project directory:
nodemanager_abi.json: Contains the ABI of the NodeManager contract. This file is included in the repository.
Once setup is complete, run the node:
python3 node.pyThe node will automatically:
- Check if your wallet is a registered oracle.
- Register as an oracle if necessary (requires staking).
- Start fetching, signing, and broadcasting BTC/USD price data to the WebSocket endpoint.
- Stake Amount: Automatically retrieved from the NodeManager contract’s
MINIMUM_STAKE()function. - Transaction Fees: Defaults to a standard fee for exSat transactions. Adjust in the
node.pycode if needed. - Symbol Used: Currently hardcoded to BTCUSD. Modify the
sign_price()function innode.pyto support other symbols.
- WebSocket Connection Issues: Ensure the WebSocket endpoint URL in
node.pyis correct and accessible. - Insufficient Stake: Verify your wallet has enough BTC to meet the minimum stake requirement.
- API Key Errors: Confirm your CryptoCompare API key is valid and correctly set in the
.envfile.