# For Programmable Blockchains

<figure><img src="https://2966001276-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FD0jUvtZ31Mvk6bUIbtlx%2Fuploads%2Fgit-blob-55913f923e4799579f9b22178dcd67b93dafbd7d%2Fimage.png?alt=media" 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.
