Basic Functions

Prerequisites

  • A Bitcoin wallet with Ordinals support.

  • An inscription service or app of your choice that is capable of inscribing text for Bitcoin Ordinals.

  • The TAP Reader to lookup deployments, mint status, account balances and much more.

Basic Functions

Aside from its special features, the TAP Protocol is compatible with the BRC-20 specs for Bitcoin Ordinals when it comes to the basic functions for Deploy, Mint and Transfer. The processes behind these functions are mirroring those precisely. This allows existing projects to support TAP Protocol with minimal efforts.

However, when it comes to tickers, there are a few differences:

  • All tickers support the full unicode range.

  • The allowed length per ticker is 1-32 symbols.

  • A symbol is the "visual length", not the byte-length. If a symbol spans across 2 or more bytes, it's still having a length of 1.

  • Whitespaces, also leading and trailing, are unicode, as well and are therefore valid.

  • Tickers starting with a dash or "dmt-" are reserved for cursed tokens and Digital Matter Theory assets.

  • In clients, it is recommended to render ticker names in quotes to make whitespaces clearly visible. Additionally, a unique hash representation over the unicode tickers can be provided.

Token Deploy

Deploying a token is a simple Bitcoin Ordinals text inscription in JSON-format. There are tools to simplify the process, but on a base level, it's as simple as storing the following JSON on-chain using a text inscription service or app:

{ 
  "p": "tap",
  "op": "token-deploy",
  "tick": "tap",
  "max": "21000000",
  "lim": "1000"
}

"p" represents the name of the protocol being used.

"op" is the function to be executed, in the above example that would be the function to deploy a new token.

"tick" is the ticker you want to deploy.

"max" is the maximum supply of the token.

"lim" is the maximum that can be minted per mint inscription (see below).

With the above setup, and given the deployment was successful, anyone can mint up to 1000 tokens per mint inscription until the supply exhausted.

Should the deployment fail, for example if the ticker exists already, the deployment will be invalid and no mints are possible for the particular deployment.

Token Mint

To mint tokens from a deployed ticker, we need another inscription type that represents a function to perform a mint. Any minter can now inscribe the following JSON to mint from the deployment above. After a sucessful mint, the minted token amount will be credited to the address that the inscription has been created for:

{ 
  "p": "tap",
  "op": "token-mint",
  "tick": "tap",
  "amt": "1000"
}

"p" represents the name of the protocol being used.

"op" is the function to be executed, in the above example that would be the function to mint a token.

"tick" is the ticker you want to mint.

"amt" is the amount you want to mint. This is usually the the maximum per mint reflected in the token-deploy function under "lim".

Once all tokens are minted, any further mint will be invalid and fail.

Token Transfer

Transferring tokens is a 2-step procedure. 1st you need to inscribe the inscription text below to activate the desired amount of tokens. This process is also known as creating transferable inscriptions.

2nd, once inscribed (available in your wallet), you need to send the resulting Ordinal from your wallet to the receiver address. Once received, the token amount is being credited to the receiver and deducted from your wallet's balance.

Aside from transferring tokens, this allows to trade tokens for actual Bitcoin and is the most basic option for trading:

{ 
  "p": "tap",
  "op": "token-transfer",
  "tick": "tap",
  "amt": "100"
}

"p" represents the name of the protocol being used.

"op" is the function to be executed, in the above example that would be the function to transfer tokens.

"tick" is the ticker you want to transfer.

"amt" is the amount of tokens you want to create a transferable inscription for.

To cancel a transferable, simply send it to yourself.

Caveats

Despite the basic function representing a simple and effective way to create and distribute tokens, those may come with flaws for some use-cases:

  • Mints are always public. By default, there is no way to restrict the minting process (fair mints).

  • Mints are prone to frontrunning. Others can pay a higher fee and front-run anyone with lower fees.

  • Transfers require a 2-step process, which can feel disruptive if you just want to send tokens from A to B.

  • There is no programmability supported.

While for many projects, the above features are enough, the TAP Protocol offers a set of extended functions to address the limitations of BRC-20.

Last updated