🏷️Badge System

Learn about the badge system


A badge is an arbitrary string that represents something off-chain. It can represent ownership, identity, status or membership.

It is an annotation system used by the Joint protocol for access control and by the Joint Dapp to improve user experience.

A badge is usually granted to an address by an issuer. They can also be revoked or expire after some time.

The badge system aims to make trading on the Joint Protocol safer for people.

Example Use-cases

With the badge system, users can:

  • Get verified for a specific purpose (e.g. KYC, country, token holder, DAO member, sports team fan).

  • Create a market reserved for users with one or more badges.

  • Join markets reserved for members with a specific badge.

  • Joint Interface can filter markets and liquidity by badge types.



A badge is an arbitrary string that represents something. An example of a badge is kyc, bitcoiner, african and so on.

Full format:


The format above describes a full badge identifier. The first part is the badge, while the other path after that / is known as the path. The part is optional but can convey information closely related to the badge.

Issuer & Co-Issuer

A badge issuer is an address permitted to issue a specific badge (e.g badge). A co-issuer is an address permitted to issue a path on an existing badge (e.g badge/path).

For instance, an identity verification firm can be granted permission to issue kyc badges to users so they can access all kyc-gated markets or liquidity. This firm is called an issuer.

A badge issuer can also permit themselves or another address to issue a path under their badge. In the previous example, the identity firm can create a path name kyc/usa granted to users from the U.S. The creator of a path is known as the co-issuer.

Issuer Registration

Currently, only the Joint development team can register issuers to prevent badge squatting and misuse. In the future, we plan to decentralize and manage the badge system using an ens-like approach.


Badge metadata conveys arbitrary information that makes sense to external systems. At the time of issuance, the issuer can insert metadata. Metadata can also be added when a badge is granted to an address. Joint provides functions for updating metadata.

Granting Badges

A badge is meant to be granted to an address. Badge issuers and co-issuers can grant their badge to any address they choose. During this process, they can pass along metadata that external services can read later.

Badge for Access Control

The protocol uses a badge for access control purposes. The protocol allows market creators to limit access to their market by asking for one or more badges before an action is allowed.

Access Control for Liquidity Providers

A market owner can specify up to eight badges that an intending liquidity provider must possess before they are allowed to provide liquidity to the market.

This is useful in markets where the owner wants to ensure only people of a certain category can provide liquidity.

Access Control for Swappers

Similarly, a market creator can specify up to eight badges an intending swap must have before performing a swap operation. This is useful when the market creator needs to manage who can take the liquidity in the market.

Additionally, like market creators, liquidity providers can filter swappers by badges. They can define what badges takers or swappers must have before they can interact with their liquidity.

Badge as a filter

The badge system allows Joint Interfaces to provide a more relevant experience to users by allowing markets and liquidity to be filtered based on the user's preference.

A user that intends only to be exposed to the kyc-gated market can enable the Safe Mode feature to force the Dapp to fetch only markets whose liquidity providers and swappers have completed KYC and have been granted a kyc badge.

We also leverage badges to show markets and liquidity closer to the users via regional badges.

Last updated