Skip to content

Commit

Permalink
feat(core): add support for NMKR datum NFTs
Browse files Browse the repository at this point in the history
  • Loading branch information
mkazlauskas committed May 8, 2024
1 parent e7867d3 commit 7433747
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
5 changes: 3 additions & 2 deletions packages/core/src/Asset/NftMetadata/fromPlutusData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,9 @@ export const fromPlutusData = (
parentLogger: Logger
): NftMetadata | null => {
const logger = contextLogger(parentLogger, 'NftMetadata.fromPlutusData');
if (!isConstrPlutusData(plutusData) || plutusData.constructor !== 0n || plutusData.fields.items.length < 3) {
logger.debug('Invalid PlutusData: expecting ConstrPlutusData with 0th constructor and 3 items');
if (!isConstrPlutusData(plutusData) || plutusData.constructor !== 0n || plutusData.fields.items.length < 2) {
// Actually CIP-68 requires exactly 3 items, but it is not how NMKR mints it
logger.debug('Invalid PlutusData: expecting ConstrPlutusData with 0th constructor and 2 items');
return null;
}

Expand Down
15 changes: 15 additions & 0 deletions packages/core/test/Asset/NftMetadata/fromPlutusData.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -318,4 +318,19 @@ describe('NftMetadata.fromPlutusData', () => {
expect(typeof nftMetadata.otherProperties?.get('og')).toBe('bigint');
expect(nftMetadata.files).toBeUndefined();
});

it('can convert NMKR datum', () => {
const nmkrDatum = HexBlob(
'd8799fa5446e616d654b6e6d6b724e4654386d617945696d6167655835697066733a2f2f516d4e77566157314b655471424a4b4b6963355553443165424c41315a48396b596b455674535952423646314d64496d656469615479706549696d6167652f706e674b6465736372697074696f6e404566696c65739fa3496d656469615479706549696d6167652f706e67446e616d654b6e6d6b724e4654386d6179437372635835697066733a2f2f516d4e77566157314b655471424a4b4b6963355553443165424c41315a48396b596b455674535952423646314d64ff01ff'
);
const datum = Serialization.Datum.newInlineData(
Serialization.PlutusData.fromCbor(nmkrDatum)
).toCore() as Cardano.PlutusData;

const nftMetadata = Asset.NftMetadata.fromPlutusData(datum, logger)!;

expect(nftMetadata).toMatchObject({
name: 'nmkrNFT8may'
});
});
});

0 comments on commit 7433747

Please sign in to comment.