Skip to content

Latest commit

 

History

History
80 lines (49 loc) · 6.88 KB

BITCOIN-TOKENS.md

File metadata and controls

80 lines (49 loc) · 6.88 KB

Bitcoin Tokens

Issue and trade your own cryptocurrency / tokens / digital assets ontop the bitcoin blockchain

Intro

2012–2013: Colored Coins

One could argue that Colored Coins are the very first non-fungible tokens to exist. Colored Coins are made of small denominations of a bitcoin and can be as small as a single satoshi, the smallest unit of a bitcoin. Colored Coins can be used to represent a multitude of assets and have multiple use cases, including: i) Ability to issue your own cryptocurrency ii) Issue shares of a company iii) Property, Coupons, Subscriptions, Access tokens, Digital collectibles and more.

Colored Coins exemplified a huge leap in Bitcoin's capabilities, however, their downside was they could only represent certain values if everyone agrees on their worth. Bitcoin's scripting language was never meant to enable this type of behavior within its network, thus Colored Coins were only as powerful as their weakest participant. For example, 3 people agree that 100 Colored Coins represent 100 company shares. If even one participant decides they no longer equate Colored Coins to represent company shares, the entire system falls apart.

Options

Absent miner-validation of tokens, it is necessary to add extra data onto ordinary bitcoin transactions that indicates coloring, transferred value, etc. The standard way to do this is with OP_RETURN which allows cleanly holding arbitrary data. Unfortunately, any bitcoin user can post an apparent token-transfer transaction and have it confirmed by miners without actually owning tokens. Token conservation and any other desired rules must instead be enforced with user consensus alone, by examining the history behind each transaction and marking as ‘invalid’ those that do not follow the rules of its protocol.

Many methods fall under the category of "colored coins". Most of these designs actually supplement the unspent transaction output (UTXO) with extra colored values: Surprisingly, only Enhanced padded order-based coloring (EPOBC) - one of the earliest proposals - actually took bitcoins and applied color to them.

The advantage of these "colored coin" tokens is that the miners prevent double-spending. One disadvantage is that these UTXOs can be accidentally spent without the special color metadata, which is equivalent to discarding the tokens. This easily occurs if tokens are sent to someone with a regular (non-token-aware) bitcoin wallet. Color addresses have been proposed to reduce these accidents.

Finally, some token schemes (Omni, Counterparty) discard the UTXO concept for tokens and instead associate an overall balance to an address. Transactions then serve only as a signed and irreversibly published order of balance transfer, and miners do not prevent double-spending of tokens. Users' checking of transaction validity requires examining all prior transactions associated with the addresses involved, and this is sensitive to blockchain re-ordering. The Tether USD-pegged token was issued on Omni.

Since colored coins cannot be double spent, one can prove the validity of a token transaction by examining only the input ancestor transactions tracing back to when the tokens were first minted. This set of transactions forms a directed acyclic graph (DAG). These proofs are significantly more weighty than Simplified Payment Verification (SPV), yet still simple enough to implement in a lite client. In contrast, balance-based tokens in principle require a full node to achieve a high level of security: only after an examination of all transactions (to ensure inclusion of all at a given address), can valid transactions be proven.

Token implementations also vary in their scriptability, ranging from none at all (tokens can only be sent and received), to bitcoin-level (multisig, atomic swaps, payment channels possible), up to highly complex scripting languages like those implemented on the Ethereum cryptocurrency.

Here is a chart comparing primary token properties:

System Token value associated to... Transfer data is all on-chain? Lite proofs? Scriptability Adoption obstacles
Omni Address Y no Bitcoin Ecosystem integration
Counterparty Address Y no Complex Ecosystem integration
EPOBC (Enhanced padded order-based coloring) UTXO-outval Y DAG Bitcoin Lack of interest
Coinspark UTXO N DAG Bitcoin Lack of interest
Colu UTXO Y DAG Bitcoin Under evaluation
Open Assets UTXO Y DAG Bitcoin Lack of interest
Tokeda UTXO Y Sigs Bitcoin Incomplete draft
SITO UTXO N DAG No Under evaluation
RSK/ect. Sidechain N SPV Complex Protocol change (for trustless)
GROUP UTXO-outval Y SPV Bitcoin Protocol change
Simple Ledger Protocol (SLP) UTXO Y DAG Bitcoin Under evaluation

Other aspects are noted below: how multiple tokens can interact (e.g., can they appear in the same transaction, allowing token-token direct swaps?); how much customization is available to token properties at issuance; and any other notable extras / unusual features.

System Multiple token handling Issuer tweaks Extras
Omni Normally segregated Many DEX, bets, ...
Counterparty Normally segregated Many DEX, bets, ...
EPOBC (Enhanced padded order-based coloring) In same tx None -
Coinspark In same tx or same UTXO Some Legal contracts, token conservation
Colu In same tx or same UTXO Some Rule engine
Open Assets In same tx None
Tokeda Segregated Few Issuer permission required for transactions
SITO Segregated None
GROUP Segregated Few Yes, if even more opcodes
SLP Segregated Few

Sources