completed
cip25 (NFT) Rust & WASM library
Current Project Status
Complete
Amount
Received
$7,000
Amount
Requested
$7,000
Percentage
Received
100.00%
Solution

We will create a native Rust, WASM and Typescript library that parses CIP25 from CBOR based on its CDDL specification given in CIP25

Problem

CIP25, the NFT standard for Cardano, currently does not have an open source Rust, WASM or Typescript library to parse the on-chain metadata. Instead, users simply use a JSON representation of its data

Impact / Alignment
Feasibility
Auditability

dcSpark

3 members

cip25 (NFT) Rust & WASM library

Please describe your proposed solution.

Currently, there is no native Rust library that supports CIP25. That means Rust projects that many users depend on such as Oura, Carp, CSL and CML all have ad-hoc implementations of CIP25 parsing. This is unfortunately because it allows limited indexing of CIP25 data using these tools and, in the worst case, can lead to subtle errors on CBOR parsing.

We plan to solve this by writing a native Rust library for CIP25 parsing that makes use of dcSpark's latest work on transaction metadata library codegen based off CDDL specifications. We intend to also make this library usable from WASM and therefore Typescript as well which should be usable from most Cardano projects.

Please describe how your proposed solution will address the Challenge that you have submitted it in.

Currently developer tools written in Rust have ad-hoc implementations of CIP25 which restricts the functionality they can support and increases the chance of subtle bugs. This library will make it easier to write dev tools in Rust, WASM-compatible languages and Typescript that need to consume the CIP25 standard

What are the main risks that could prevent you from delivering the project successfully and please explain how you will mitigate each risk?

CIP25 is just a standard for Cardano and a lot of NFT projects have made mistakes in its implementation due to the lack of a CIP25 library like the one we are proposing to create. That means this library won't be able to parse these projects properly. Future work may be required to loosen the format to allow for these projects to be supported

Please provide a detailed plan, including timeline and key milestones for delivering your proposal.

  1. Update the cddl-codgen to implement any feature that was needed for NFT support that was not covered under https://cardano.ideascale.com/c/idea/419158
  2. Generate the core (de)serialization logic from the CDDL definition
  3. Add utility functions as needed
  4. Publish as a crate & NPM package
  5. Integrate in projects such as Carp & Oura

Please provide a detailed budget breakdown.

All funds will be used towards the development costs of the project

Please provide details of the people who will work on the project.

Github handles are SebastienGllmt and rooooooooob

If you are funded, will you return to Catalyst in a later round for further funding? Please explain why / why not.

No, unless there is a large breaking change to CIP25 in the future that requires a significant rewrite (no such thing planned)

Please describe what you will measure to track your project's progress, and how will you measure these?

Progress towards the implementation as outlined by the steps mentioned above

What does success for this project look like?

Successful release of this project and having it integrated into other tools

Please provide information on whether this proposal is a continuation of a previously funded project in Catalyst or an entirely new one.

New project

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00