# Colored Coins

Colored Coins é um protocolo open-source desenvolvido sobre Bitcoin 2.0 que permite representar e manipular recursos digitais imutáveis sobre as transações de Bitcoin.
Apesar de Bitcoin ter sido desenvolvido com o intuito de ser uma criptomoeda, a linguagem de Script do Bitcoin torna possível associar metadados às suas transações. Através de um rastreamento preciso da origem de um dado bitcoin, é possível diferenciar um conjunto de bitcoins dos demais, processo conhecido como coloração de bitcoins (expressão que dá origem ao nome do protocolo Colored Coins).
Através da supervisão de um agente emissor ou de um acordo público, propriedades especiais podem ser associadas a bitcoins coloridos, atribuindo-lhes valor além do valor da moeda. Uma forma de enxergar isso é a partir da abstração de que existem duas camadas distintas sobre o bitcoin: A camada inferior referindo-se à rede de transações baseada em tecnologia criptográfica e; Uma camada superior que constitui uma rede de distribuição de valores encapsulados no design das “moedas coloridas”.
Devido às Colored Coins serem implementadas sobre a infra-estrutura de Bitcoin, permitir transações atômicas (trocadas umas pelas outras em uma única transação) e poderem ser transferidas sem o envolvimento de terceiros, elas abrem espaço para a troca descentralizada de coisas que não seria possível por meios tradicionais.

## Transações

Bitcoin é um protocolo open-source e descentralizado de transações peer-to-peer construindo sobre a WEB 2.0. Apesar de ser criado para ser um protocolo de transações monetárias, o grande diferencial de Bitcoin é ser um protocolo seguro de transações que independe de uma instituição central de controle. Isso é possível através do uso de um banco de dados distribuído chamado Blockchain, que mantém registro de todas as transações de Bitcoin realizadas ao redor do mundo.
Transações são o objeto fundamental em Bitcoin. Uma transação é composta por:
* Um conjunto de entradas (inputs) tal que cada entrada possui um (a) Hash de Transação e Índice de saída de uma transação anterior efetuada sobre aquele bitcoin e (b) uma assinatura digital que serve de prova criptográfica de que aquele endereço de entrada autoriza a transação.
* Um conjunto de saída tal que cada saída possui (a) o valor em bitcoin a ser transferido para essa saída e (b) um script que mapeia um único endereço para essa saída.

## Coloração e Transferência

A manipulação de colored coins pode ser realizada através de diversos algoritmos, que criam um conjunto de regras a serem aplicadas às entradas e saídas das transações de Bitcoin. Para entender o processo, considere os seguintes passos:
1. Em um dado momento, um recurso digital é associado com a saída de uma transação de Bitcoin, denominada Transação de Gênesis (do inglês Genesis Transactions). A saída dessa transação (moeda) pertence ao dono inicial gravado no sistema (no caso de uma loja de jóias que está associando suas jóias a recursos digitais, as recém-coloridas moedas pertencerão à loja).
3. Quando se faz necessário identificar o dono de uma moeda, basta avaliar o histórico de transações daquela moeda desde a sua transação de gênesis até a ultima transação com saída não-consumida. O blockchain de Bitcoin possui o rastreamento das chaves públicas associadas a cada endereço, tal que o dono da moeda pode provar a posse enviando uma mensagem com a chave privada associada àquele endereço.
Dentre esses algoritmos, o mais conhecido deles é o EPOBC. O algoritmo EPOBC colore as moedas inserindo uma marcação no campo nSequence da primeira entrada (input) da transação. É importante notar que o campo nSequence está sempre presente nas transações de Bitcoin, porém não é utilizado, logo, não gera um overhead para o processo de coloração. Exemplos de empresas que impulsionam o EPOBC são a ChromaWallet, Cuber, LHV e a Funderbeam.

### Transações de Gênesis

Para emitir novas cores, é necessário liberar moedas daquela cor através de transações de gênesis. Em geral, existem dois casos a se considerar sobre transações de gênesis:
* Cores Não-Reemitíveis Nesse caso, as entradas da transação são irrelevantes para o algoritmo, visto que, uma vez que a transação for executada, o emissor das moedas não tem poder algum sobre elas. Sendo assim, tudo o que importa é a transação de gênesis em si.
* Cores Reemitíveis Nesse cenário, o emissor deve escolher um endereço seguro para ser o “Endereço Emissor” e definir a entrada 0 da transação para vir desse endereço. Em um segundo momento, o emissor será capaz de emitir novas unidades daquela cor através de transações de gênesis com o mesmo endereço seguro. É importante notar que um endereço só pode ser associado a uma única cor. Uma vez que um endereço emita uma cor reemitível, ele não poderá mais participar da coloração de moedas de outras cores, nem mesmo de cores não-reemitíveis.

### Transações de Transferência

Transações de Transferência são utilizadas para enviar colored coins de um endereço a outro. É, inclusive, possível transferir moedas de múltiplas cores em uma única transação de transferência. O algoritmo mais conhecido para essa operação é o tagging-based coloring (coloração baseada em marcação, em português).
Se colored coins forem utilizadas como entrada para transações que não sigam o protocolo de transferência, o valor associado à cor delas é perdido. Além disso, o valor delas também pode ser perdido em uma transação mal formada.

### Algoritmos Alternativos de Coloração

Determinar uma forma de transferir colored coins de um endereço de Bitcoin a outro é a parte mais complexa do protocolo Colored Coins. Para transações com apenas uma entrada e uma saída, fica fácil determinar que a cor das moedas da saída é a mesma cor que fora recebida pelo endereço de entrada, visto que um endereço de Bitcoin só pode manipular um único valor de cor. Todavia, em transações com múltiplas entradas e saídas, determinar quais moedas coloridas de entradas correspondem a quais saídas se torna uma tarefa mais complexa. Para tanto, existem diversos algoritmos que se propõem a resolver esse problema, cada qual com suas peculiaridades.
* Coloração Baseada em Ordem é o primeiro e mais simples algoritmo de coloração. Uma forma intuitiva de entender esse algoritmo é considerar que a transação tem uma largura proporcional ao seu valor total de entrada. Do lado esquerdo, há entradas, cada uma largura proporcional ao seu valor, do lado direito há saídas com valores proporcionais a seus valores em bitcoin. Considere, então, que água colorida flui em linha reta do lado esquerdo ao direito. A cor de uma saída será a cor da água que estiver chegando a ela, ou incolor, caso moedas de múltiplas cores chegarem a essa saída. Lembrando que moedas de cores distintas não podem ser tratadas por um único endereço de Bitcoin.
* Coloração Baseada em Ordem Acolchoada é um algoritmo ligeiramente mais complexo que o algoritmo CBO (Coloração Baseada em Ordem). Em essência o algoritmo possui o mesmo princípio que o CBO, porém, tratando cada saída como contendo um acolchoado de um certo número de bitcoins incolores, com as colored coins seguindo-as.

## Aplicações

Existem uma série de casos de uso interessantes relacionados à manipulação de recursos digitais descentralizada.
* Propriedade Inteligente: Uma empresa de aluguel de produtos pode liberar uma colored coin para representar seus produtos, um carro, por exemplo. Através de um aplicativo, a empresa poderia configurar uma mensagem de controle que lhe enviasse uma mensagem assinada pela chave privada que atualmente tem posse da colored coin. Dessa forma, seus usuários poderiam repassar a chave digital do veículo entre si, através da transferencia da moeda.
* Emissão de Ações: Uma empresa pode emitir suas ações através de colored coins, tomando vantagem da infra-estrutura de Bitcoin para gerir atividades como Voto, Troca e Pagamento de Dividendos.
* Emissão de Cupons: Uma empresa pode emitir cupons promocionais ou pontos de fidelidade entre seus clientes na forma de colored coins.
* Colecionáveis Digitais: Gestão descentralizada de recursos digitais. Analogamente a como colecionadores compram e vendem pinturas famosas por grandes quantias de dinheiro, colored coins permitem-nos gerir recursos digitais de forma semelhante, tal como e-books, músicas, jogos digitais e software, garantindo a posse do recurso ao dono da moeda.
* Contratos Determinísticos: Uma pessoa ou empresa pode emitir contratos pré-agendando um pagamento, tal como opções de ações.
* Bonds: Um caso especial de contrato determinístico, bonds podem ser emitidos com um valor de pagamento de entrada e uma planilha de parcelamento em bitcoin, outra moeda ou commodity.
* Representação Digital Descentralizada de Recursos Físicos: Trata-se de um caso hipotético de uso, que ainda não foi provado ser viável, mas que tem sido antecipado por muitos evangelistas de Bitcoin. Em essência significa atrelar recursos físicos, como objetos, commodities ou moedas tradicionais, a recursos digitais e provar posse desses objetos dessa forma.

### Carteira de colored coin

Da mesma forma que recursos monetários de Bitcoin podem ser geridos através de Carteiras de Bitcoin, colored coins podem ser tratadas através de carteiras. Carteiras são utilizadas para gerir os endereços associados a cada par de chaves (pública e privada) de um usuário de Bitcoin, assim como as transações associadas ao seu conjunto de endereços. Ao invés de tratar criptomoedas, todavida, carteiras de colored coin adicionam uma camada de abstração, administrando recursos digitais, tais como ações, altcoins criadas sobre o Blockchain, propriedades inteligentes, dentre outros recursos.
É uma prática de segurança que carteiras de bitcoin utilizem um único endereço de Bitcoin para realizar cada uma de suas transações, porém carteiras de colored coin comumente reutilizam seus endereços com o intuito de re-emitir moedas de uma mesma cor.

## Implementação do Protocolo

Implementações do protocolo são associadas a softwares de carteiras, tal que o usuário final não precise se preocupar com a estruturação de suas transações ou a manipulação manual de seus recursos. Algumas das empresas representativas são a CoinPrism, ChromaWay e CoinSpark. Existe, porém, uma problemática referente à interoperabilidade das implementações hoje disponíveis, devido ao uso de algoritmos distintos para operacionalizar as transações de colored coins. Transações entre carteiras não compatíveis podem destruir os recursos associados à coloração da moeda.
Colored Coins precisa de uma carteira unificada que possa diferenciar os itens a parte de bitcoins. Em junho de 2015, uma versão de Colored Coins foi desenvolvida no formato Torrent com o intuito de abranger o uso do protocolo enquanto Bitcoin não é inteiramente adotado pelo mercado. Porém, a expectativa do setor é que as empresas de maior participação no mercado possam colaborar para tornar o protocolo interoperacional entre suas implementações sobre Bitcoin, reforçando o uso de Bitcoin para as operações de gestão de recursos digitais.

## Críticas

Oposição ao uso de Colored Coins para o tratamento de recursos abstraídos sobre Bitcoin se originam principalmente nos setores financeiro e bancário. Argumenta-se que o sistema de de segurança baseado em encadeamento de blocos proof-of-work não pode ser exportado para um ambiente regulado de resolução financeira. Associado a isso, Colored Coins não possui um sistema de legislação que se aplique sobre suas transações. Por fim, o sistema de coloração de moedas traz vários riscos de regulação. Segundo as instituições que criticam o sistema de transações descentralizado, ainda é incerto o efeito legal que haveria se um indivíduo ou entidade transferir a posse de um dado objeto a um outro indivíduo ou entidade através de abstrações sobre Bitcoin, visto que as instituições que regulam a posse de objetos e títulos atualmente não reconhecem tokens virtualmente coloridos como prova de posse.

## Veja também

* Contrato inteligente
* Bitcoin
* Altcoins
* Consenso Distribuído