<p>Additionally, <a href="https://github.com/cardano-foundation/CIPs/commit/14c4f57eadde3c74562c50aac75f9466c1bc10fe" rel="nofollow noreferrer">CIP-33</a> (Reference Scripts) is currently being worked on by Cardano Foundation.</p>
<p>In a nutshell, it would establish a standard for attaching commonly used scripts to outputs that will never be spent; allowing all subsequent transactions to reference said outputs instead of resubmitting the same script every time. This would drastically reduce TX size for such commonly used scripts, making them cheaper and mitigating chain bloat.</p>

CC BY-SA 4.0
2021-12-21T09:30:27.427Z
CIP-31 is also worth calling out. It would allow read-only UTxOs, where you wouldn’t need to consume the datum on read.
Mitchell Turner
CC BY-SA 4.0
2021-12-21T13:13:28.670Z
Yes, I believe CIP-33 actually relies on CIP-31,as the former is more of a standard whereas the latter is an actual protocol.
zhekson
CC BY-SA 4.0
2021-12-21T01:43:08.940Z
2021-12-21T02:08:13.323Z
2021-12-21T02:08:13.323Z
zhekson
<p>You can require a new datum be created as part of the validation.</p>
<p>Validator scripts simply validate <em>transactions</em> that spend UTxOs at the script address. They are able to look at the entire context of the transaction, including the outputs. It is true that a EUTxO can only be spent once, but you can add the requirement that an updated datum be returned to the script address after the old datum is spent, thus allowing the next person to interact with the script.</p>

CC BY-SA 4.0
2021-12-20T01:00:18.230Z
2021-12-20T01:00:18.230Z
Mitchell Turner
<p>Im confused if a eUTXO can only be interacted with and used up once how can you do a NFT sale? If I were to make a smart contract to distribute NFT's from a wallet can that be interacted with by multiple people?</p>

CC BY-SA 4.0
2021-12-20T01:05:43.433Z
I think I understood the context of your question, but could you add more details to what you mean by "if a eUTXO can only be used once how can you do a NFT sale?" Others might not have as much context and there are many ways to implement an "NFT sale."
Mitchell Turner
<smart-contract><nft><eutxo>
Can a smart contract only be interacted with once
# Can a smart contract only be interacted with once

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

Im confused if a eUTXO can only be interacted with and used up once how can you do a NFT sale? If I were to make a smart contract to distribute NFT's from a wallet can that be interacted with by multiple people?

**Tags:** smart-contract, nft, eutxo
> **Comments:**
> **username_1**: I think I understood the context of your question, but could you add more details to what you mean by "if a eUTXO can only be used once how can you do a NFT sale?" Others might not have as much context and there are many ways to implement an "NFT sale."  

---

## 2 answers

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

You can require a new datum be created as part of the validation.

Validator scripts simply validate *transactions* that spend UTxOs at the script address. They are able to look at the entire context of the transaction, including the outputs. It is true that a EUTxO can only be spent once, but you can add the requirement that an updated datum be returned to the script address after the old datum is spent, thus allowing the next person to interact with the script.


---

### Answer by username_2 on 2021-12-21. Score: 1

Additionally, [CIP-33](https://github.com/cardano-foundation/CIPs/commit/14c4f57eadde3c74562c50aac75f9466c1bc10fe) (Reference Scripts) is currently being worked on by Cardano Foundation.

In a nutshell, it would establish a standard for attaching commonly used scripts to outputs that will never be spent; allowing all subsequent transactions to reference said outputs instead of resubmitting the same script every time. This would drastically reduce TX size for such commonly used scripts, making them cheaper and mitigating chain bloat.

> **Comments:**
> **username_1**: CIP-31 is also worth calling out. It would allow read-only UTxOs, where you wouldn’t need to consume the datum on read.  
> **username_2**: Yes, I believe CIP-33 actually relies on CIP-31,as the former is more of a standard whereas the latter is an actual protocol.  

---

