Title: BTNS Token Standard (BTNS-420)
Author: Jeremy Johnson (J-Dog)
Status: Draft
Type: Informational
Created: 2023-05-25
Extend BTNS to establish a token standard.
Establish a standardized ruleset for additional BTNS token
experimentation.
BTNS-420 builds on the token framework in the Broadcast Token Naming System and establishes a standard set of features and rules by which to operate.
This spec defines the core ACTION
commands that can be used to perform various functions within the BTNS.
BTNS-420 can be extended in the future to allow for additional ACTION
and PARAM
options.
This spec is a work in progress, and additional rules and notes will be added as spec is more clearly defined.
BTNS-420 ACTION
PARAMS
will not be considered finalized until ACTIVATION_BLOCK
for the ACTION
is reached.
ACTIVATION_BLOCK
- A specific block height when a BTNSACTION
becomes usableACTION
- A specific type of command performed on atoken
ASSET
- A token created viaissuance
transactions on thecounterparty
platformSUBASSET
- A specific token type on thecounterparty
platform, which is linked to anASSET
VERSION
- A specificACTION
commandbroadcast
format versionJSON
- A text-based way of representing JavaScript object literals, arrays, and scalar dataPARAMS
- Parameters specified along with anACTION
commandXCP
- A specificASSET
on thecounterparty
platformGAS
- A specifictoken
on theBTNS
platformbroadcast
- A general purpose transaction type which allows broadcasting of a message to thecounterparty
platformcounterparty
- A token platform on Bitcoin (BTC) which was created in 2014 (counterparty.io)issuance
- A transaction type which allows for creation ofASSET
and issuing of supply on the Counterparty platformtoken
- A token created in the BTNS via aMINT
orISSUE
ACTION
broadcast
transaction
The default BTNS prefix which should be used for BTNS transactions is BTNS
and BT
. All BTNS actions will begin with btns:
or bt:
(case insensitive)
The default BTNS version is 0
when no broadcast
value
is specified
Establishing a VERSION
as the first field in every ACTION
command, allows for easier expansion and parsing of PARAMS
in various standardized formats.
The default BTNS format version is 0
when no VERSION
is given
By defining ACTION
commands and PARAMS
for each command, we standardize a way in which the BTNS
token
functionality can be extended.
Broadcast Format:
bt:ACTION|PARAMS
Below is a list of the defined BTNS ACTION
commands and the function of each:
ACTION | Description |
---|---|
ADDRESS |
Configures address specific options |
AIRDROP |
Transfer/Distribute token supply to a LIST |
BATCH |
Execute multiple BTNS ACTION commands in a single transaction |
CALLBACK |
Return all token supply to owner address after a set block, in exchange for a different token |
DESTROY |
Destroy token supply forever |
DISPENSER |
Create a dispenser (vending machine) to dispense a token when triggered |
DIVIDEND |
Issue a dividend on a token |
ISSUE |
Create or issue a token and define how the token works |
LIST |
Create a list for use with various BTNS ACTION commands |
MINT |
Create or mint token supply |
RUG |
Perform a rug pull on a token |
SEND |
Transfer or move some token balances between addresses |
SLEEP |
Pause all actions on a token for a certain number of blocks |
SWEEP |
Transfer all token and/or ownerships to a destination address |
BTNS ACTION
commands are not to be considered valid
until after ACTIVATION_BLOCK
for each command has passed.
Below is a list of the BTNS ACTION
commands and the ACTIVATION_BLOCK
for each:
AIRDROP
- TBDBATCH
- TBDBET
- TBDCALLBACK
- TBDDESTROY
- TBDDISPENSER
- TBDDIVIDEND
- TBDISSUE
- TBDLIST
- TBDMINT
- TBDRUG
- TBDSEND
- TBDSLEEP
- TBDSWEEP
- TBD
BTC
is reserved (avoids confusion withbitcoin
BTC
)XCP
is reserved (avoids confusion withcounterparty
XCP
)GAS
is reserved for future use (anti-spam mechanism)- Registered
counterparty
ASSET
names are reserved within the BTNS for use by theASSET
owner
broadcast
status
must bevalid
in order for BTNSACTION
to be consideredvalid
- BTNS tokens can also be used in combination with other protocols, by specifying the semicolon (
;
) as a protocol delimiter. - Only one BTNS
ACTION
can be included in abroadcast
(useBATCH
to use multiple commands in a single transaction) - BTNS tokens can be stamped using the STAMP Protocol
- By allowing combining of protocols, you can do many things in a single transaction, such as:
- Issue BTNS
token
with aDESCRIPTION
pointing to an external image file - Stamp JSON file with meta-data to BTNS token
- Stamp image data inside a BTNS token
- Reference an ordinals inscription
- Reference an IPFS CID
- Issue BTNS
Example 1
bt:ISSUE|JDOG;stamp:base64data
The above example issues a JDOG token, and STAMPs file data into the token.
AIRDROP
BATCH
BET
CALLBACK
- Return all
token
supply to owner address afterCALLBACK_BLOCK
- Compensate
token
supply holders by giving themCALLBACK_AMOUNT
ofCALLBACK_TICK
token
per unit
- Return all
ISSUE
- Register / Reserve
TICK
fortoken
usage - Associate
ICON
with yourtoken
- Adjust
MAX_SUPPLY
untilLOCK_SUPPLY
is set to1
- Adjust
MAX_MINT
untilLOCK_MINT
is set to1
- Mint
token
supply immediately usingMINT_SUPPLY
(can bypassMAX_MINT
) - Transfer
token
ownership viaTRANSFER
- Transfer
token
supply viaTRANSFER_SUPPLY
- Lock
MAX_SUPPLY
withLOCK_SUPPLY
set to1
- Lock
MAX_MINT
withLOCK_MINT
set to1
- Lock against
RUG
command by settingLOCK_RUG
to1
- Lock against
SLEEP
command by settingLOCK_SLEEP
to1
- Lock against
CALLBACK
command by settingLOCK_CALLBACK
to1
- Register / Reserve
DESTROY
- Permanently destroy some
token
supply
- Permanently destroy some
DISPENSER
DIVIDEND
LIST
- Create and edit lists of
TICK
s - Create and edit lists of
ASSET
s - Create and edit lists of addresses
- Create and edit lists of
MINT
- Mint
tokens
at rate ofMAX_MINT
untilMAX_SUPPLY
is reached ("fair" mint) - Transfer minted
token
supply toTRANSFER
address
- Mint
RUG
SEND
- Transfer
AMOUNT
oftoken
from broadcast address to aDESTINATION
address, with an optional memo - Send multiple
AMOUNT
oftoken
to multipleDESTINATION
addresses, with optional memos
- Transfer
SLEEP
SWEEP
This document is placed in the public domain.