Documentation
objkt.comAPIPress Kit
  • πŸ‘‹Overview
  • Overview
    • πŸ’‘What is objkt.com
  • Fundamentals
    • πŸ› οΈGetting Started
      • ⛓️What is Tezos?
      • πŸ‘›Wallet
      • πŸ”Security
      • πŸ–ΌοΈWhat is an NFT?
    • πŸ›Reporting Issues
    • πŸ’°Fee Structure
    • 🎭Creator Royalties
  • Product Guides
    • πŸ‘€Creating a Profile
      • πŸ”—Short Profile URL
    • πŸ”΅Collections/Contracts
      • πŸ”΅Creating a Collection
      • πŸ”΅Editing a Collection
      • 🟑Editing a non-objkt Collection
      • πŸ”΅Invite Collection Manager
    • πŸ–ΌοΈMinting a Token
      • πŸ–ΌοΈFile Types
      • βš›οΈInteractive Tokens
    • πŸ€Ήβ€β™€οΈCollaborating
    • πŸ’΅Token Buy/Sell
      • πŸ’΅Listings
      • πŸ’΅Offers
      • πŸ’΅Open Edition
      • πŸ’΅Advanced Sale
      • πŸ’΅Dutch Auction
      • πŸ’΅English Auction
    • 🎨Curation & Fee Sharing
      • 🎨Creating a Curation
      • 🎨Editing Curation Metadata
      • 🎨Inviting Collaborators to a Curation
      • 🎨Adding Tokens to a Curation
      • 🎨Changing the order of Tokens in a Curation
      • 🀝Fee Sharing
      • 🎨Removing Tokens from a Curation
  • Collections & Indexing
    • πŸ–‡οΈNFT Smart Contracts
  • objkt Protocol
    • πŸ–₯️API
    • β­•oXTZ
    • πŸŽ›οΈMarketplace Contracts
    • πŸ‘»Ghostnet
  • Legacy
    • ❔FAQ
  • Press Kit
Powered by GitBook
On this page
  • Smart Contract Basics
  • Metadata Standard
  • Collection Metadata
  • TZIP-21 extensions and objkt particularities

Was this helpful?

  1. Collections & Indexing

NFT Smart Contracts

PreviousRemoving Tokens from a CurationNextAPI

Last updated 4 months ago

Was this helpful?

This page is here to help you guide you if you are a smart contract developer trying to make sure that your contract will be displayed properly on objkt.com and that your royalties can be respected on our marketplace.

Smart Contract Basics

The current NFT standard for tezos is called FA2 and is specified in . FA2 is a flexible multi-asset standard most similar to on EVM based chains.

There are many implementations of this standard. To get started we recommend looking into one of the following resources:

  • a

  • a by

Metadata Standard

Metadata is what brings an NFT alive. follows the & metadata standard for the display of tokens and contract metadata with a small extension related to royalties.

We developed a tool to help you check your metadata:

We also provide JSON Schemas to validate your metadata:

Collection Metadata

can be used to specify global properties of your collection that can be accessed across marketplaces. Here’s an example of contract-level metadata that is supported by objkt:

{
    "name": "My Art Collection",
    "description": "My very personal art collection.",
    "imageUri": "ipfs://QmUMBeEN2zczMKSVHnXwq3qN9KZoV2xBdcoVJq1tT1wnMC",
    "banner": "ipfs://QmUMBeEN2zczMKSVHnXwq3qN9KZoV2xBdcoVJq1tT1wnMC", // not supported yet
    "homepage": "https://my-very-personal-art-website.com",
    "interfaces": ["TZIP-12"]
}

Would result in the following view:

Note: the blue checkmark doesn’t appear for automatically indexed collections. It will only appear for manually verified collections.

TZIP-21 extensions and objkt particularities

Royalties

Royalties and royalty-splits defined in the token-metadata with the following format will automatically be supported by objkt:

{
    [...],
    "royalties": {
       "decimals": 3,
        "shares": {
            "tz1h3rQ8wBxFd8L9B3d7Jhaawu6Z568XU3xY": 50,
            "tz1eY5Aqa1kXDFoiebL28emyXFoneAoVg1zh": 25
        }
    },
    [...]
}

This example defines two royalty recipients with tz1h3rQ8wBxFd8L9B3d7Jhaawu6Z568XU3xY @ 5% and tz1eY5Aqa1kXDFoiebL28emyXFoneAoVg1zh @ 2.5%. The "decimals" field defines the position of the decimal point: 305 with 4 decimals would mean 305 / 10^4 = 0.0305 = 3.05%.

If your contract stores royalties on-chain outside of the token-metadata please get in touch with us.

Receiving royalties on a contract address

Share recipients can be either implicit addresses or contract addresses. Keep in mind that contract addresses need to have a way of dealing with FA1.2 and FA2 tokens since those tokens can be used in general to pay out royalties. Royalty payments made to a contract address without that functionality will be stuck and thus lost.

Minting Tool

Knowing how a token was minted can be extremely useful. Specifying the key mintingTool with an address to the web UI or name+version of the desktop GUI that created this token tells others who to reach out to when the tool generates broken metadata for instance.

{
    [...],
    "mintingTool": "https://example.com/my-minting-ui",
    [...]
}

Token Creators

{
    [...],
    "creators": [
        "Acme Corporation",
        "tz1h3rQ8wBxFd8L9B3d7Jhaawu6Z568XU3xY",
        "tz1eY5Aqa1kXDFoiebL28emyXFoneAoVg1zh"
    ],
    [...]
}

Note: Token creators are not trusted by default for automatically indexed collections, since this would allow for easy impersonation of artists. Instead, they show up in the "Collaboration" tab on the user's profile, where they can "accept" being shown as creator on those tokens.

Attributes

Following the TZIP-21 standard the token metadata can contain a list of attributes:

{
    [...],
    "attributes": [
      { "name": "Background", "value": "Mountains" },
      { "name": "Trees",      "value": "7" },
      { "name": "Size",       "value": "Medium" }
    ],
    [...]
}

If your contract contains 500 1/1 tokens out of which 175 have the attribute "Size / Medium", you would see 35%. Same if your contract contains 100 10/10 (=10 editions per token) out of which 35 tokens (therefore 350 editions) have the attribute "Size / Medium".

By using attributes you will be able to benefit from our trait-offer mechanic.

Accessibility

{
    [...],
    "accessibility": {"hazards": ["flashing", "sound"]},
    [...]
}

NSFW

{
    [...],
    "contentRating": "mature",
    [...]
}

Assets and thumbnails

objkt generates custom thumbnails for every token on Tezos to ensure that your tokens can be displayed quickly on collection pages and inside search. \

Example collection

We developed a tool to help you check your metadata, we highly recommend using it: and checking that your tokens display properly on ghostnet.

The creators array can contain the names of the creators of the assets. Make sure "creators" also contains the Tezos address of the creators, the token will show up as having been created by these addresses on .

sample attributes

The percentage displayed on each attribute is automatically computed by to reflect how many editions of a token from this FA2 contract have this attribute. Therefore the 35% shown in the above example could be because

Hazards can be indicated through accessibility.hazards according to , for instance:

Reminder:

material such as adult content, nudity, gore, etc. can be indicated with:

πŸ–‡οΈ
TZIP-12
ERC1155
SmartPy FA2_lib
LIGO implementation
simplified implementation of a FA2 contract
@jagracar
objkt.com
TZIP-16
TZIP-21
https://objkt-com.github.io/metadata-validator/
https://backend.objkt.media/schema/token-metadata.json
https://backend.objkt.media/schema/collection-metadata.json
Contract-level metadata
https://objkt-com.github.io/metadata-validator/
objkt.com
objkt.com
this vocabulary
Not safe for work
validate your metadata