solana-labs / solana-program-library

A collection of Solana programs maintained by Solana Labs
https://solanalabs.com
Apache License 2.0
3.56k stars 2.08k forks source link

Feature request: add optional media to the TokenMetadata type #7155

Open mikemaccana opened 3 months ago

mikemaccana commented 3 months ago

The token extensions with metadata example uses this TokenMetadata

From @solana/spl-token-metadata/src/state.ts


export interface TokenMetadata {
  // The authority that can sign to update the metadata
  updateAuthority?: PublicKey;
  // The associated mint, used to counter spoofing to be sure that metadata belongs to a particular mint
  mint: PublicKey;
  // The longer name of the token
  name: string;
  // The shortened symbol for the token
  symbol: string;
  // The URI pointing to richer metadata
  uri: string;
  // Any additional metadata about the token as key-value pairs
  additionalMetadata: [string, string][];
}

Almost all the old things that used to be in the JSON file - name, symbol, description, key/value attribute pairs - are now in the TokenMetadata object.

Why not add image?

Use case

Someone wishes to make an SPL token with minimum features. Right now they need to make a JSON file with:

{
  "image": "https://raw.githubusercontent.com/solana-developers/opos-asset/main/assets/CompressedCoil/image.png",
}

As the only contents, and add that as a uri in their TokenMetadata instance.

Instead, we could allow image (or some other other equivalent) to the TokenMetadata instance and save people the effort.

joncinque commented 3 months ago

It'll be a breaking change to add a new default field, so I don't think it's the best idea, but couldn't someone just use the additionalMetadata and add "image" there?