Status: Draft
Authors: Tom Wilson ([email protected]), Sam Williams ([email protected]), Abhav Kedia ([email protected])
This document specifies a data protocol that allows assets to be discovered and uniformly displayed on the permaweb.
The permaweb is a rich collection of various kinds of data -- media, content, functions, and applications. A standard protocol for identifying assets enables discoverability for dashboards, exchanges, and higher-level permaweb services. By providing an extensible data protocol for transactions, creators and publishers can harness the power of permaweb-wide content discoverability -- making it easily appear in various applications and contexts across the permaweb.
This protocol would enable, for example, a marketplace or exchange where users trade media assets to render them in a user-friendly way. By extending asset transactions using these identifiers, creators provide a clear and composable set of identifiers that marketplaces or exchanges can use to give a detailed description of the asset. Another example would be a search engine service that may want to index specific types of assets.
To utilize Asset Discoverability, a creator or publisher can dispatch or post an Arweave transaction specifying the following tags.
Tag Name | Optional? | Tag Value |
---|---|---|
Title | False | A maximum of 150 characters used to identify the content, this title can provide a quick eye catching description of the asset |
Type* | False | Type of asset. One or more of: meme , image , video , podcast , blog-post , social-post , music , token , web-page , profile |
Topic* | True | Zero to many topics that can be used to locate assets of a given type by a specific topic. For example: an asset of type meme might have the following two topics, Funny , Sports . |
Description | True | A longer description of 300 characters that can provide a set of details further describing the asset |
The primary purpose of these tags is to allow content devs to leverage GraphQL to find asset transactions of a specific type or topic for use in their applications.
query {
transactions(
first: 100,
tags: [
{ name: "Type", values: ["meme", "blog-post"] },
{ name: "Topic:Funny", values: ["Funny"] },
{ name: "Topic:Jokes", values: ["Jokes"] }
]) {
edges {
node {
id
owner {
address
}
tags {
name
value
}
}}
}
}
This GraphQL query filters based on Type
and Topic
tags to filter Assets for an aggregate list display.