# Apollo

<figure><img src="https://3198212384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnekehI12De2gMP6eOBPI%2Fuploads%2FoKeHnoE7cIOOyEMDB3wZ%2F3.1.jpg?alt=media&#x26;token=2612e60b-e1fa-4ba6-9104-b5089bb5afd0" alt=""><figcaption><p>Apollo architecture</p></figcaption></figure>

**Technical Overview:**

**Apollo** is an intricate module developed to bridge the gap between EVM (Ethereum Virtual Machine) contracts and the data-rich environment of the Orally platform, particularly its [Sybil](https://docs.orally.network/orally-products/sybil) component. Beyond mere data provisioning, Apollo is also configured to provide a level of [randomness](https://docs.orally.network/utilised-icp-features/random-tape) through a cryptographic measure, utilizing the unpredictable BLS signatures inherent to the Internet Computer (ICP) execution layer.

**Deep Dive:**

1. **EVM Contract Communication**:
   * An EVM-based contract, when requiring data or randomness, communicates its requirement to the Apollo EVM contract.
   * This request, in essence, is a call to Apollo's EVM contract specifying the data required or the randomness generation needed.
2. **Apollo’s ICP Contract Interaction**:
   * Apollo's ICP contract actively monitors its counterpart on the EVM for any new events or data requests.
   * Upon detecting a request, the ICP contract undertakes a series of operations to address this requirement.
3. **Data Procurement Through Sybil**:
   * If the request pertains to data, Apollo's ICP contract communicates with the Sybil module to fetch the necessary data.
   * Sybil, as already known, aggregates and verifies the data from multiple sources to ensure its reliability and accuracy.
4. **Randomness Generation**:
   * If the request pertains to randomness, Apollo's ICP contract leverages the BLS (Boneh-Lynn-Shacham) signatures inherent in the ICP execution layer.
   * This randomness generation is unpredictable, secure, and reliable, making it suitable for various applications.
5. **Transaction Preparation & Signature**:
   * Post data fetching or randomness generation, Apollo's ICP contract prepares a transaction containing the necessary data.
   * This transaction is designed to call a predefined callback function named `fulfillData([types])` on the requester's contract. The `types` parameter varies depending on the nature and structure of the data.
   * Before dispatching, the transaction is signed to ensure its authenticity and integrity.
6. **Transaction Dispatch to Requester**:
   * The signed transaction, containing the requested data or randomness, is sent to the originating contract on its native blockchain.
   * Upon receipt, the requester's contract processes the `fulfillData([types])` function, assimilating the data into its operations or logic as needed.

**Payment Mechanism:**

* **Subscription-Based**:
  * Rather than a one-off payment, Apollo adopts a subscription model where the requesting contract (identified by its address) is charged.
  * Subscriptions allow for repeated and seamless data requests without the need for individual transaction payments.

**Use Cases:**

1. **Dynamic Data Requirements in DeFi**:
   * Decentralized finance (DeFi) platforms often need real-time or periodic data updates to make lending, staking, or swapping decisions. Apollo can provide this data on-demand.
2. **Gaming & Lotteries**:
   * Many gaming dApps or decentralized lotteries require randomness to decide outcomes. Apollo's randomness generation is apt for such applications.
3. **Decentralized Identity Verification**:
   * For dApps requiring identity or user-related data verifications, Apollo's connection to Sybil can facilitate real-time verification data.

**Additional Attributes:**

1. **Multi-Chain Support**:
   * Although Apollo inherently communicates with EVM contracts, its architecture and underlying principles enable potential expansion to support other blockchain infrastructures.
2. **Security**:
   * The dual involvement of EVM and ICP contracts ensures robustness. The BLS signature mechanism further enhances security, especially in randomness generation.

**Summary:**

Apollo stands as a testament to the power of bridging diverse blockchain technologies – EVM and ICP in this case. By offering on-demand data delivery and randomness generation, it embodies the spirit of decentralization and enhances the capabilities of smart contracts across blockchains. Its secure, reliable, and subscription-based approach makes it a vital asset in the modern decentralized application ecosystem.&#x20;
