Orally
  • 👋Introduction
  • ❔Why Orally?
  • Orally Price Feed Integration Guide
  • quick-start
    • 🌱Sybil: data feeds
    • 🐬Apollo: request feeds from EVM
    • 🎬Pythia: automation
    • 📖Useful addresses & Links
  • Overview
    • 💡Video Overview
    • ✨How Orally Works
    • 🔐Security and Reliability
    • 📖Glossary
  • Page
  • Problems
    • The Oracle Problem
    • Frozen Oracle Problem
  • 🛰️Use Cases
  • Orally Products
    • 🧙‍♂️Sybil
    • 🦉Pythia
    • 🐬Apollo
    • 🕵️‍♂️Cassandra (DAuth)
    • ▶️Deplhos
    • 📧Hermes
  • Utilised ICP features
    • 🛠️ECDSA threshold Signatures
    • ✴️HTTP Outcalls
    • ⏳ICP timers (heartbeat system)
    • 🌀Random tape
    • 💱Exchange rate canister
  • FAQ
Powered by GitBook
On this page
  • Overview
  • Initial Setup
  • Integration Process
  • Technical Details
  • Cost Structure
  • Best Practices

Orally Price Feed Integration Guide

PreviousWhy Orally?NextSybil: data feeds

Last updated 4 months ago

Overview

The Orally Price Feed system provides real-time price data from 9 centralized exchanges, secured through ICP canister's trusted execution environment and verified on-chain through ECDSA signatures. This guide explains the integration process and operation flow.

Initial Setup

  1. Generate API Key

    • Visit

    • Follow the API key generation process

    • Store the key securely for subsequent requests

Integration Process

Regular Price Monitoring

Your liquidation bot should monitor prices using the following flow:

  1. Regular Price Checks

    • Endpoint: get_xrc_data or get_xrc_data_batch

    • Cost: $0.001 per request

    • Include:

      • API key

      • Cache TTL (default 600 seconds)

      • Target token pair ID

    • Response: Current price feed without proof

Price Update Verification

When price changes require on-chain updates:

  1. Request Signed Data

    • Endpoint: get_xrc_data_with_proof

    • Cost: $0.04 per request

    • Returns: Price data with ECDSA signature from ICP canister

  2. On-Chain Verification

    • Submit signed data to Partisia chain

    • Smart contract verifies:

      • ECDSA signature authenticity

      • Signer authorization

      • Data integrity

    • After verification, data is decoded and available for use

Technical Details

Proof Generation

  1. ICP canister aggregates price data from exchanges

  2. Data is encoded into a standardized format

  3. Canister generates ECDSA signature using its DKG key

  4. Returns packed data: {price_data, metadata, signature}

Verification Process

  1. Smart contract unpacks the provided data

  2. Verifies ECDSA signature against authorized signer list

  3. Decodes price data for use in smart contract operations

Cost Structure

  • Regular price checks: $0.001 per request

    • Recommended for continuous monitoring

    • Use cache_ttl to optimize costs

  • Signed data requests: $0.04 per request

    • Only needed when updating on-chain values

    • Includes proof generation and ICP canister operations

Best Practices

Optimize Batch Requests

  1. Use get_xrc_data_batch instead of multiple single requests:

    • Group related price feed queries into a single batch request

    • Example: Query all tokens in a lending pool in one call

    • Reduces total API calls and associated costs

    • Improves overall response time

Cache TTL Optimization

  1. Regular Price Monitoring:

    • Use longer cache_ttl (e.g., 600-1800 seconds) for stable pairs

    • Shorter cache_ttl (60-300 seconds) for volatile pairs

  2. Proof Generation:

    • Use the same cache_ttl as for monitoring requests when requesting proofs

    • Ensures fresh data for on-chain updates

    • Balance between data freshness and cost efficiency

Regular monitoring flow

Copyget_xrc_data_batch (longer cache_ttl)
→ detect significant price change
→ get_xrc_data_with_proof (shorter cache_ttl)
→ submit to chain
https://app.orally.network/sybil