# 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="https://3152654701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw182g9YzR34mTxEBTKXX%2Fuploads%2Fgit-blob-fa71fed8d8145ece98c222f226d4d3bcbc3d6cd2%2Fhybrid-attestation-model.svg?alt=media" alt=""><figcaption><p>Hybrid Attestation Model</p></figcaption></figure>

Sign Protocol's [SDK](https://docs.sign.global/for-builders/index-1/npm-sdk/installation) 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`.
