Difference between revisions of "Colored Coins"

From Bitcoin Wiki
Jump to: navigation, search
(Colu Colored Coins Implementation)
Line 69: Line 69:
 
==Colu Colored Coins Implementation==
 
==Colu Colored Coins Implementation==
  
A new Colored Coins implementation developed by [http://colu.co/ Colu] (June 2015), based on attaching value to transactions using the OP_RETURN field on the Blockchain. Colu's [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Coloring-Scheme/ coloring scheme] enables to compress massive amount of data into a limited space and new functionalities with the Rule Engine tool.
+
A new Colored Coins implementation was developed by [http://colu.co/ Colu] and fully [https://github.com/Colored-Coins/ open sourced] on June 2015. The new implementation is based on attaching data to transactions using the OP_RETURN field. Colu's [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Coloring-Scheme/ coloring scheme] uses high data compression, can associate unlimited amounts of metadata with bitcoin transactions through the use of publicly available torrent files and supports smart contract functionalities.  
The Metadata is attached to the digital assets using Torrent technology so every asset is published publicly.
 
 
 
===Open Source===
 
The new Colored Coins protocol specification for issuing and transacting digital assets on top of the Bitcoin Blockchain is all [https://github.com/Colored-Coins/ open source].  
 
  
 
===Main Features===
 
===Main Features===
  
* Smarts Contracts Compatible - [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Rules/ Rule Engine] for issuing digital assets with various capabilities: time limitations - expiry date, access abilities to authorized holders, additional fees on specific address and limited permission to issue more of the same asset.
+
* '''Smarts Contracts capabilities''' - A [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Rules/ Rule Engine] for issuing digital assets with various capabilities: expiration dates, restricted access, additional fees (supporting [https://en.wikipedia.org/wiki/Affiliate_marketing affiliate marketing]), limitations on further issuance, etc.  
 
 
* Maximum Decentralization Using Torrents - automatically storing [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Metadata/ metadata] that can be freely accessed and verified  in torrent files. The metadata size is unlimited and can contain information like: track record, history, description, validity or any information the issuer finds relevant.  
 
  
* Data Storage Flexibility - adding [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Data%20Storage%20Methods/ endless amount of metadata] on every transaction is available not only during issuance, but also in future transactions after the asset was issued.  
+
* '''Using Torrents for Metadata storage''' - [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Metadata/ Metadata] is stored in publicly available [https://en.wikipedia.org/wiki/BitTorrent torrent files], only a reference is stored directly on the blockchain. This allows for
 +
** '''Maximal Decentralization''' 
 +
** '''Unlimited Size''' - Since metadata is not stored directly on the blockchain it's size is unlimited and can contain information like: track record, history, description, validity or any information the issuer finds relevant.  
  
* Issuance Policy - enforcing a coherent issuance policy by supporting two types of assets, [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Benefits/ locked and unlocked]. Locked Assets - assets who contain a fixed amount that is defined during the issuance, no one can issue more units of it, not even the issuer himself. Unlocked Assets - issuer can keep issuing more units of their asset.
+
* '''Flexible metadata handling''' - Adding [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Benefits#metadata-on-every-colored-transaction metadata] on every transaction, supporting the addition of relevant metadata that was not yet available during issuance (e.g. mentioning a specific seat number on a movie theater token).  
  
* Support thin wallets (SPV compatible) - the protocol verifies colored transactions without running a full Bitcoin node.
+
* '''Coherent Issuance Policy''' - enforcing a coherent issuance policy by supporting two types of assets, [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Benefits/ locked and unlocked].
 +
** '''Locked''' Assets - A fixed amount is defined during issuance. No one can issue more units of the asset, not even the issuer.
 +
** '''Unlocked''' Assets - The issuer can keep issuing more units.
 +
* '''Support for thin wallets''' (SPV compatible) - [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Benefits#support-for-thin-wallets (SPV compatible)] - nodes that can verify colored transactions without running a [[full-node|full Bitcoin node]]
  
 
* [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Coloring-Scheme#issuance-transaction-encoding/ Send Multiple Assets in Single Transaction]  
 
* [https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Coloring-Scheme#issuance-transaction-encoding/ Send Multiple Assets in Single Transaction]  

Revision as of 13:05, 7 July 2015

The term "Colored Coins" loosely describes a certain class of methods for representing and managing real world assets on top of the Bitcoin Blockchain.

While originally designed to be a currency, Bitcoin's scripting language allows to store small amounts of metadata on the blockchain, which can be used to represent asset manipulation instructions. For example, we can encode in a Bitcoin transaction that 100 units of a new asset were issued and are now credited to a given bitcoin address. A colored coins wallet can create a Bitcoin transaction that encodes sending 50 units of an asset from one address to a new address, and so on.

Real world Value is attached to those units (or "digital tokens") by the asset issuer's promise to redeem them for some goods or services. For example, a 100 seat movie theater can issue 100 units of a "watch movie X at time Y" asset and promise to redeem each unit for a right to enter a certain screening of a movie.

The advantage of using Bitcoin's blockchain as the backbone leverages Bitcoin's strengths, such as immutability, non-counterfeitability, ease of transfer, robustness and transparency thus allowing asset manipulation with unprecedented security and ease.

In principle one can represent asset manipulation data on other blockchains (e.g. Litecoin). The term "Colored Coins" is usually associated with implementations that

Note that the term Colored Coins stuck from older implementations where an asset was actually associated with satoshis (thus "coloring" them). Modern implementations use more efficient ways to encode assets on the blockchain, mostly using the OP_RETURN scripting code, so it is no longer the case that individual satoshis are "colored".

Use Cases

Colored coins allow you to store assets on the Bitcoin blockchain. There are many interesting applications to colored coin. You could have an IPO on the blockchain by issuing shares as a colored coins, and send them to your shareholders. The shares can then be traded almost instantaneously and for free through the Bitcoin blockchain. You could have smart properties represented by colored coins. You could store your house on the blockchain by issuing a single coin, then the ownership of the house can be transferred with a simple Bitcoin transaction.

Bitcoin 2.0

Using the power of Bitcoin Blockchain technology for new use-cases other than currency

  • The next generation of bitcoin developments
  • Utilizing the power of Bitcoin Blockchain for new use-cases other than currency and extending its flexibility
  • Wider range of digital transactions
  • A complete multi asset economy


Open Assets Block Explorer

Coinprism offers a colored coin Bitcoin blockchain explorer.

ColoredCoins.org Block Explorer

ColoredCoins.org offers a public search engine for digital assets, all open source.

Open Assets

Open Assets is a Colored Coin implementation based on the OP_RETURN operator. Metadata is linked from the Blockchain and stored on the web.

Example of an Open Assets OP_RETURN marker output

This example illustrates how a marker output is decoded. Assuming the marker output is output 1:

   Data in the marker output      Description
   -----------------------------  -------------------------------------------------------------------
   0x6a                           The OP_RETURN opcode.
   0x10                           The marker output is 16 bytes long.
   0x4f 0x41                      The Open Assets Protocol tag.
   0x01 0x00                      Version 1 of the protocol.
   0x03                           There are 3 items in the asset quantity list.
   0xac 0x02 0x00 0xe5 0x8e 0x26  The asset quantity list:
                                  - '0xac 0x02' means output 0 has an asset quantity of 300.
                                  - Output 1 is skipped and has an asset quantity of 0
                                    because it is the marker output.
                                  - '0x00' means output 2 has an asset quantity of 0.
                                  - '0xe5 0x8e 0x26' means output 3 has an asset quantity of 624,485.
                                  - Outputs after output 3 (if any) have an asset quantity of 0.
   0x04                           The metadata is 4 bytes long.
   0x12 0x34 0x56 0x78            Some arbitrary metadata.

Current projects leveraging Open Assets

CoinSpark

CoinSpark is a Colored Coin implementation that uses a lightweight (SPV) desktop wallet for Windows, Mac or Linux. In CoinSpark, contracts are hosted on the issuer's website and notarized on the blockchain. Like Open Assets, it uses OP_RETURNs to store metadata, with a highly efficient encoding scheme that allows multiple transfers of different assets to be encoded in a single transaction. CoinSpark software libraries are available for C/C++, Java, Javascript, PHP and Python, and there's a detailed developers guide with examples.

Colu Colored Coins Implementation

A new Colored Coins implementation was developed by Colu and fully open sourced on June 2015. The new implementation is based on attaching data to transactions using the OP_RETURN field. Colu's coloring scheme uses high data compression, can associate unlimited amounts of metadata with bitcoin transactions through the use of publicly available torrent files and supports smart contract functionalities.

Main Features

  • Smarts Contracts capabilities - A Rule Engine for issuing digital assets with various capabilities: expiration dates, restricted access, additional fees (supporting affiliate marketing), limitations on further issuance, etc.
  • Using Torrents for Metadata storage - Metadata is stored in publicly available torrent files, only a reference is stored directly on the blockchain. This allows for
    • Maximal Decentralization
    • Unlimited Size - Since metadata is not stored directly on the blockchain it's size is unlimited and can contain information like: track record, history, description, validity or any information the issuer finds relevant.
  • Flexible metadata handling - Adding metadata on every transaction, supporting the addition of relevant metadata that was not yet available during issuance (e.g. mentioning a specific seat number on a movie theater token).
  • Coherent Issuance Policy - enforcing a coherent issuance policy by supporting two types of assets, locked and unlocked.
    • Locked Assets - A fixed amount is defined during issuance. No one can issue more units of the asset, not even the issuer.
    • Unlocked Assets - The issuer can keep issuing more units.
  • Support for thin wallets (SPV compatible) - (SPV compatible) - nodes that can verify colored transactions without running a full Bitcoin node
  • Zero Confirmation Support - the architecture allows to support asset issuance transfer it in zero confirmations (and with the same transaction)- the Asset ID references only to the first UTXO in the transaction and makes no reference to a block.

Resources