Display Interfaces

The plan is that there will be a list of community-created, commonly accepted interfaces, and creators will choose to implement these display-interfaces for their objects as needed.

You can think of every set of resolver-strings (a pair of keys and their corresponding value-types) as a composition of interfaces; for example, a ‘Coin’ can be defined as Base + Currency, that is, we combine the base-interface with the currency-interface to arrive at a ‘Coin’ interface.

We suggest a set of display-interfaces below. Please make any suggestions you’d like!

Currently Display only supports strings, but we’re hoping this will change. Ideally Display should be able to return any JSON type. This will support a wider range of use-cases, such as currencies and NFTs.

Base:

name: string,
thumbnail: URL

Name is the name of the object, and thumbnail is a small, static image; 400 x 400.

Currency

balance: BigInt,
ticker: string

The intention is that ‘balance’ is the total value / quantity of the object. The ‘ticker’ should be a short string like ‘DOGE’ or ‘BTC’ or ‘ETH’.

TemplateArt:

image: URL,
attributes: Record<String, String>

Image is a high-resolution static image; 1,000 x 1,000 or larger. Attributes are a list of key-value pairs as Strings, such as “{ Face: Wholesome, Jacket: White Tundra }”. Each piece within a template-art family consists of a predefined set of attributes, which are filled in from a limited set of available values per attribute.

(We could alternatively call this ‘generative art’ but that’s also easily confused with AI-generated art.)

Animated Art:

animated_image: URL

‘animated’ might be a better name than ‘animated image’. Should be a .avif, .apng, .webp, or .gif. (Perhaps we can also support movie file formats that don’t have audio?) I like the idea of having an ‘animated image’ URL separate from ‘image’, so that client-applications have more control over the appearance of their apps. Giving users a UI with dozens of flashy animated images playing at the same time can be quite distracting! I imagine client-apps will mostly prefer to display static images.

Movie Files

movie: URL

Movie files would be .mov, .mp4, .webm, perhaps more. The intention is that these are videos with audio, like TikTok or YouTube videos, that are meant to be displayed in a video-player (progress-bar, audio-volume, etc.). In contrast ‘animated art’ is intended to be audioless, short, looping animations of some sort.

GLBs:

(I’m currently working on how to display 3D art. Suggestions welcome!)

2 Likes