# Data Processing

<figure><img src="https://1662544235-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQvGCmsU8FIcbArIF7C8N%2Fuploads%2FzpMLikXPh2G49E1CRoDp%2Fimage.png?alt=media&#x26;token=29d0e4ad-626c-468a-bf5f-52321a3c5a40" alt=""><figcaption></figcaption></figure>

### Reporting <a href="#reporting" id="reporting"></a>

Any publicly accessible real-world data can be added to the EO network, where EO operators will begin reporting on it. Reports are sourced from different endpoints, such as a WebSocket or an API. The frequency of reporting and the values to be extracted are programmable by the user. Once the operator obtains the data, it signs it and sends it in a transaction to the EO-chain. Any operator with an above-threshold stake can participate in reporting, weighing each report by their stake. A report for a specific operator cannot be faked by another party, and their participation is an immutable part of the EO-chain state once received.

<figure><img src="https://1662544235-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQvGCmsU8FIcbArIF7C8N%2Fuploads%2FZ5RwMHdUVRHqD6123KhC%2FReporting.png?alt=media&#x26;token=38d1e187-51c0-4852-86e9-4ea907b5afee" alt=""><figcaption></figcaption></figure>

### Validation & Aggregation <a href="#validation-and-aggregation" id="validation-and-aggregation"></a>

Operators running an EO node receive transactions with signed reports. The node then verifies the reporter's identity via their cryptographic signature. Due to the protocol's permissionless nature, reports are censorship-resistant. Periodically, smart contracts aggregate the verified reports with dedicated schemes ([OVS](https://docs.eo.app/docs/understand-eo/modularity-and-programmability)).

Dapps can use EO's standard aggregations, which employ advanced algorithms and protocols to identify and discard outliers, or custom aggregations defined for a specific use case. For consensus and security, the computation is distributed among the validators and verified by them.

The computational aggregation process and its result become an immutable part of the EO-chain. The decentralized, transparent, and permissionless nature of this process ascertains that the reports and the aggregation results are authentic, accurate, and verifiable. Those results are then eligible for publication.

<figure><img src="https://1662544235-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQvGCmsU8FIcbArIF7C8N%2Fuploads%2Fqfx8sF7jitCHtSWZdokg%2FValidation%20%26%20Aggregation.png?alt=media&#x26;token=d2973f47-3940-4292-a027-fcfe55918efa" alt=""><figcaption></figcaption></figure>

### Publication <a href="#publication" id="publication"></a>

Publication is the process of posting EO aggregated data onto a *target blockchain*. A target blockchain is any blockchain network where dapps wish to use EO data. To provide EO data, each target blockchain has a smart contract that verifies, parses, and approves data signed and produced by the EO-chain.

For gas costs and efficiency, the aggregated data is hashed to a leaf of a Merkle tree, mapped to the EO state, and signed by the current valid EO Validator set. EO uses the BLS digital signature scheme, enabling large quorum participation efficiently through threshold signing and [signature aggregation](https://crypto.stanford.edu/~dabo/pubs/abstracts/aggreg.html). This cryptographic scheme allows for securing desired assets with a scalable signature scheme.<br>

<figure><img src="https://1662544235-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQvGCmsU8FIcbArIF7C8N%2Fuploads%2F8pWQDmQm79MYhsSLxP72%2Fimage.png?alt=media&#x26;token=15034d72-c3eb-4402-b41b-fa6797065f4e" alt=""><figcaption></figcaption></figure>

### Consumption <a href="#consumption" id="consumption"></a>

Dapps, individuals, and institutions can easily interface with EO in the smart contract layer by using the EO Solidity SDK and reading their required aggregated data on-chain.

Users interested in low-latency or tailored updates can also use the EO REST-API. This enables users to receive all the components to prove the validity of data on-chain, and then execute a dependent transaction. All cryptography, encoding, and parsing[ are abstracted by our Solidity and Typescript/Python SDK.](https://docs.eo.app/docs/understand-eo-1)

Off-chain infrastructure can use our WebSocket interface to cache aggregated data and provide a smooth and low-latency user experience, enabling instant integration and execution available on user-facing services. Our low-latency interface makes on-chain security and transparency accessible to provide a seamless user experience.

<div data-full-width="true"><figure><img src="https://1662544235-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQvGCmsU8FIcbArIF7C8N%2Fuploads%2FBxP45mz0bziW8lFCd7RO%2FReporting.png?alt=media&#x26;token=a2ee0f42-e03d-4bb2-86f2-42476e9817cd" alt=""><figcaption></figcaption></figure></div>

#### Conclusion <a href="#conclusion" id="conclusion"></a>

Process Overview

* **Reporting** is permissionless, transparent, and unfalsifiable.
* **Aggregation** is decentralized, programmable, secure, modular, immutable, and easily verifiable.
* **Publishing** is efficient, interoperable, permissionless, and censorship-resistant.
* **Consumption** is dynamic, highly compatible, and a simplified user experience.

In summary, the EO platform enables users with customizable requirements, dynamic security needs, niche data dependencies, and more to define their data flow. By defining the data type, sources, aggregation logic, and other desired variables, users can programmatically and comprehensively satisfy all workflow requirements to provide data and computation on-chain.

Any party can interface with the EO network for a given data need, and retrieve the proof components, a BLS-signed Merkle root & Merkle path. This can be used to prove the validity of data cross-chain. The signed Merkle root component enables the verification of a valid EO Validator Set, while the Merkle path can then be used to prove the inclusion of aggregated data. Due to the transparent and verifiable nature of the process, users are always assured of the authenticity of the computation, operator participation, and staked security.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.eo.app/docs/understand-eo-1/data-processing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
