> For the complete documentation index, see [llms.txt](https://docs.clusters.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clusters.xyz/resources/data-availability.md).

# 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
