<p>Yes, you can do that.</p>
<p>An example could be to use a sequence number in a validator script (smart contract) in conjuction with a policy.</p>
<ul>
<li>Validator script (smart contract) should manage the sequence number. For this, you can use the datum. Every time you mint a NFT, check that datum has increased (+1).</li>
<li>Policy can be the same for all tokens. You can append to your token name, the sequence number (here you can find a <a href="https://github.com/input-output-hk/plutus/issues/3657#issuecomment-954841099" rel="nofollow noreferrer">function to convert integer to bytestring</a>)</li>
</ul>
<p>Just make sure, to use a dummy NFT in your validator script:</p>
<ul>
<li>To identify the right UTXO every time you mint</li>
<li>To validate from the policy script that it's included in the transaction.</li>
</ul>
<p>Here is a <a href="https://cardano.stackexchange.com/a/4818/1231">good explanation</a> for that.</p>

CC BY-SA 4.0
2021-12-20T18:53:44.077Z
Nice thanks that helps out a ton.
Floof99
CC BY-SA 4.0
2021-12-20T00:56:07.267Z
2021-12-20T00:56:07.267Z
georgeos
<p>@georgeos answer is correct</p>
<p>I'd like to point out another way you could implement this:</p>
<p>You could use the consumer's UTxO as an input into the Token Name (it's common to use it as an parameter of the script to affect the policy name). Then you don't need to track state on a datum.</p>
<p>I'll mention, these methods will make the tokens non-fungible and unique, but if anyone can mint the NFTs they might not be particularly scarce--something to keep in mind. That being said, I think there are still some interesting uses for these patterns. And there would be additional ways to make the tokens scarce with time constraints, etc.</p>

CC BY-SA 4.0
2021-12-21T01:17:15.420Z
Would a boolean statement be a good way to stop the minting of an asset after x number of new NFT's, in the method provided.
Floof99
CC BY-SA 4.0
2021-12-21T09:25:17.517Z
Yeah. Plutus scripts are all just Boolean statements, essentially. Only allowing x tokens to be made is a constraint you could add, for sure.
Mitchell Turner
CC BY-SA 4.0
2021-12-23T02:57:47.570Z
This method will still keep the same Policy ID for all tokens minted right?
Floof99
CC BY-SA 4.0
2021-12-20T01:11:20.617Z
2021-12-20T01:11:20.617Z
Mitchell Turner
<p>I want to create a NFT collection in which the creator does not have to mint the NFT's but the consumer does through a smart contract that they interact with. Would this be possible to do while sill keeping the same policy ID for each NFT or is that only possible by pre-minting the NFT's and sending them to a storing wallet.</p>

<smart-contract><nft>
Is it possible to make a NFT collection by having consumer mint the NFT's
# Is it possible to make a NFT collection by having consumer mint the NFT's

(Asked by: username_0 on 2021-12-19)

I want to create a NFT collection in which the creator does not have to mint the NFT's but the consumer does through a smart contract that they interact with. Would this be possible to do while sill keeping the same policy ID for each NFT or is that only possible by pre-minting the NFT's and sending them to a storing wallet.

**Tags:** smart-contract, nft

---

## 2 answers

### Answer by username_1 on 2021-12-20. Score: 1

Yes, you can do that.

An example could be to use a sequence number in a validator script (smart contract) in conjuction with a policy.

* Validator script (smart contract) should manage the sequence number. For this, you can use the datum. Every time you mint a NFT, check that datum has increased (+1).
* Policy can be the same for all tokens. You can append to your token name, the sequence number (here you can find a [function to convert integer to bytestring](https://github.com/input-output-hk/plutus/issues/3657#issuecomment-954841099))

Just make sure, to use a dummy NFT in your validator script:

* To identify the right UTXO every time you mint
* To validate from the policy script that it's included in the transaction.

Here is a [good explanation](https://cardano.stackexchange.com/a/4818/1231) for that.

> **Comments:**
> **username_0**: Nice thanks that helps out a ton.  

---

### Answer by username_2 on 2021-12-20. Score: 0

@georgeos answer is correct

I'd like to point out another way you could implement this:

You could use the consumer's UTxO as an input into the Token Name (it's common to use it as an parameter of the script to affect the policy name). Then you don't need to track state on a datum.

I'll mention, these methods will make the tokens non-fungible and unique, but if anyone can mint the NFTs they might not be particularly scarce--something to keep in mind. That being said, I think there are still some interesting uses for these patterns. And there would be additional ways to make the tokens scarce with time constraints, etc.

> **Comments:**
> **username_0**: Would a boolean statement be a good way to stop the minting of an asset after x number of new NFT's, in the method provided.  
> **username_2**: Yeah. Plutus scripts are all just Boolean statements, essentially. Only allowing x tokens to be made is a constraint you could add, for sure.  
> **username_0**: This method will still keep the same Policy ID for all tokens minted right?  

---

