# Web3 101

## **What is a Smart Contract?**

The building block of any NFT is the contract that you first need to deploy to a blockchain. Think of this contract as public way to show who owns which NFT (i.e., it's a simple table that has the user’s wallet address in the left column and the NFT the user owns in the right column). Below are the types of contracts available on 3mint.

### Single Copy (ERC-721)

This standard is used for creating tokens that are all non-fungible. Non-fungible means that an item is one of a kind, completely unique, and can't be traded for another item. Examples of collections that use ERC-721 include Bored Apes Yacht Club, Cryptopunks, and Cryptokitties.

#### Key Characteristics

* Non-fungible tokens representing ownership of arbitrary data.
* Only one NFT can reside in a single contract.
* Ideal for digital assets that represent one's immutable ownership of those assets (e.g. digital art).

### Multiple Copies (ERC-1155)

This standard is used for creating tokens that can be fungible, semi-fungible, and/or non-fungible. This is a common choice for creating multiple copies of a token and minting many NFTs at scale. Example use cases include in-game items and pick-ups, NFT tickets, songs, proof of attendance, etc.

#### Key Characteristics

* Semi-fungible tokens categorized by token kind.
* Multiple NFTs can reside in a single contract.
* Ideal for gaming collectables, membership badges, and POAPs.

### Token (ERC-20)

This standard is used for creating the equivalent of virtual currencies on a blockchain. By default, every ERC-20 token is fungible and is not considered an NFT. There is no artwork or other media (image, video, etc.) attached to the token.

**Key Characteristics**

* Fungible token that can be used as currency
* No digital content or metadata associated
* Ideal for loyalty points

It is important to understand your current and future use case before committing to a contract type as the contracts are not upgradable and can't be changed once deployed. **If you would like a more technical breakdown of each contract available on 3mint, visit the** [**Contract Architectures**](/developer-guides/contracts/contract-architecture.md) **page**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.3mint.io/faq/web3-101.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
