Skip to content

Latest commit

 

History

History
507 lines (483 loc) · 16.7 KB

lsp4-digital-asset-metadata.md

File metadata and controls

507 lines (483 loc) · 16.7 KB
sidebar_position title
2
LSP4DigitalAssetMetadata

LSP4DigitalAssetMetadata

uploadMetadata

LSP4DigitalAssetMetadata.uploadMetadata(lsp4Metadata [, options]);

Uploads and processes passed assets and images, and uploads the LSP4 Digital Asset Metadata to IPFS. The uploadMetadata function is available as a static or non-static function callable on the LSPFactory library instance.

If options are not specified in the function call, and the function is used on an LSPFactory instance, the specified options that were passed to the LSPFactory during instantiation will be used.

Parameters

1. metaData - Object (optional)

Name Type Description
description String A description of the digital asset.
links (optional) Array An Array of Objects containing title and url parameters.
icon (optional) File | Array The icon of the digital asset passed as a JavaScript File object or an Array of image metadata objects for different sizes of the same image.
images (optional) Array An Array of images where each image element is a JavaScript File object or an Array of image metadata Objects for different sizes of the same image.
assets (optional) Array An Array of assets where each asset is a JavaScript File object or an asset metadata Object.

OR

Name Type Description
LSP4Metadata Object Object containing description, links, icon, images, assets as described above

2. options - Object (optional)

Name Type Description
ipfsGateway (optional) String | Object ipfsGateway URL string or IPFS Client Options as defined by the ipfs-http-client library used internally.

Returns

Type Description
Promise The processed LSP4 data and upload URL.

Examples

const image = new File();
const icon = new File();
const asset = new File();

await LSP4DigitalAssetMetadata.uploadMetadata(
  {
      description: "Digital Asset",
      assets: [asset],
      images: [image],
      icon: icon,
      links: [{ title: "LUKSO Docs", url: "https://docs.lukso.tech"}],
  };
);
/**
{
  json: {
    LSP4Metadata: {
      description: 'Digital Asset',
      assets: [
        {
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x5f3dbd89cde4dde36241c501203b67a93b89908063f5516535136bc25f712e11",
          },
          "url": "ipfs://QmWkAki4mLq2cshpbKs4HFCaZdpUX1jLKKfb5y8YMATkwk",
          "fileType": "image/jpeg"
        }
      ],
      images: [
        [
          {
            "width": 1800,
            "height": 1800,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0x5c6125b5a553337b5ad55610c47114bf58d33c7a21aef14b0ed4c214203c9ca7",
            },
            "url": "ipfs://QmPCQwamReJshNiqSSzf4zMVffNiDx44ykTf1zY95vG6rv"
          },
          {
            "width": 1024,
            "height": 1024,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xc4d1d37a8545012be38a8f33f9a53daceab955a17310bcfffe00f34811506938",
            },
            "url": "ipfs://Qme8tedX78TaxVwtvacJyS7bcSwe69F4aNnknUzL3gYdFY"
          },
          {
            "width": 640,
            "height": 640,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xa63ebb82e8c428c9a02f1c0a040199748844dccf62e75fcd85454bce4acd4afd",
            },
            "url": "ipfs://QmdQRdeeGGmWCPs1iCtxiNzHMZemFpvcsdvweCdnufHdqr"
          },
          {
            "width": 320,
            "height": 320,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0x2ab638bb61f4cb686c3ca5ca09285e4507ad2328c0b5f6e10378425ed7c75cd9",
            },
            "url": "ipfs://QmfYYafv6ucuKSm3EbcJxho9Cr2g5Pa3yhv7TaANbP8jbg"
          },
          {
            "width": 180,
            "height": 180,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xefb0b36b3bba2338c18b2b55a0cbc52f04eda03e9b58ca8d04a92fc9b1387853",
            },
            "url": "ipfs://QmU5XJfL1V5tBLfm7xYMGYEi7VLiwDCfsCc8KswRgXNQSr"
          }
        ]
      ],
      icon: [
        {
          "width": 256,
          "height": 256,
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x0b3eb5393a45081071ed39c167d65faef9fd7a4dfada9e513770537f5cf1707b",
          },
          "url": "ipfs://QmNuLsjDJNKR9xSKXZUB6wJBwChcXLfDnCVEY8XvS3Pxvw"
        },
        {
          "width": 32,
          "height": 32,
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x8038199254ab33c9248e09301f01fafb9ca704fce33b484e60153ba6b0e9ce41",
          },
          "url": "ipfs://QmbaNRFxwiCNoKCNyBTPSThwBE6uqA1voD2i2vEGcHKUwy"
        }
      ],
      links: [
        {
          "title": "LUKSO Docs",
          "url": "https://docs.lukso.tech"
        }
      ]
    },
  },
  url: 'ipfs://QmXJxJePjs6A9TSC4m32GN6h3PknVYsC4HqNaBEF6EeuGB'
}
*/
const image = new File();
const icon = new File();
const asset = new File();

await LSP4DigitalAssetMetadata.uploadMetadata(
    {
      LSP4Metadata: {
        description: "Digital Asset",
        assets: [asset],
        images: [image],
        icon: icon,
        links: [{ title: "LUKSO Docs", url: "https://docs.lukso.tech"}],
      }
    };
);
/**
{
  json: {
    LSP4Metadata: {
      description: 'Digital Asset',
      assets: [
        {
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x5f3dbd89cde4dde36241c501203b67a93b89908063f5516535136bc25f712e11",
          },
          "url": "ipfs://QmWkAki4mLq2cshpbKs4HFCaZdpUX1jLKKfb5y8YMATkwk",
          "fileType": "image/jpeg"
        }
      ],
      images: [
        [
          {
            "width": 1800,
            "height": 1800,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0x5c6125b5a553337b5ad55610c47114bf58d33c7a21aef14b0ed4c214203c9ca7",
            },
            "url": "ipfs://QmPCQwamReJshNiqSSzf4zMVffNiDx44ykTf1zY95vG6rv"
          },
          {
            "width": 1024,
            "height": 1024,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xc4d1d37a8545012be38a8f33f9a53daceab955a17310bcfffe00f34811506938",
            },
            "url": "ipfs://Qme8tedX78TaxVwtvacJyS7bcSwe69F4aNnknUzL3gYdFY"
          },
          {
            "width": 640,
            "height": 640,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xa63ebb82e8c428c9a02f1c0a040199748844dccf62e75fcd85454bce4acd4afd",
            },
            "url": "ipfs://QmdQRdeeGGmWCPs1iCtxiNzHMZemFpvcsdvweCdnufHdqr"
          },
          {
            "width": 320,
            "height": 320,
            "§": {
              "method": "keccak256(bytes)",
              "data": "0x2ab638bb61f4cb686c3ca5ca09285e4507ad2328c0b5f6e10378425ed7c75cd9",
            },
            "url": "ipfs://QmfYYafv6ucuKSm3EbcJxho9Cr2g5Pa3yhv7TaANbP8jbg"
          },
          {
            "width": 180,
            "height": 180,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xefb0b36b3bba2338c18b2b55a0cbc52f04eda03e9b58ca8d04a92fc9b1387853",
            },
            "url": "ipfs://QmU5XJfL1V5tBLfm7xYMGYEi7VLiwDCfsCc8KswRgXNQSr"
          }
        ]
      ],
      icon: [
        {
          "width": 256,
          "height": 256,
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x0b3eb5393a45081071ed39c167d65faef9fd7a4dfada9e513770537f5cf1707b",
          },
          "url": "ipfs://QmNuLsjDJNKR9xSKXZUB6wJBwChcXLfDnCVEY8XvS3Pxvw"
        },
        {
          "width": 32,
          "height": 32,
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x8038199254ab33c9248e09301f01fafb9ca704fce33b484e60153ba6b0e9ce41",
          },
          "url": "ipfs://QmbaNRFxwiCNoKCNyBTPSThwBE6uqA1voD2i2vEGcHKUwy"
        }
      ],
      links: [
        {
          "title": "LUKSO Docs",
          "url": "https://docs.lukso.tech"
        }
      ]
    },
  },
  url: 'ipfs://QmXJxJePjm6A9TSC4m32GN6h3PknVY2C4HqNaBEF6EeuGB'
}
*/

Upload Custom LSP4 Metadata Example

await LSP4DigitalAssetMetadata.uploadMetadata(
  {
    description: 'Digital Asset',
    assets: [asset],
    images: [image],
    icon: icon,
    links: [{ title: 'LUKSO Docs', url: 'https://docs.lukso.tech' }],
  },
  {
    ipfsGateway: {
      host: 'ipfs.infura.io',
      port: 5001,
      protocol: 'https',
    },
  }
);
/**
{
  json: {
    LSP4Metadata: {
      description: 'Digital Asset',
      assets: [
        {
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x5f3dbd89cde4dde36241c501203b67a93b89908063f5516535136bc25f712e11",
          },
          "url": "ipfs://QmWkAki4mLq2cshpbKs4HFCaZdpUX1jLKKfb5y8YMATkwk",
          "fileType": "image/jpeg"
        }
      ],
      images: [
        [
          {
            "width": 1800,
            "height": 1800,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0x5c6125b5a553337b5ad55610c47114bf58d33c7a21aef14b0ed4c214203c9ca7",
            },
            "url": "ipfs://QmPCQwamReJshNiqSSzf4zMVffNiDx44ykTf1zY95vG6rv"
          },
          {
            "width": 1024,
            "height": 1024,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xc4d1d37a8545012be38a8f33f9a53daceab955a17310bcfffe00f34811506938",
            },
            "url": "ipfs://Qme8tedX78TaxVwtvacJyS7bcSwe69F4aNnknUzL3gYdFY"
          },
          {
            "width": 640,
            "height": 640,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xa63ebb82e8c428c9a02f1c0a040199748844dccf62e75fcd85454bce4acd4afd",
            },
            "url": "ipfs://QmdQRdeeGGmWCPs1iCtxiNzHMZemFpvcsdvweCdnufHdqr"
          },
          {
            "width": 320,
            "height": 320,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0x2ab638bb61f4cb686c3ca5ca09285e4507ad2328c0b5f6e10378425ed7c75cd9",
            },
            "url": "ipfs://QmfYYafv6ucuKSm3EbcJxho9Cr2g5Pa3yhv7TaANbP8jbg"
          },
          {
            "width": 180,
            "height": 180,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xefb0b36b3bba2338c18b2b55a0cbc52f04eda03e9b58ca8d04a92fc9b1387853",
            },
            "url": "ipfs://QmU5XJfL1V5tBLfm7xYMGYEi7VLiwDCfsCc8KswRgXNQSr"
          }
        ]
      ],
      icon: [
        {
          "width": 256,
          "height": 256,
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x0b3eb5393a45081071ed39c167d65faef9fd7a4dfada9e513770537f5cf1707b",
          },
          "url": "ipfs://QmNuLsjDJNKR9xSKXZUB6wJBwChcXLfDnCVEY8XvS3Pxvw"
        },
        {
          "width": 32,
          "height": 32,
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x8038199254ab33c9248e09301f01fafb9ca704fce33b484e60153ba6b0e9ce41",
          },
          "url": "ipfs://QmbaNRFxwiCNoKCNyBTPSThwBE6uqA1voD2i2vEGcHKUwy"
        }
      ],
      links: [
        {
          "title": "LUKSO Docs",
          "url": "https://docs.lukso.tech"
        }
      ]
    },
  },
  url: 'ipfs://QmXJxJePjm6A9TSC4m32GN6h3PknVY2C4HqNaBEF6EeuGB'
}
*/
const lspFactory = new LSPFactory(provider, {
  deployKey: myDeployKey,
  chainId: myChainId,
  ipfsGateway: {
    host: 'ipfs.infura.io',
    port: 5001,
    protocol: 'https',
  },
});

await lspFactory.LSP4DigitalAssetMetadata.uploadMetadata({
  description: 'Digital Asset',
  assets: [asset],
  images: [image],
  icon: icon,
  links: [{ title: 'LUKSO Docs', url: 'https://docs.lukso.tech' }],
});
/**
{
  json: {
    LSP4Metadata: {
      description: 'Digital Asset',
      assets: [
        {
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x5f3dbd89cde4dde36241c501203b67a93b89908063f5516535136bc25f712e11",
          },
          "url": "ipfs://QmWkAki4mLq2cshpbKs4HFCaZdpUX1jLKKfb5y8YMATkwk",
          "fileType": "image/jpeg"
        }
      ],
      images: [
        [
          {
            "width": 1800,
            "height": 1800,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0x5c6125b5a553337b5ad55610c47114bf58d33c7a21aef14b0ed4c214203c9ca7",
            },
            "url": "ipfs://QmPCQwamReJshNiqSSzf4zMVffNiDx44ykTf1zY95vG6rv"
          },
          {
            "width": 1024,
            "height": 1024,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xc4d1d37a8545012be38a8f33f9a53daceab955a17310bcfffe00f34811506938",
            },
            "url": "ipfs://Qme8tedX78TaxVwtvacJyS7bcSwe69F4aNnknUzL3gYdFY"
          },
          {
            "width": 640,
            "height": 640,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xa63ebb82e8c428c9a02f1c0a040199748844dccf62e75fcd85454bce4acd4afd",
            },
            "url": "ipfs://QmdQRdeeGGmWCPs1iCtxiNzHMZemFpvcsdvweCdnufHdqr"
          },
          {
            "width": 320,
            "height": 320,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0x2ab638bb61f4cb686c3ca5ca09285e4507ad2328c0b5f6e10378425ed7c75cd9",
            },
            "url": "ipfs://QmfYYafv6ucuKSm3EbcJxho9Cr2g5Pa3yhv7TaANbP8jbg"
          },
          {
            "width": 180,
            "height": 180,
            "verification": {
              "method": "keccak256(bytes)",
              "data": "0xefb0b36b3bba2338c18b2b55a0cbc52f04eda03e9b58ca8d04a92fc9b1387853",
            },
            "url": "ipfs://QmU5XJfL1V5tBLfm7xYMGYEi7VLiwDCfsCc8KswRgXNQSr"
          }
        ]
      ],
      icon: [
        {
          "width": 256,
          "height": 256,
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x0b3eb5393a45081071ed39c167d65faef9fd7a4dfada9e513770537f5cf1707b",
          },
          "url": "ipfs://QmNuLsjDJNKR9xSKXZUB6wJBwChcXLfDnCVEY8XvS3Pxvw"
        },
        {
          "width": 32,
          "height": 32,
          "verification": {
            "method": "keccak256(bytes)",
            "data": "0x8038199254ab33c9248e09301f01fafb9ca704fce33b484e60153ba6b0e9ce41",
          },
          "url": "ipfs://QmbaNRFxwiCNoKCNyBTPSThwBE6uqA1voD2i2vEGcHKUwy"
        }
      ],
      links: [
        {
          "title": "LUKSO Docs",
          "url": "https://docs.lukso.tech"
        }
      ]
    },
  },
  url: 'ipfs://QmXJxJePjm6A9TSC4m32GN6h3PknVY2C4HqNaBEF6EeuGB'
}
*/