@@ -17,6 +17,7 @@ Discussions:
17
17
- https://github.com/cardano-foundation/CIPs/pull/471
18
18
- https://github.com/cardano-foundation/CIPs/pull/494
19
19
- https://github.com/cardano-foundation/CIPs/issues/520
20
+ - https://github.com/cardano-foundation/CIPs/pull/586
20
21
Created : 2022-07-13
21
22
License : CC-BY-4.0
22
23
---
@@ -515,26 +516,6 @@ the Plutus validator context. To do this we
515
516
4 . Verify validity of datum of the referenced output by checking if policy ID of ` reference NFT ` and ` user token ` and
516
517
their asset names without the ` asset_name_label ` prefix match. (on-chain)
517
518
518
- ## Rationale: how does this CIP achieve its goals?
519
-
520
- Without separation of ` reference NFT ` and ` user token ` you lose all flexibility and moving the ` user token ` would be
521
- quite cumbersome as you would need to add the metadata everytime to the new output where the ` user token ` is sent to.
522
- Hence, you separate metadata and ` user token ` and lock the metadata inside another UTxO, so you can freely move
523
- the ` user token ` around.
524
-
525
- In order to reference the correct UTxO containing the metadata, it needs to be authenticated, otherwise metadata
526
- spoofing attacks become possible. One way to achieve that is by adding an NFT (` reference NFT ` ) to the UTxO. This NFT
527
- needs to under the same Policy ID as the ` user token ` , followed by an asset name pattern defined in the standard. This
528
- way you create a secure link between ` reference NFT ` and ` user token ` without the need for any extra data, and you can
529
- make use of this off-chain and on-chain.
530
-
531
- The security for the link is derived from the minting policy itself, so it's important to write the validator with the
532
- right constraints and rules since this CIP solely defines the interface to keep flexibility as high as possible.
533
-
534
- ### Backward Compatibility
535
-
536
- To keep metadata compatibility with changes coming in the future, we introduce a ` version ` field in the datum.
537
-
538
519
### Extending & Modifying this CIP
539
520
540
521
> The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
@@ -582,22 +563,51 @@ review prior to official acceptance. These separate CIPs **MUST** include a plan
582
563
versions of the affected tokens. ` asset_name_labels ` ** MUST** only be marked obsolete once a modifying CIP achieves the
583
564
` accepted ` status.
584
565
566
+ ### Changelog
567
+
568
+ #### version 1
569
+
570
+ - NFT (222) & FT (333) asset classes
571
+
572
+ #### version 2
573
+
574
+ - Added new RFT asset class (444)
575
+
576
+ ## Rationale: how does this CIP achieve its goals?
577
+
578
+ Without separation of ` reference NFT ` and ` user token ` you lose all flexibility and moving the ` user token ` would be
579
+ quite cumbersome as you would need to add the metadata everytime to the new output where the ` user token ` is sent to.
580
+ Hence, you separate metadata and ` user token ` and lock the metadata inside another UTxO, so you can freely move
581
+ the ` user token ` around.
582
+
583
+ In order to reference the correct UTxO containing the metadata, it needs to be authenticated, otherwise metadata
584
+ spoofing attacks become possible. One way to achieve that is by adding an NFT (` reference NFT ` ) to the UTxO. This NFT
585
+ needs to under the same Policy ID as the ` user token ` , followed by an asset name pattern defined in the standard. This
586
+ way you create a secure link between ` reference NFT ` and ` user token ` without the need for any extra data, and you can
587
+ make use of this off-chain and on-chain.
588
+
589
+ The security for the link is derived from the minting policy itself, so it's important to write the validator with the
590
+ right constraints and rules since this CIP solely defines the interface to keep flexibility as high as possible.
591
+
592
+ ### Backward Compatibility
593
+
594
+ To keep metadata compatibility with changes coming in the future, we introduce a ` version ` field in the datum.
595
+
585
596
## Path to Active
586
597
587
598
### Acceptance Criteria
588
599
600
+ - [X] Open-source more practical implementations/projects which make use of this CIP.
601
+ - [X] Introduce a ` version ` integer datum field to increment for new asset classes or
602
+ changes to the on-chain format.
603
+
604
+ ### Implementation Plan
605
+
589
606
- [X] Agree on a binary encoding for asset name labels
590
607
in [ CIP-0067] ( https://github.com/cardano-foundation/CIPs/pull/298 ) .
591
608
- [X] Get support for this CIP by wallets, explorers, tools, minting platforms and other 3rd parties.
592
609
- [X] Minimal reference implementation making use of [ Lucid] ( https://github.com/spacebudz/lucid ) (
593
610
off-chain), [ PlutusTx] ( https://github.com/input-output-hk/plutus ) (on-chain): [ Implementation] ( ./ref_impl )
594
- - [X] Open-source more practical implementations/projects which make use of this CIP.
595
-
596
- ### Implementation Plan
597
-
598
- To keep metadata compatibility with changes coming in the future, we introduce
599
- a ` version ` field in the datum as an integer to increment. New asset classes or
600
- changes to the on-chain format must come with a version bump.
601
611
602
612
## References
603
613
@@ -607,16 +617,6 @@ changes to the on-chain format must come with a version bump.
607
617
- [ RFC 3986 - Uniform Resource Identifier (URI)] ( https://www.rfc-editor.org/rfc/rfc3986 )
608
618
- [ RFC 2397 - The "data" URL scheme] ( https://datatracker.ietf.org/doc/html/rfc2397 )
609
619
610
- ### Changelog
611
-
612
- #### version 1
613
-
614
- - NFT (222) & FT (333) asset classes
615
-
616
- #### version 2
617
-
618
- - Added new RFT asset class (444)
619
-
620
620
## Copyright
621
621
622
622
This CIP is licensed under [ CC-BY-4.0] ( https://creativecommons.org/licenses/by/4.0/legalcode ) .
0 commit comments