Chia-Network / chips

Apache License 2.0
45 stars 22 forks source link

CHIP-0021: NFT Fusion Puzzle #86

Open BrandtH22 opened 10 months ago

BrandtH22 commented 10 months ago

This puzzle enables robust nft interactions while maintaining full on-chain provenance and non-fungibility of the associated tokens.

danieljperry commented 10 months ago

This PR has been assigned as CHIP-21 and is now a Draft. It is a Chialisp puzzle for combining, separating, and upgrading NFTs. Please leave your reviews as comments here.

danieljperry commented 10 months ago

We will be holding a public discussion of this CHIP on Wednesday, November 29 at 7 AM PST (3 PM GMT, 11 PM in China). Please message me on Keybase if you would like a Google Calendar invitation.

danieljperry commented 9 months ago

The recording of our call where Brandt discusses this CHIP is on Youtube: https://www.youtube.com/watch?v=Rqd0hNsWgWM

trgarrett commented 9 months ago

@Yakuhito graciously donated some of his time to look over things. I am looking at the following items from his review.

List of pairs length check

When you do `(list_of_pairs NFT_A_LAUNCHER_IDS nft_coin_ids_to_lock)`, can't I just pass `()` as `nft_coin_ids_to_lock` and unlock all NFTs? I don't see the length to be checked anywhere, and list_of_pairs finishes execution once a list is empty

offer wallet asserts

offer_wallet_asserts ; an additional list of puzzlehash-msg announcements to assert -> are you sure this is required? since they don't create coins, someone can just modify the param to be an emty list and replace any mempool sb

OFFER_MOD_HASH should be enforced in full puzzle hash check


you pass OFFER_MOD_HASH through the puzzle, but you lose is by the time you get here: https://github.com/trgarrett/fusion-clsp/blob/main/clsp/fusion_singleton.clsp#L90 - make sure the singletons that create the puzzle announcements really have an inner puzzle of OFFER_MOD (inside the state layer, I think?) - otherwise, they might create fake announcements to trick you (e.g., the inner puzzle is my p2_, but I tell it to make the right announcement to satisfy the assert)

i.e., replace nft_inner_puzzlehashes with curry_hashes_inline NFT_STATELAYER_MOD_HASH (...) OFFER_MOD_HASH (...)

might also be applicable to https://github.com/trgarrett/fusion-clsp/blob/main/clsp/fusion_singleton.clsp#L64 - not sure since one side is always locked```
BrandtH22 commented 9 months ago

The recording of our call where Brandt discusses this CHIP is on Youtube: https://www.youtube.com/watch?v=Rqd0hNsWgWM

Two questions arose during the zoom call:

More information for these will be included in the chip prior to it being moved to the next state, we will also include more information on the clsp puzzle as it is finalized.

BrandtH22 commented 2 weeks ago

@danieljperry we are ready to move this out of draft 🥳

danieljperry commented 2 weeks ago

This CHIP is now in Review. Please leave your reviews here.

danieljperry commented 2 weeks ago

In addition, we will be holding a public Zoom call to discuss this CHIP on September 3 at 7 AM PDT / 1400 UTC. See the #chips channel in our Discord for more info.

danieljperry commented 2 weeks ago

The video from our Zoom call is located here: https://youtu.be/M93hGeOEC3Q

Please leave your reviews for this CHIP as comments in this PR. If there are no major issues, we will move toward finalizing it soon.