I've deployed an FA2 token that is supposed to use a token_metadata view to display the token metadata. The view is works fine if you call it directly, but it doesn't seem to be affecting the token metadata.

view token_metadata on better-call.dev

Temple wallet doesn't seem to detect the token metadata. When I try to add the token, it fails and just leaves the fields blank.

Adding FA2 token to Temple wallet. Temple wallet doesn't automatically detect metadata

I'm not sure what I'm doing wrong.

This is the view return

(pair (nat %token_id) (map %token_info string bytes))

I've added links to the contract on better-call.dev and the ithacanet explorer

https://better-call.dev/ithacanet/KT1P22gGHCkJMH1PYEXjy5uBpSf3u9XbVbTS/views https://ithacanet.tzkt.io/KT1P22gGHCkJMH1PYEXjy5uBpSf3u9XbVbTS/storage/149196

  • Did you switch the Temple wallet to Ithacanet? Jun 26 at 11:17

2 Answers 2


I would guess Temple doesn't recognize the metadata as they don't seem valid. You can get more information about formatting the token metadata here => https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-12/tzip-12.md#token-metadata

  • Yeah. I learnt that temple and most indexers only call storage and off-chain views. My view was an on-chain view. Took me a while, but I got it.
    – littlezigy
    Jun 26 at 12:05

The feature on-chain views was added with the Hangzou protocol. But the TZIP for FA2 standard was defined before Tezos had on-chain views. So in the current state the FA2 Token standard does not support on-chain views, thats the reason why Temple wallet fails to load the metadata (and probably other wallets). Because this is a non standard FA2 implementation. You need to work with either:

A contract can use two methods to provide access to the token-metadata.

  • Basic: Store the values in a big-map annotated %token_metadata of type (big_map nat (pair (nat %token_id) (map %token_info string bytes))).
  • Custom: Provide a token_metadata off-chain-view which takes as parameter the nat token-id and returns the (pair (nat %token_id) (map %token_info string bytes)) value.

In both cases the “key” is the token-id (of type nat) and one MUST store or return a value of type (pair nat (map string bytes)): the token-id and the metadata defined above. If both options are present, it is recommended to give precedence to the the off-chain-view (custom).

From: FA2 - Multi-Asset Interface

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.