Skip to content

ERC1238: Non-transferrable Non-Fungible Tokens (NTT) #1238

Description

@nicola
eip: 1238
title: Non-transferrable Non-Fungible Tokens (badges)
author: Nicola Greco (and future others)
status: WIP
category: ERC
created: 2018-07-20

Non-transferable tokens

Simple Summary

A badge is a token that once assigned it cannot be transferred. Badges can be accumulated through time and put at stake. Simply speaking, badges are statements about a public key, they can be quantitative (e.g. reputation, experience) or qualitative (badges, titles).

Abstract

The Non-transferrable token standard defines a set of standard APIs allowing the identification of statements (called badges) attributed to a public key, such that different dapps and smart contract can use to filter users or to provide user with different badges different experiences. More importantly, this standard defines a way for which users can put their badges at stake. Badges cannot be transferred but can be lost (after staking) or can expire.

Motivation

The inspiration for designing badges comes from a conversation with Andrew Miller. The idea is to have a token that once assigned it cannot be transferred (like reputation) and that it can be used by websites, or contracts to make me perform some actions. For example, if a user accumulates paper submissions at conferences, then they can use their paper badges to request grants. It's important that they can never share these badges.

This is the equivalent of a variety of other use cases

  • Accumulating badges: degrees from academic institutions, paper publications for conferences, badges that allow for access in a building or in a special chat.
  • Experience points: points accumulated in a game, points accumulated by being honest in a decentralized system for some time
  • Statements: more broadly, any statement that is issued or signed by a contract, a dao, a single user that requires to be on-chain
  • Subscription: badges can represent the validity of a paid subscription

Requirements for specification

  • Quantity: a badge can have the form of 1-many, meaning that a badge can represent a single value (Degree from CS, 1), or can a quantity (Experience in Fortnite, 2000)
  • Stake: it should be simple to put at stake contingent on a smart contract execution (however, it is understandable that this could be done by a different standard)
  • Backwards compatibility: This standard should have similar apis to existing standards (e.g. ERC: Token standard #20, ERC: Non-fungible Token Standard #721), I makes sense for an NFT viewer to also view badges
  • Off-chain tokens: This specification should work also for tokens that are not issued on chain (say by a third party signer) and can be presented on chain only when necessary (it's understandable that this is an edge case and could fall off the spec, but it's an interesting one!)

Next steps

There are two main steps here:

  • Specification
  • Implementation

However, I will have very little time to actually bring this to life. It would be awesome if any contributor here feels strong and empowered to take over this standard and make this their own. I started this while thinking on a fun project for academia (namely called research coin), maybe someone wants to help there!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions