# For Programmable Blockchains

<figure><img src="/files/cVVLX2FOWSioglyRFVwo" alt=""><figcaption><p>Fig1. The general flow of applications on Ethereum</p></figcaption></figure>

### Components Involved:

1. **Fiamma:** The core network handling the verification of ZKPs.
2. **Data Availability (DA) Layer:** Stores proof-related data securely.
3. **Ethereum:** Executes smart contracts to verify data and signatures.
4. **Various ZKP Systems:** Includes Boojum, Plonky2, Circle Stark, and others.

### Steps:

#### Step 1: Proof Generation and Submission

* **ZKP Systems (Boojum, Plonky2, Circle Stark, etc.):**
  * Various ZKPs are generated by different systems and submitted to the Fiamma network.
* **Fiamma:**
  * **Generate BLS Signature:** Fiamma generates a BLS signature which includes `data_hash`, `proof_hash`, `result`, and `new_state`.

#### Step 2: Storing Data in DA Layer

* **Fiamma to DA Layer:**
  * **Send Data:** Fiamma sends the transaction data (`txdata`), proof, and result to the DA layer for storage.
* **DA Layer:**
  * **Store Data:** The DA layer securely stores the received data ensuring its availability and integrity.

#### Step 3: Retrieving Data from DA Layer

* **DA Layer to Ethereum:**
  * **Send Tuple Data:** The DA layer sends a tuple of data (`tuple_data{data_hash, proof_hash, result, new_state}`) to Ethereum for further verification.
* **Ethereum:**
  * **Check Contract:** Ethereum smart contracts retrieve and verify the data from the DA layer. The contracts perform checks on `DA Check` and `Sig Check`.

#### Step 4: Verification on Ethereum

* **Ethereum Smart Contracts:**
  * **Check Contract Execution:** The smart contracts on Ethereum execute the checks (`DA Check` and `Sig Check`) to verify the data and signatures.
  * **Final State Update:** Once the checks are successful, the final state is updated on the Ethereum network.


---

# 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://litepaper.fiammalabs.io/solution-overview/general-flow/for-programmable-blockchains.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.
