UNPKG

@elizaos/plugin-pyth-data

Version:

Pyth Network data plugin for Eliza

138 lines (106 loc) 4.42 kB
![alt text](assets/Pyth.jpg) # Pyth Data Plugin for ElizaOS A powerful plugin for interacting with Pyth Network price feeds and data streams. This plugin provides real-time access to cryptocurrency, forex, and other asset price data through a natural language interface. ## Features - Real-time price feed streaming - Latest price updates retrieval - Publisher caps information - Comprehensive price feed listings - Natural language processing for price feed queries ## Available Actions ### 1. GET_PRICE_UPDATES_STREAM Stream real-time price updates for specific assets. **Example Prompts:** ``` Stream price updates for 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43 Stream BTC/USD price updates ``` ### 2. GET_LATEST_PRICE_UPDATES Retrieve the most recent price updates for specific assets. **Example Prompts:** ``` Latest price updates for 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43 ``` ### 3. GET_LATEST_PUBLISHER_CAPS Fetch information about publisher capabilities and limits. **Example Prompts:** ``` Get me all the published caps Show publisher capabilities List all publisher caps ``` ### 4. GET_PRICE_FEEDS Retrieve available price feeds and their metadata. **Example Prompts:** ``` Get all available price feeds from Pyth Network List all crypto price feeds Show me available forex feeds ``` ## Configuration Create a `.env` file in your project root with the following variables: ### Network Configuration ```env # Network Environment (mainnet or testnet) PYTH_NETWORK_ENV=mainnet # Mainnet Configuration PYTH_MAINNET_HERMES_URL=https://hermes.pyth.network PYTH_MAINNET_WSS_URL=wss://hermes.pyth.network/ws PYTH_MAINNET_PYTHNET_URL=https://pythnet.rpcpool.com PYTH_MAINNET_CONTRACT_REGISTRY=https://pyth.network/developers/price-feed-ids PYTH_MAINNET_PROGRAM_KEY=FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH # Testnet Configuration PYTH_TESTNET_HERMES_URL=https://hermes.pyth.network PYTH_TESTNET_WSS_URL=wss://hermes.pyth.network/ws PYTH_TESTNET_PYTHNET_URL=https://pythnet.rpcpool.com PYTH_TESTNET_CONTRACT_REGISTRY=https://pyth.network/developers/price-feed-ids#testnet PYTH_TESTNET_PROGRAM_KEY=FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH ``` ### Connection Settings ```env PYTH_MAX_RETRIES=3 PYTH_RETRY_DELAY=1000 PYTH_TIMEOUT=5000 PYTH_GRANULAR_LOG=true PYTH_LOG_LEVEL=info ``` ### Runtime Settings ```env # General runtime configuration RUNTIME_CHECK_MODE=false # Streaming Configuration PYTH_ENABLE_PRICE_STREAMING=true # Enable/disable price streaming functionality PYTH_MAX_PRICE_STREAMS=2 # Number of price updates to collect before closing stream # Can be set to higher values (e.g., 10000) for production use ``` The streaming configuration controls how the price feed streaming works: - `PYTH_ENABLE_PRICE_STREAMING`: Toggle to enable/disable the streaming functionality. Set to `true` to allow real-time price updates. - `PYTH_MAX_PRICE_STREAMS`: Controls how many price updates to collect before automatically closing the stream. While set to 2 for testing, this can be increased to much higher values (e.g., 10000) for production use cases where continuous streaming is needed. ### Test Price Feed IDs ```env PYTH_TEST_ID01=0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43 PYTH_TEST_ID02=0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace ``` ## Features - **Automatic Price ID Detection**: Supports both hex IDs and common symbols (BTC/USD, ETH/USD, etc.) - **Flexible Data Formats**: Supports both hex and base64 encoding - **Granular Logging**: Detailed logging for debugging and monitoring - **Error Handling**: Comprehensive error handling with detailed feedback - **Streaming Control**: Configurable stream limits and timeouts ## Dependencies This plugin uses the official `@pythnetwork/hermes-client` for reliable data access and streaming capabilities. ## Error Handling The plugin includes comprehensive error handling for: - Invalid price feed IDs - Network connection issues - Configuration errors - Validation failures - Stream management ## Logging Enable granular logging by setting `PYTH_GRANULAR_LOG=true` for detailed operation insights. ## Contributing Contributions are welcome! Please ensure you: 1. Follow the code style 2. Add tests for new features 3. Update documentation as needed 4. Maintain type safety