# ZORA Docs ## Docs - [API Access](/zora-network/api-access): There are a few supported APIs to access ZORA chain information. - [Bridging](/zora-network/bridging): The official bridge for a native bridge can be found at [https://bridge.zora.energy/](https://bridge.zora.energy/). - [Deploying Contracts](/zora-network/contracts): Deploying contracts can be done with familiar EVM tools like [Hardhat](https://hardhat.org/) and [Foundry](https://book.getfoundry.sh/). Make sure to configure these tools with the correct chain ID and RPC URL to deploy smart contracts to Zora Network Goerli and Zora Network Mainnet. See the [Network](/zora-network/network) section for more information. - [Deployed Contracts](/zora-network/deployments): Zora Network Goerli is a Testnet L2 built on top of the Goerli Testnet. The crypto on this network has no value and is meant for testing purposes. - [Ethereum vs Zora Network](/zora-network/ethvszora): Zora Network harnesses the Bedrock release of the [OP Stack](https://stack.optimism.io/), which is purposely structured to mimic Ethereum as closely as possible. Still, there exist slight differences in the behavior of the Zora Network compared to Ethereum. - [Introduction](/zora-network/intro): The Zora Network is a fast, cost-efficient, and scalable Layer 2 built to help bring media onchain. Many L2s are currently DeFi centric whereas the Zora Network is an ecosystem that puts NFTs first. - [Connecting MetaMask](/zora-network/metamask): Addresses in your MetaMask will work and be the same on both Ethereum and the Zora Network. However, to submit transactions to the Zora Network you must add the network to your wallet. - [Network Details](/zora-network/network): Zora Network is an L2 built on top of Ethereum using the [OP stack](https://stack.optimism.io/). - [Zora NFT Protocol SDKs](/protocol-sdk/introduction): The Zora NFT Protocol SDKs are a suite of typescript libraries and utilities that simplify interacting with the Zora protocol contracts. - [Protocol Deployments Package](/protocol-sdk/protocol-deployments): `@zoralabs/protocol-deployments` is a typescript package that provides contract ABIs, deployed addresses, and typescript types for the Zora contracts. These bundled configs and ABIs can be used in conjunction with wagmi or viem to interact with the Zora contracts in typescript. - [Building Contract Metadata](/protocol-sdk/metadata/contract-metadata): Zora 1155 and 721 contracts have contract-wide json metadata containing descriptive info about the contract, including a name and image. This json metadata is pinned to [IPFS](https://ipfs.tech/). - [Building Token Metadata](/protocol-sdk/metadata/token-metadata): Each token in a Zora 1155 or 721 contract has a metadata uri field which points to a JSON Metadata file, pinned to [IPFS](https://ipfs.tech/), containing information about the media associated with the token as well as additional descriptive info. The Zora Protocol SDK provides some utility methods to help build the JSON metadata needed for tokens. It does not provide an endpoint for pinning the JSON metadata to IPFS. - [Creating an 1155 that can be minted in ERC-20 tokens](/protocol-sdk/creator/erc20-mints): 1155s can be priced and minted using an ERC-20 token. To create an 1155 token that is priced in ERC-20: - [getRewardsBalances](/protocol-sdk/creator/getRewardsBalances): The `getRewardsBalances` function on the `creatorClient` allows you to view the rewards and royalties balances for any account. This function returns two types of balances: - [Create Onchain 1155 Contracts & Tokens](/protocol-sdk/creator/onchain): The Protocol SDK can be used to prepare transactions to create 1155 contracts and tokens, using the Creator Client. - [Creating an 1155 with a split payout](/protocol-sdk/creator/splits): [0xSplits](https://splits.org/) can be used to split the payout for 1155s among multiple recipients. This is done by first creating a 0xSplit recipient contract at a deterministic address based on the recipient addresses and the split percentages, and then creating the 1155 token with the 0xSplit recipient contract as the payout recipient. Due to security limitations, this must be done in two separate transactions. **Note: splits are not currently supported with Premints, and are only supported with onchain creation using `create1155()`.** - [withdrawRewards](/protocol-sdk/creator/withdrawRewards): Protocol Rewards and [onchain Secondary Royalties](https://support.zora.co/en/articles/2519873) can be withdrawn in a single transaction by executing the parameters generated from calling `withdrawRewards` on the `creatorClient`. The `withdrawRewards` function prepares a multicall transaction that withdraws both the rewards and royalties balances for each ERC20 token associated with the specified account. - [Cointags](/contracts/Cointags): Cointags lets creators connect their posts with onchain communities through by tagging their posts with their coins. When someone mints a creator's post, a portion of the creator rewards automatically: - [Comments](/contracts/Comments): The Comments contract allows for comments to be made on any Zora 1155 token. Only 1155 token owners or holders can comment on that token. If the commenter is an owner, they must pay a Spark to comment. If the commenter is a creator, they can comment for free. - [Creating a Token](/contracts/Creating1155Token): Calling `setupNewTokenWithCreateReferral` on a deployed 1155 contract will create a new token. In addition, by passing in your address as the `createReferral` will yield you rewards from those mints. All tokens start at tokenId 1 and increment up. tokenId 0 is reserved for the contract information. `maxSupply` should be set to `MAX_INT` for an open edition. - [Creating a contract](/contracts/Deploy1155Contract): All 1155 contracts created from Zora are deployed by calling a central factory contract. When calling this factory it will deploy a minimal proxy contract that is upgradeable. All upgrades are opt-in and must be done manually on a per contract basis by the user. - [Drop Metadata Renderer](/contracts/DropMetadataRenderer): This contract is in charge of managing and rendering the metadata for Zora drops. A drop is an NFT collection where all the NFTs have individual media assets. - [ERC-20 Minter](/contracts/ERC20Minter): The ERC20 Minter contract allows you to mint 1155 tokens with ERC20 tokens. This contract is deterministically deployed on all chains that we currently support to this address `0x777777E8850d8D6d98De2B5f64fae401F96eFF31`. - [ERC-721 Drop](/contracts/ERC721Drop): The NFT contracts created from the `ZoraNFTCreator` are known as an `ERC721Drop`. Each drop contract is cloned from an `implementation` address and receives its own address. Both `Editions` and `Drops` use the same base contract but have different metadata rendering contracts. - [Edition Metadata Renderer](/contracts/EditionMetadataRenderer): This contract is in charge of managing and rendering the metadata for Zora editions. An edition is an NFT collection where all the NFTs share the same media asset (video, image, etc). - [JSONExtensionRegistry](/contracts/JSONExtensionRegistry): This contract is an extension registry for any address or contract owned by another address to reference a theming configuration file on-chain to update their zora.co minting profile. On the UI level, this is also known as the `Personalize` feature - applicable to profile pages, collection and edition pages. - [Contract and Token Metadata](/contracts/Metadata): Contract metadata has the following json schema: - [Minting ERC-1155 Tokens](/contracts/Minting1155): [View Source Code](https://github.com/ourzora/zora-protocol/blob/main/packages/1155-contracts/src/nft/ZoraCreator1155Impl.sol#L426) - [ERC-1155 Role Permissions](/contracts/Permissions1155): [View Source Code](https://github.com/ourzora/zora-protocol/blob/ba8548a06b3b003dff59bab1c9aa2738255326c3/packages/1155-contracts/src/nft/ZoraCreator1155Impl.sol#L356) - [Protocol SDK](/contracts/ProtocolSDK): The Protocol SDK makes interacting with the ZORA protocol easier by generating required transactions for our contracts. - [Selling an ERC-1155 token](/contracts/Selling1155): Once a token has been created, it can then be put up for sale. Minter strategy contracts are separate contracts that hold minting logic, but the main 1155 is called for minting. Check out the [minting](./Minting1155) section to learn more about minters. - [ERC-721 NFT Creator](/contracts/ZORANFTCreator): ⚠︎ 721 NFTs can ***only*** be created and managed on the contract and API level but not on the zora.co UI level. - [Zora Timed Sale Strategy](/contracts/ZoraTimedSaleStrategy): The Zora Sale Timed Sale Strategy introduces a new mint fee and [enables a secondary market that is powered by Uniswap V3](https://support.zora.co/en/categories/577345-secondary-market). New tokens minted will have a mint fee of 0.000111 ETH (✧111). - [Contracts:](/contracts/deployments) - [Event-based Overview](/contracts/events): When a user creates a new token, the parameters expected are maxSupply and URI. maxSupply is the immutable maximum number of NFTs that can be made for this token and the URI is possible to change but the initial URL representing the token. - [Factory Addresses](/contracts/factories): The Zora factory proxy has been deployed at a deterministic address on all networks. - [NFT Contracts Introduction](/contracts/intro): These contracts allow anyone to deploy [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) NFT collections in seconds. In addition, these contracts **provide built-in sales mechanics**, making it easy to both deploy a collection and sell the initial mints. - [Protocol Rewards](/contracts/rewards): At Zora, we are passionate about providing the best experience to create and earn onchain. **Protocol Rewards** is a split of the Zora mint fee allowing: - [Zora 1155 Contracts Changelog](/changelogs/1155-contracts): [1fd92cc8](https://github.com/ourzora/zora-protocol/commit/1fd92cc8): Add contractName field. - [Coins SDK Changelog](/changelogs/coins-sdk): Updated dependencies [23f723dd](https://github.com/ourzora/zora-protocol/commit/23f723dd) - [Coins Changelog](/changelogs/coins): [23f723dd](https://github.com/ourzora/zora-protocol/commit/23f723dd): Integrate doppler for liquidity management with uniswap v3 - [Cointags Changelog](/changelogs/cointags): [066c289a](https://github.com/ourzora/zora-protocol/commit/066c289a): Ensure that cointags can only be created with v3 Uniswap pools - [@zoralabs/protocol-deployments Changelog](/changelogs/protocol-deployments): [23f723dd](https://github.com/ourzora/zora-protocol/commit/23f723dd): Integrate doppler for liquidity management with uniswap v3 - [@zoralabs/protocol-sdk Changelog](/changelogs/protocol-sdk): Updated dependencies [23f723dd](https://github.com/ourzora/zora-protocol/commit/23f723dd)