# Hybrid Attestations

Hybrid attestations are standard on-chain attestations that store data separate from the current blockchain network. For example, a hybrid attestation may store its data on Arweave or IPFS instead of directly within a Sign Protocol smart contract, where the metadata and schema information are stored. With hybrid attestations, the attestation data is uploaded to Arweave/IPFS, and the resulting CID is encoded and stored in the `data` field of the attestation on-chain.

This can be useful when the attestation data is expected to be sufficiently large that gas fees would be exceptionally high or when easy data access is required from front-end clients. Projects can cache CIDs for quick data retrieval instead of querying, fetching, and decoding data every time an attestation is retrieved.

<figure><img src="/files/RL2qWQTTSRDReKFYgBOA" alt=""><figcaption><p>Hybrid Attestation Model</p></figcaption></figure>

Sign Protocol's [SDK](/for-builders/index-1/npm-sdk/installation.md) allows direct interaction with hybrid attestations, and the [Schema Builder](https://app.sign.global/create-schema) enables users to easily build hybrid schemas by choosing an on-chain schema with a data storage location of Arweave or IPFS.

### Smart Contract Interaction with Hybrid Attestations

#### Steps

1. Upload the attestation's data to the storage location (Arweave/IPFS) in JSON format.
2. Encode the returned Content ID (CID).
3. Create an attestation, passing in the encoded CID as `data`.


---

# 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.sign.global/for-builders/advanced-topics/hybrid-attestations.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.
