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 中使用
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