# Zora

## Intro

Zora has built its own Media ecosystem on top of the Ethereum and mainly uses the ERC721] as base contract\
Zora Development Kit (ZDK) can be found at: <https://docs.zora.co/docs/zora-api/zdk>

Full documentation is available at: <https://docs.zora.co/docs/smart-contracts/zora-V3\\>
Zora protocol has a full stack of decentralised open source tools:

* [NFT Rendering:](https://docs.zora.co/docs/developer-tools/nft-rendering/introduction) Tools for displaying NFTs
* [ZORA Indexer:](https://docs.zora.co/docs/developer-tools/indexer/introduction) Quick retrieval of NFT and ZORA-related data
* [ZDK:](https://docs.zora.co/docs/developer-tools/zdk/introduction) A development kit for interacting with ZORA's smart contracts
* [Smart Contracts:](https://docs.zora.co/docs/smart-contracts/ZORA-contracts) ZORA's deployed smart contracts

More sources are at the bottom of this page

### The difference between ERC721 and zNFT ERC721

"The zNFT ERC721 has these main changes from a standard ERC721 largely for:

1. building the market code into the token contract itself for a permission-less perpetual market
2. allowing for URL updates and accessing both metadata and content along with validatable hashes directly from the contract. The current owner can update the URL which can be validated off-chain as being the same content as the original."

(Source: reply on Discord from Iain)

## About the protocol

* Zora protocol is an extension to ERC721
* Intended to provide a unified pool of liquidity in the form of bids for each NFT market
* This protocol refers to NFTs as Media
* Establishes universal, perpetual markets for media in the form of ERC721

## Utilities of Zora protocol (standard)

**Functions-simplified**\
Types

* constructAsk
* constructBid
* constructBidShares

Hashing Utilities

* sha256FromBuffer
* sha256FromHexString
* sha256FromFile - Create a sha256 hash from a local file This is most useful for the hashing of large files. It uses a read stream to load bits into memory via a buffer and construct a hash as it consumes the contents of the file.

EIP712 Utilities

* signPermitMessage - [Permit](https://eips.ethereum.org/EIPS/eip-2612) was specified as an extension of the ERC-20 standard to allow users to issue `approval` to accounts without needing `ETH`.

We have extended it further to be used for the Zora Protocol, so that users can delegate approvals to other smart contracts to perform actions that `approved` users can do such as:

* `setAsk`
* `acceptBid`
* `updateContentURI`
* `updateMetadataURI`
* `transfer`

For now, the signer must be an `ethers` `Wallet` object. But soon we will support any `Signer`.

* signmintWithSigMessage
* recoverSignatureFromPermit
* recoverSignatureFromMintWithSig

Miscellaneous

* approveERC20
* isURIHashVerified
* isMediaDataVerified
* wrapETH
* unwrapETH

This is the sum up of Zora Contracts overview, find full documentation here: <https://docs.zora.co/docs/smart-contracts/zora-contracts>

## Links

* Zora Contracts: <https://docs.zora.co/docs/smart-contracts/ZORA-contracts>
* Zora Protocol - ZDK: <https://docs.zora.co/docs/developer-tools/zdk/introduction>
* Zora as Media Protocol: <https://cryptomedia.wtf/>
* Zora zDK - NFT Gallery Components and code snippets: <https://ourzora.github.io/nft-components/?path=/docs/introduction--page>
* Metadata schemas: <https://github.com/ourzora/media-metadata-schemas>


---

# 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://nft-standards.gitbook.io/nft-standards-wiki/custom-nft-platforms-add-ons/zora.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.
