> For the complete documentation index, see [llms.txt](https://docs.fiammalabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fiammalabs.io/our-product-suite/bitvm-powered-zkp-verification-layer/fiamma-architecture/general-flow/for-programmable-blockchains.md).

# For Programmable Blockchains

<figure><img src="/files/gLXaWcI6He7b04cEirkN" 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. **Check Contracts for 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.fiammalabs.io/our-product-suite/bitvm-powered-zkp-verification-layer/fiamma-architecture/general-flow/for-programmable-blockchains.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
