Skip to content

Latest commit

 

History

History
58 lines (43 loc) · 2.74 KB

ANS-110.md

File metadata and controls

58 lines (43 loc) · 2.74 KB

ANS-110: Asset Discoverability

Status: Draft

Authors: Tom Wilson ([email protected]), Sam Williams ([email protected]), Abhav Kedia ([email protected])

Abstract

This document specifies a data protocol that allows assets to be discovered and uniformly displayed on the permaweb.

Motivation

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.

Specfication

Transaction Format

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

Usage

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.