8个稳定版本 (3个主要版本)

6.0.0 2024年8月26日
5.3.1 2024年5月6日
5.2.0 2024年3月15日
5.1.0 2024年2月1日
1.1.0 2023年12月21日

#36#cardano

34 每月下载量
2 crates 中使用

MIT 许可证

2MB
45K SLoC

cml-cip25

CIP25 (Cardano NFT元数据) 的跨平台SDK

这可以用于解析和创建兼容CIP25的元数据。

解析可以直接从元数据字节中进行

let schema = wasm.CIP25.CIP25Metadata.from_bytes(Buffer.from("a11902d1a26464617461a144baadf00da144cafed00da5646e616d656d4d65746164617461204e616d656566696c657382a3637372636473726331646e616d656966696c656e616d6531696d65646961547970656966696c657479706531a3637372636473726332646e616d656966696c656e616d6532696d65646961547970656966696c65747970653265696d6167657821687474733a2f2f736f6d652e776562736974652e636f6d2f696d6167652e706e67696d656469615479706567696d6167652f2a6b6465736372697074696f6e776465736372697074696f6e206f662074686973204e46546776657273696f6e02", "hex"));

// the above CBOR hex is for a V2 CIP25 schema. You should check which type it is first
// as as_label_metadata_v2() will return None (undefined) if it's a v1 schema
let v2Schema = schema.key_721().as_label_metadata_v2().data();
let policies = v2Schema.keys();
for (var i = 0; i < policies.len(); ++i) {
  let policy = policies.get(i);
  let assets = v2Schema.get(policy);
  let assetNames = assets.keys();
  for (var j = 0; j < assetNames.len(); ++j) {
    let assetName = assetNames.get(j);
    let details = assets.get(assetName);
    console.log(`CIP25 NFT ${policy.toString("hex")}.${asset_name.toString("hex")} found:`);
    console.log(`  name: ${details.name().to_str()}`);
    console.log(`  image: ${details.image().to_string()}`);
    let mediaType = details.media_type();
    if (mediaType != null) {
      console.log(`  media_type: ${mediaType.to_str()}`);
    }
    let description = details.media_type();
    if (description != null) {
      console.log(`  description: ${description.to_str()}`);
    }
    let files = details.files();
    if (files != null) {
      console.log(`  files:`);
      for (var k = 0; k < files.len(); ++k) {
        let file = files.get(k);
        console.log(`    file #${k + 1}:`);
        console.log(`      name: ${file.name().to_str()}`);
        console.log(`      media_type: ${file.media_type().to_str()}`);
        console.log(`      src: ${file.src().to_string()}`);
      }
    }
  }
}

我们还支持宽松的NFT解析,以尝试从可能格式错误的CIP25中解析关键信息

const details = wasm.CIP25.MiniMetadataDetails.loose_parse(Buffer.from("a1646e616d65694d6574617665727365", "hex"));
console.log(details.name());

依赖项

~7–14MB
~171K SLoC