- Individual curation contracts are ERC721 collections themselves, with curators receiving a non-transferable
listingRecord
that contains the information of theListing
they have curated. Curators can "remove" a Listing by burning their listingRecords - Factory allows for easy creation of individual curation contracts
- Active Listings on a given curation contract can be retrieved by the
getListings()
view call on a given Curator.sol proxy, or by using NFT indexers to gather data on allcurationReciepts
that have been minted from a given curation contract - Listings contain the data specified in the
Listing
struct found in ICurator.sol
- Deploying your own ERC721 curation contract
- Curation of certain "types" of Ethereum addresses. Current types include:
- NFT Contract
- Generic smart contracts
- Other curation contracts
- Specific tokens of an NFT contract
- Wallet addresses (EOA or smart contract)
- ZORA ERC721DROP collections
- Restricted curation access gated by a set ERC721 collection (ex: user balance > 0 of ERC721 provides access to curation functionality)
- Curation listings represented as individual non-transferable
listingRecord
NFTs minted to a curator's wallet. Allows for easy tracking via NFT indexers (like the ZORA API - Ability for curators to remove their
Listings
by burning their non-transferablelistingRecords
CuratorSkeletonNFT.sol
Each curation contract is its own ERC721 collection. This allows for clear contract ownership, listings as individual tokens that are minted out of the contract, and composability with NFT indexersCurator.sol
Base implementaion for curation contracts generated from CuratorFactory.sol. Inherits from CuratorSkeletonNFT, and manages all of the curation related functionalityCuratorFactory.sol
Gas-optimized factory contract allowing you to easily + for a low gas transaction to create your own curation contract.DefaultMetadataRenderer
A flexible metadata renderer architecture that allows for centralised and IPFS metadata group roots to be rendered.SVGMetadataRenderer
Onchain renderer for curation contracts that encodes information related to a specific listing
- Use wagmi/ethers/web3.js with the given artifacts (in the node package) or typechain.
- Check out the @public-assembly/curation-interactions package for custom hooks + components designed to simplify contract interactions
- Check out the Neosound repo for an example application built on top of the curation protocol
- Check out this quickstart doc for notes + video on how to start experimenting with the curation protocol from both a solidity + UI level
- Install Foundry
yarn install
git submodule init && git submodule update
yarn build
All curation contracts are wholly owned by their creator and allow for extensibility with rendering and minting
All curation listing tokens minted to curators are non-transferable, but allow for the curator to burn the token so as to remove it from the onchain listing and their wallet
The metadata renderer abstraction allows these drops contracts to power a variety of onchain powered projects