Skip to content

Commit 3f0af2e

Browse files
authoredJan 6, 2024
CIP-0068 | Adjust preamble and structure w.r.t CIP-0001 (cardano-foundation#715)
* first draft remediation of CIP-0068 * hadn't yet added last round of (partial) remediation * unfolding References from subsection of Rationale
1 parent 32ca394 commit 3f0af2e

File tree

1 file changed

+37
-37
lines changed

1 file changed

+37
-37
lines changed
 

‎CIP-0068/README.md

+37-37
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Discussions:
1717
- https://github.com/cardano-foundation/CIPs/pull/471
1818
- https://github.com/cardano-foundation/CIPs/pull/494
1919
- https://github.com/cardano-foundation/CIPs/issues/520
20+
- https://github.com/cardano-foundation/CIPs/pull/586
2021
Created: 2022-07-13
2122
License: CC-BY-4.0
2223
---
@@ -515,26 +516,6 @@ the Plutus validator context. To do this we
515516
4. Verify validity of datum of the referenced output by checking if policy ID of `reference NFT` and `user token` and
516517
their asset names without the `asset_name_label` prefix match. (on-chain)
517518

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-
538519
### Extending & Modifying this CIP
539520

540521
> The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
@@ -582,22 +563,51 @@ review prior to official acceptance. These separate CIPs **MUST** include a plan
582563
versions of the affected tokens. `asset_name_labels` **MUST** only be marked obsolete once a modifying CIP achieves the
583564
`accepted` status.
584565

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+
585596
## Path to Active
586597

587598
### Acceptance Criteria
588599

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+
589606
- [X] Agree on a binary encoding for asset name labels
590607
in [CIP-0067](https://github.com/cardano-foundation/CIPs/pull/298).
591608
- [X] Get support for this CIP by wallets, explorers, tools, minting platforms and other 3rd parties.
592609
- [X] Minimal reference implementation making use of [Lucid](https://github.com/spacebudz/lucid) (
593610
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.
601611

602612
## References
603613

@@ -607,16 +617,6 @@ changes to the on-chain format must come with a version bump.
607617
- [RFC 3986 - Uniform Resource Identifier (URI)](https://www.rfc-editor.org/rfc/rfc3986)
608618
- [RFC 2397 - The "data" URL scheme](https://datatracker.ietf.org/doc/html/rfc2397)
609619

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-
620620
## Copyright
621621

622622
This CIP is licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).

0 commit comments

Comments
 (0)
Please sign in to comment.