> 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.
