# Packs and Rewards

$PACK Protocol has two primitives - packs and rewards. In this section, we give a technical explanation of what packs and rewards are, and the role they play in the protocol.

![](https://3276703226-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdSPak5YQbbmBeLd2Zm%2F-MhURN58xlv9HZO7qV-G%2F-MhURRaBT0vf86o1qAIy%2Fpp-hero.png?alt=media\&token=857baa7a-8b77-4d74-9e3f-57f0b4565aa9)

## Packs

Packs are designed to work as generic packs that contains rewards in them, where a pack can be 'opened' to retrieve the rewards in that pack. Packs like these already exist as e.g. regular [Pokemon card packs](https://www.pokemoncenter.com/category/booster-packs), or in other forms that use blockchain technology, like [NBA Topshot](https://nbatopshot.com/) packs.&#x20;

Packs are [ERC 1155](https://eips.ethereum.org/EIPS/eip-1155#motivation) tokens. Adopting the ERC 1155 token standard for packs allows the protocol to create different kinds of packs, where each kind of pack is individuated by a unique set of underlying rewards, and has it's own independent supply.

A fixed supply of packs is created when someone creates packs with a set of underlying rewards. The total amount of packs created is equal to the sum of the amounts of each kind of reward it contains. For example, if someone creates packs with three underlying rewards - packing an amount 5, 15 and 80 of each - a total of 100 packs are created.&#x20;

The protocol assigns each new set of packs created in this way, with a unique integer token ID.

The supply of packs decreases when packs are opened in exchange for one of the pack's rewards. Packs are burned when they are opened; they can be opened only one at a time.&#x20;

Packs 1-1 represent their underlying rewards, which guarantees the receipt of a reward on opening a pack.&#x20;

## Rewards

$PACK Protocol recognizes any [ERC 1155](https://eips.ethereum.org/EIPS/eip-1155) token as a reward. Adopting the ERC 1155 token standard for rewards means a pack can have different kinds of rewards, each having its own independent supply.

{% hint style="info" %}
Further motivation behind adopting the ERC 1155 standard for rewards can be found in the *Motivation* section of the official ERC 1155 standard write-up, [here](https://eips.ethereum.org/EIPS/eip-1155#motivation).&#x20;
{% endhint %}

Other kinds of crypto assets, like [ERC 721](https://eips.ethereum.org/EIPS/eip-721) NFTs or [ERC 20](https://eips.ethereum.org/EIPS/eip-20) tokens must be wrapped as ERC 1155 tokens to create packs with those tokens as rewards. This allows for creative ways to bundle arbitrary crypto assets as rewards.

### Example: Token giveaways

Let's say we want to giveaway 10,000 [$SUSHI](https://docs.sushi.com/), an ERC 20 token. We want to structure our giveaway such that one lucky person wins 1000 $SUSHI, 400 people win 10 $SUSHI each, and 5000 other people receive 1 $SUSHI for participating in the giveaway.

To accomplish this, we wrap different amounts of our $SUSHI as different ERC 1155 tokens.

We wrap 1000 $SUSHI as an ERC 1155 token with supply `1`, 4000 $SUSHI as an ERC 1155 token with supply  `400`, and the rest 5000 $SUSHI as an ERC 1155 token with supply `5000`.

We create our set of packs with these three different kinds of ERC 1155 wrapped $SUSHI tokens. Since the amount of packs minted is equal to the sum of the supplies of its underlying rewards, we will have minted `1 + 400 + 5000` i.e. `5401` packs.

We choose to airdrop our pack to 5401 people - one pack each.

Since packs 1-1 represent their underlying rewards, of those people, `1` lucky person will receive `5000/1` i.e. 5000 $SUSHI on opening a pack, `400` people will receive `4000/400` i.e. 10 $SUSHI, and the rest of the 5000 people will receive `5000/5000` i.e. 1 $SUSHI.


---

# 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://nkrishang.gitbook.io/pack-protocol/how-pack-protocol-works/packs-and-rewards.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.
