# Data Availability

{% hint style="info" %}
We'll be rolling out our data availability in conjunction with our Community Clusters launch!
{% endhint %}

<figure><img src="/files/qRcxcp2v5wuOPLWAkC6e" alt=""><figcaption><p>Architecture of DA</p></figcaption></figure>

Clusters are composed of a series of events that happen on and off chain. These events include:

* On chain personal cluster registration & extensions
* On & off chain community cluster registration & renewals
* Wallet management

### Data Hosting

[**Arweave**](https://www.arweave.org/) is where our data lives as a permanent data storage layer that is available for user consumption across \~7.2k nodes across the world.

### Data ingestion

Based on event throughput, data is pushed to the Arweave network every 1-3 hours. ([Sample tx](https://viewblock.io/arweave/tx/Jx4i7lZag5S7xRBNhyGcccdcE6Ikau5gHIpdgf5pNoc))

{% tabs %}
{% tab title="Raw" %}

```json
[
  [1,"updateWallet",2224,"0x000000000000000000000000f4cb0399fd1b3c370a297fdc21090a28a1366608","0xf4cb0399fd1b3c370a297fdc21090a28a1366608","evm","main",1,1706810479],
  [1,"register",2288,"0x0000000000000000000000002d185421f556ea40bd67f5512cca15f2a793ba55","0x2d185421f556ea40bd67f5512cca15f2a793ba55","evm","peapol26",10000000000000000,1706810483]
]
```

{% endtab %}

{% tab title="Parsed" %}

```json
[
  {
    "eventType": "updateWallet",
    "clusterId": 2224,
    "bytes32Address": "0x000000000000000000000000f4cb0399fd1b3c370a297fdc21090a28a1366608",
    "address": "0xf4cb0399fd1b3c370a297fdc21090a28a1366608",
    "addressType": "evm",
    "data": {
      "name": "main",
      "weiAmount": 1,
    },
    "timestamp": 1706810479
  },
  {
    "eventType": "register",
    "clusterId": 2288,
    "bytes32Address": "0x0000000000000000000000002d185421f556ea40bd67f5512cca15f2a793ba55",
    "address": "0x2d185421f556ea40bd67f5512cca15f2a793ba55",
    "addressType": "evm",
    "data": {
      "name": "peapol26",
      "weiAmount": 10000000000000000,
    },
    "timestamp": 1706810483
  }
]
```

{% endtab %}
{% endtabs %}

Once the data has successfully submitted, these transactions are picked up and added to a manifest.

```json
[
 "uWaE1nsM_hyZzARTc-br_5BXB6cfdWDcglJHd-b5pdg",
 "HIxCu-qBwEwnUiEeQso89X2ZqeqxPxSX_penY_B1UCY",
]
```

### Querying data

Querying data consists of:

1. Retrieving the last known transaction from our manifest uploader wallet *(this will include all the transactions that have been pushed to the data availability layer)*.&#x20;
2. In chronological order, retrieving each transaction in the manifest to keep a current record of all events

This data can be queried in different ways:

1. Make calls directly to an arweave node using the above steps
2. Use our SDK that consists of both a centralized and decentralized option to return pre-parsed DA layer events
   * `getEvents()` — Retrieve a centralized live version of the data availabiltiy events
   * `getEventsDA()` — Communicate directly with an arweave node to retrieve and parse data availability events
3. Use our RESTful API interface to retrieve a centralized version of the data availabiltiy events


---

# 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.clusters.xyz/resources/data-availability.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.
