For some reason Phantom decided that ERC1155 can describe only NFTs, not fungibles.
If the uri field is present, the token is considered non-fungible and will appear in the collectibles tab, otherwise it is considered fungible and appears in the home tab.
Phantom checks the existence of uri with any random text, and does not care a lot about resolving a standard file to check if that is fungible or not.
Issue at case
We have token Explorer | Solana with metadata which
- Supply of millions, amounts in wallet can be 2.73145. By Metaplex/SPL guides it is not NFT. 1.42 tokens in one account are the same 1.42 tokens in another account, and it is the definition of fungible. Phantom violates that definition.
- It has ERC1155 metadata in URI, not indication of it to be NFT. Phantom relies on an unsound and Etherium incompatible idea that any ERC1155 is NFT.
- Token is in token-list, which is the de facto list of fungibles. Phantom docs confirm they are also considered to be such. Phantom finds a token in the fungibles list, and shows it for a second, but then decides later it is non fungible.
- If the user does now have TINY tokens in the wallet, he can find it in the list and see with others fungibles.
- All other tools (Solflare wallet, explorers) show a token as fungible.
Read more about this issue here.
How can we fix it?
Best and easiest fix could be delete uri from on chain metadata. We cannot do it because metadata was created immutable. Tool defaults to create metadata were to make it such. Technical mistakes are impossible (super hard to fix as data on a chain is “immutable”). Until metaplex will update its contracts it is impossible.
Release new token. Token will lose its nice naming of TINY from token-list. Assuming token list validates uniqueness of tokens.
We can try to delete an old token from token-list. But as practice shows deleting or modifying is very hard to do. Probably easier than changing blockchain data, but still may take time to settle. This will solve any issues. We mint new tokens without such issues, mutable metadata and under the same name. It may take 2 weeks to solve this issue, but response time from token-list owners is not guaranteed.
And finally, Phantom reconsiders its rule of what it considers NFT and makes its code more ecosystem compliant. Options:
- If token has token-list entry, than this is not NFT
- If token supply is non >1 and has decimals > 0, than it is is fungible
- Combine 1 and 2 for maximal safety
- We can put something into metadata JSON to allow Phantom to parse it
Phantom has yet to respond to numerous tech support tickets or inquiries…Any help would be amazing.