> ## Documentation Index
> Fetch the complete documentation index at: https://docs.allium.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Walrus

> Fetch Allium blockchain data from Walrus as encrypted quilt patches.

Allium publishes blockchain data to [Walrus](https://docs.wal.app/), Mysten Labs' decentralized storage protocol on Sui. Data is batched into [Quilts](https://www.walrus.xyz/blog/introducing-quilt) and encrypted with [Seal](https://seal-docs.wal.app/) so that only wallets on our onchain allowlist can decrypt them.

<Note>
  **Supported chains**

  Only the following chains are available via Walrus today: `bitcoin`, `ethereum`, `arbitrum`, `sui`, `tron`, and `xrp_ledger`. For any other chain, use one of the other [datashare integrations](/datashares/overview).
</Note>

<Info>
  **When to use this integration**

  Pick Walrus if you want to pull data from a decentralized storage network rather than a cloud data warehouse. If you just need data in your own cloud, see [S3 & GCS](/datashares/s3-gcs) or one of the warehouse integrations.
</Info>

## How it works

* **Quilts** group many small files (one "patch" per file) into a single Walrus blob — cheap for lots of small parquet/JSON files.
* **Seal** encrypts every patch before upload. Decryption requires threshold shares from multiple independent key servers.
* Your wallet address is added to an onchain whitelist. At read time, key servers dry-run a `seal_approve` call against that whitelist to decide whether to release decryption shares.
* You fetch the encrypted patch from any Walrus aggregator, then decrypt locally using your [`SessionKey`](https://seal-docs.wal.app/UsingSeal).

## Getting Started

<Steps>
  <Step title="Contact us to get allowlisted">
    [Reach out](https://www.allium.so/contact) with your Sui wallet address. We'll add it to the Allium Seal whitelist package on Sui mainnet so the key servers will approve decryption for your wallet.
  </Step>

  <Step title="Set up Seal decryption on your side">
    Install the [`@mysten/seal`](https://github.com/MystenLabs/seal) SDK and wire it up with the three key servers listed below. Create a `SessionKey` to sign decryption requests — see the Seal docs on [creating and using a `SessionKey`](https://seal-docs.wal.app/UsingSeal).
  </Step>

  <Step title="Get your quilt patch IDs from Allium">
    [Contact us](https://www.allium.so/contact) for the quilt and quilt-patch IDs for the datasets you're subscribed to. We publish these on a cadence and share them.
  </Step>

  <Step title="Fetch and decrypt">
    Fetch each encrypted patch from any Walrus aggregator:

    ```
    GET https://aggregator.walrus-mainnet.walrus.space/v1/blobs/by-quilt-patch-id/{patchId}
    ```

    Then decrypt the returned bytes through your Seal client using the `SessionKey` from the previous step. See [Walrus HTTP API](https://docs.wal.app/) for more on quilt patch endpoints.
  </Step>
</Steps>

## Key Servers

We use a 1-of-2 threshold across two independent Seal key servers. Your Seal client should be configured with both.

| Key Server    | Operator  |
| :------------ | :-------- |
| **NatsAI**    | NatsAI    |
| **Nodeinfra** | Nodeinfra |

<Note>
  You don't need to know the onchain details — just [contact us](https://www.allium.so/contact) and we'll add your wallet to our Seal package's whitelist so the key servers will release decryption shares to you.
</Note>

## References

* [Walrus documentation](https://docs.wal.app/)
* [Walrus TypeScript SDK](https://sdk.mystenlabs.com/walrus)
* [Introducing Quilt — batched small-file storage](https://www.walrus.xyz/blog/introducing-quilt)
* [Seal documentation](https://seal-docs.wal.app/)
* [Using Seal — session keys and decryption](https://seal-docs.wal.app/UsingSeal)
* [`@mysten/seal` on GitHub](https://github.com/MystenLabs/seal)

<Note>
  Stuck, or want us to run you through a working end-to-end example? [Contact us](https://www.allium.so/contact) — we're happy to pair on setup.
</Note>
