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 BTNSACTIONbecomes usableACTION- A specific type of command performed on atokenASSET- A token created viaissuancetransactions on thecounterpartyplatformSUBASSET- A specific token type on thecounterpartyplatform, which is linked to anASSETVERSION- A specificACTIONcommandbroadcastformat versionJSON- A text-based way of representing JavaScript object literals, arrays, and scalar dataPARAMS- Parameters specified along with anACTIONcommandXCP- A specificASSETon thecounterpartyplatformGAS- A specifictokenon theBTNSplatformbroadcast- A general purpose transaction type which allows broadcasting of a message to thecounterpartyplatformcounterparty- A token platform on Bitcoin (BTC) which was created in 2014 (counterparty.io)issuance- A transaction type which allows for creation ofASSETand issuing of supply on the Counterparty platformtoken- A token created in the BTNS via aMINTorISSUEACTIONbroadcasttransaction
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
BTCis reserved (avoids confusion withbitcoinBTC)XCPis reserved (avoids confusion withcounterpartyXCP)GASis reserved for future use (anti-spam mechanism)- Registered
counterpartyASSETnames are reserved within the BTNS for use by theASSETowner
broadcaststatusmust bevalidin order for BTNSACTIONto be consideredvalid- BTNS tokens can also be used in combination with other protocols, by specifying the semicolon (
;) as a protocol delimiter. - Only one BTNS
ACTIONcan be included in abroadcast(useBATCHto 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
tokenwith aDESCRIPTIONpointing 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.
AIRDROPBATCHBETCALLBACK- Return all
tokensupply to owner address afterCALLBACK_BLOCK - Compensate
tokensupply holders by giving themCALLBACK_AMOUNTofCALLBACK_TICKtokenper unit
- Return all
ISSUE- Register / Reserve
TICKfortokenusage - Associate
ICONwith yourtoken - Adjust
MAX_SUPPLYuntilLOCK_SUPPLYis set to1 - Adjust
MAX_MINTuntilLOCK_MINTis set to1 - Mint
tokensupply immediately usingMINT_SUPPLY(can bypassMAX_MINT) - Transfer
tokenownership viaTRANSFER - Transfer
tokensupply viaTRANSFER_SUPPLY - Lock
MAX_SUPPLYwithLOCK_SUPPLYset to1 - Lock
MAX_MINTwithLOCK_MINTset to1 - Lock against
RUGcommand by settingLOCK_RUGto1 - Lock against
SLEEPcommand by settingLOCK_SLEEPto1 - Lock against
CALLBACKcommand by settingLOCK_CALLBACKto1
- Register / Reserve
DESTROY- Permanently destroy some
tokensupply
- Permanently destroy some
DISPENSERDIVIDENDLIST- Create and edit lists of
TICKs - Create and edit lists of
ASSETs - Create and edit lists of addresses
- Create and edit lists of
MINT- Mint
tokensat rate ofMAX_MINTuntilMAX_SUPPLYis reached ("fair" mint) - Transfer minted
tokensupply toTRANSFERaddress
- Mint
RUGSEND- Transfer
AMOUNToftokenfrom broadcast address to aDESTINATIONaddress, with an optional memo - Send multiple
AMOUNToftokento multipleDESTINATIONaddresses, with optional memos
- Transfer
SLEEPSWEEP
This document is placed in the public domain.