id: Integer (primary key) representing the row of the entry
owner: Uuid of the user who created the collection. This value is a foreign key for the uuid in the Users table
tokens_table: String identifier for the name of the user-specific Tokens table
layers_table: String identifier for the name of the user-specific Layers table
attributes_table: String identifier for the name of the user-specific Attributes table
contract_address: Address for the deployed smart contract. This is only populated if/when the user decides to deploy the contract to the blockchain
name: Collection name
symbol: Collection token symbol (e.g., "C" for CryptoPunks)
description: Collection description
image: IPFS content hash for the collection's avatar. This hash is inserted into an IPFS gateway in the Opal UI to fetch the content from IPFS
external_link: Supplementary link to point to collection content (e.g., website, Twitter, Linktree, etc.)
seller_fee_basis_points: Percentage in basis points for secondary market royalties (e.g., 100 basis points = 1% secondary market royalties)
fee_recipient: Address for the recipient of any secondary market royalties
The name, description, image, external link, seller fee basis points, and fee recipient values are all values that are picked up on secondary NFT marketplaces via the smart contract's contractURI() function. More information can be found in OpenSea's documents on contract-level metadata.
Secondary Market Royalties
There has been recent discussion in the NFT space on whether marketplaces such as OpenSea will honor secondary market royalties and the technical implementation of possible solutions. As of now, there is no clear guidance on how creators should proceed. If anything changes, Opal will make the necessary changes to the Collections table schema, specifically with respect to the seller fee basis points and fee recipient.