Smart contracts are computer programs or transaction protocols designed to automatically execute, control, or document binding actions or events.
These digital contracts are trustless, autonomous, decentralized, and transparent — and are usually irreversible and unmodifiable once deployed.
Smart contracts can be used for:
Financial transactions;
Exchanges of digital goods and services;
Exchange of coins;
Building DAOs (Decentralized Autonomous Organization);
Legal agreements;
Real Estate (fractional ownership);
A Non-Fungible Token is a unique digital identifier that cannot be copied, substituted, or subdivided, that is recorded in a blockchain, and that is used to certify authenticity and ownership.
NFTs are created via a process known as minting, which involves converting images, videos, sound bites, and other digital files into crypto assets on a blockchain. Essentially, when you mint NFTs, you’re configuring the underlying smart contract code that decides the qualities of your crypto assets.
You will need to cover everything, starting from Art & attributes, ending with all the integrations you might require.
What needs to be defined:
Art - Attributes;
Generative Art;
Metadata & Images;
Total Supply: number of NFT that can be minted;
Price and logic of minting;
Tokenomics;
Additional Features that need to be implemented;
Additional Extensions that need to be implemented;
Integrations.
Airdrop and whitelists - We can generate tokens for a predefined set of addresses without any conditions and fees.
Reveal - When the user mints NFT, you display a placeholder and after a certain period of time (could be 1 or even 15 days), you reveal the actual image.
Staking - Stake your tokens to receive back rewards.
Voting and Governance - Token owners can vote against proposals. Voting has different options, one can initiate a proposal that triggers a real transaction for example. And then voting passes -> the transaction is executed. More details here: https://docs.openzeppelin.com/contracts/4.x/governance#proposal_lifecycle
Breeding - the user can merge two NFTs and mint a new NFT;
Burn - One can burn tokens; It is often used in Breeding, wherein the old NFTs that were used for breeding get burned.
Pausable - The owner can pause all transactions;
Freezable - The owner can freeze their tokens on anybody’s wallet, meaning they will not be able to do transactions on it.
Upgradeability - We can make source codes of contracts upgradable, even more, we can separate state and logic contracts and make some parts of them upgradeable.
Gating — Tokens can be used to allow/disallow certain actions on-chain and off-chain
Payments — We can make users/customers pay using internal (utility) tokens;
3rd party integrations — Tokens can be exchanged for NFTs and vice versa. In addition to that, exchange with other tokens if we find any good synergy with other projects.
Wallets & Web2 — TKN will be displayed inside wallets as assets and also on web pages and other web2/web3 systems where we need it.

