# Plasma (Blockchain)

Plasma é uma tecnologia criada por Vitalik Butterin e Joseph Poon em 11 de agosto de 2017 para solucionar o problema de escalabilidade presente na blockchain do Ethereum. Semelhante à Lightning Network do Bitcoin, Plasma funciona como uma segunda camada acima da blockchain principal do Ethereum, onde blockchains secundárias são criadas acima da blockchain principal, com seus próprios critérios de validação. Isso possibilita com que boa parte das interações necessárias seja feita na blockchain secundária, diminuindo o número de interações necessárias com a blockchain principal e assim aumentando a escalabilidade da rede. O Plasma promete permitir que Ethereum amplie sua capacidade de processamento para milhares ou potencialmente bilhões de transações por segundo. A tecnologia ainda está em fase de teste, entretanto têm atraído a atenção de boa parte da comunidade.

## Contexto

Atualmente, as tecnologias de criptomoedas tem enfrentado grandes problemas de escalabilidade em direção a adoção massiva das tecnologias. Infelizmente, em seu estado atual, os dois principais blockchains, Bitcoin e Ethereum, ainda são bastante limitados na quantidade de transações que podem ser processadas em um determinado momento. Um exemplo comum de como esses problemas de escalabilidade estão limitando a competitividade do blockchain com sistemas centralizados é a comparação com o VISA. Embora o provedor de cartão de crédito popular esteja lidando com até 2 mil transações por segundo, a Ethereum está atualmente limitada a aproximadamente 15 transações por segundo. Tal problema foi denomidado por Vitalik como o trilema da escalabilidade.
O problema recebeu grande atenção quando, em 2017, a aplicação CryptoKitties congelou o funcionamento de toda a rede Ethereum ao encontrar seu primeiro pico de popularidade. O problema se deu devido a dependência de diversas aplicações em somente uma blockchain, já que o Ethereum realiza mais transações todos os dias. Como cada nó é preenchido com mais transações e armazenamento de dados, os mineradores enfrentam maior dificuldade para verificar cada transação em tempo hábil. Com o tempo, o blockchain começa a afunilar enquanto verificam transações grandes e muitas micro transações são efetivamente iniciadas no blockchain.
Após a repercussão causada pelo caso, Vitalik começou a trabalhar no Plasma como uma solução para o problema de escalabilidade e apresentou o white paper em agosto de 2017.

## Funcionamento

Segundo seu paper original, Plasma é uma estrutura proposta para a execução incentivada e reforçada de contratos inteligentes que podem ser redimensionados para uma quantidade significativa de atualizações de estado por segundo (potencialmente bilhões), permitindo que o blockchain seja capaz de representar uma quantidade significativa de aplicações financeiras descentralizadas em todo o mundo. Esses contratos inteligentes são incentivados para continuar operando de forma autônoma por meio de taxas de transação de rede, o que depende do blockchain subjacente (por exemplo, Ethereum) para impor transições de estados transicionais.
Para entender como o Plasma funciona, vamos dar uma olhada em como a tecnologia poderia ser usada em um exemplo do mundo real.
Imaginemos que você está criando um jogo digital colecionável no Ethereum. Os itens colecionáveis ​​serão tokens não fungíveis do ERC 721 (como o Cryptokitties), mas têm certas características e atributos que permitem aos usuários jogar um contra o outro - como o Pokemon Go. Esses tipos de operações complexas são caras de fazer na cadeia, então você decide usar o Plasma para a sua aplicação. Inicialmente, os contratos inteligentes são criados na cadeia principal da Ethereum. Esses contratos inteligentes servem como a “raiz” da cadeia infantil do Plasma. Essa entrada de cadeia principal contém as regras básicas da cadeia filho, registra os hashes de estado da cadeia filho e permite que os usuários movam recursos entre a cadeia principal Ethereum e a cadeia filha.
Depois de enraizar a cadeia filho na corrente principal, é criada uma cadeia infantil. Esta cadeia de crianças apresenta seu próprio algoritmo de consenso, independentemente da cadeia principal Ethereum. Vamos usar a prova de participação (PoS) para este exemplo. Esse mecanismo de consenso não depende de mineradores que usem eletricidade para executar um algoritmo de hashing, mas sim que os produtores de blocos são economicamente incentivados a permanecer verdadeiros por uma garantia que será destruída no caso de um ator mal-comportado se comportar de forma fraudulenta. Esse algoritmo de consenso geralmente permite tempos de criação de bloco mais rápidos do que o PoW.
Agora que a cadeia filho é inicializada, as regras básicas do jogo podem ser definidas, implementando os contratos inteligentes do aplicativo de jogo real na cadeia filho, que contém toda a lógica e regras do jogo. Os colecionáveis ​​ainda são tokens ERC721, criados na cadeia principal Ethereum, e depois transferidos para a cadeia infantil usando a raiz do plasma.
Uma vez que a cadeia infantil esteja em funcionamento, os criadores de blocos cometem periodicamente uma validação para a cadeia principal, comprovando essen- cialmente que o estado atual da cadeia filho é válido de acordo com as regras de consenso. Quando um usuário joga este jogo, ele está executando o aplicativo, sem nunca interagir diretamente com a cadeia principal.
Assim, o Plasma pode ser categorizado para o crescente grupo de tecnologias "off-chain", que também inclui state channels e Truebit. Ao resolver problemas diferentes, todos eles tiram as operações da “cadeia principal” da Ethereum e estão realizando-as “fora da cadeia”. Ainda assim, essas técnicas garantem um certo nível de segurança e finalidade.
O Plasma fornece segurança e escalabilidade ao permitir que blockchains “filhos” se ramifiquem do blockchain principal “pai”. Estas blockchains filhas facilitam as micro-transações ao processar mais rapidamente e à uma taxa mais barata. As blockchain filhas podem coexistir e funcionar independentemente da blockchain pai e uma da outra. Ao descentralizar ainda mais a rede de contratos e registros inteligentes, o Plasma facilita micro transações mais eficientes e seguras. Os usuários podem executar contratos inteligentes dentro dos blockchains filhos sem precisar relatar cada mudança de estado da conta para o blockchain principal do Ethereum.

## Principais características
### Execuções off-chain

As aplicações de plasma realizam a maior parte do seu trabalho fora da “blockchain raiz” (por exemplo, Ethereum). As cadeias radiculares tendem a ser lentas e caras porque precisam ser muito seguras. Se um aplicativo puder realizar qualquer trabalho fora do blockchain raiz, ele deverá.

### Compromissos de estado

Quando muitas operações são feitas na "off-chain", é necessário de alguma maneira para garantir que as alterações sejam definitivas. É por isso que Plasma faz uso de algo chamado "compromisso de estado". Um compromisso de estado é uma maneira criptográfica de armazenar uma versão compactada do estado de seu aplicativo.
No entanto, armazenar tudo sobre sua aplicação derrotaria completamente o objetivo do Plasma. Em geral, são utilizadas árvores Merkle. Esses compromissos tornam-se como "checkpoints" para sua inscrição.

### Exits

As aplicações de plasma fazem uso dessa feature sempre que um usuário quiser sair de uma Plasma blockchain. Geralmente nos referimos a isso como "saindo" do aplicativo.
Vamos ilustrar isso imaginando um aplicativo de rede de pagamento. Os compromissos do estado para este aplicativo provavelmente conterão algumas informações sobre quanto dinheiro cada usuário tem atualmente. Se um usuário quiser retirar (“exit”) seu dinheiro desse aplicativo, ele precisará provar ao contrato inteligente que tem dinheiro para sacar. Para fazer isso, o usuário pode utilizar algo chamado uma prova Merkle.

## Segurança no Plasma

Uma das principais perguntas ao se ouvir falar do Plasma são: "Quão seguro é o plasma?" E "As transações na blockchain filha são realmente imutáveis ​​e definitivas?"
No entanto, mesmo em um cenário em que uma única entidade tem controle sobre 100% da produção de blocos na blockchain filha (hashrate, stakes, etc. de acordo com o algoritmo de consenso utilizado), a Plasma garante que todas as partes podem sempre retirar seus fundos e ativos na blockchain principal a qualquer momento. Assim, mesmo no caso de um invasor consiga assumir o controle da rede, o pior que pode acontecer é forçar o usuário a deixar a blockchain filha.
O principal mecanismo de segurança por trás do Plasma são as "Plasma exits", que é o processo que permite que um usuário que participa de uma blockchain de Plasma pare de participar da cadeia e transfira seus fundos de volta para a cadeia principal.
Quando um usuário transaciona em uma Blockchain de Plasma e quer transferir seus fundos para a cadeia principal, ele envia uma “transação de saída” (ou seja, uma prova de merkle de seu histórico de transações provando que possui uma certa quantia de dinheiro). Naquele momento, há um "período de desafio". O mecanismo de desafio tem sido visto na maioria das soluções off-chain, como a Lightning Network. Essencialmente, você permite que qualquer um desafie sua reivindicação enviando uma prova que marca sua reivindicação como inválida ou desatualizada (no Plasma isso pode ser uma prova do histórico de transações, nos canais da Lightning Network isso pode ser uma mensagem assinada da outra parte) .
Além disso, ao fazer uma transação que pode ser contestada, você também é obrigado a anexar uma pequena recompensa a ela, a fim de incentivar as pessoas a desafiar você, se elas acreditarem que seu comportamento é malicioso. É como tentar roubar algo e dizer "pagarei 5 dólares se você puder me pegar".
No caso normal, se Bob quisesse transferir o X ETH de volta para a cadeia principal, ele enviaria uma transação de saída (mais a recompensa como garantia), e se não fosse contestada ele seria capaz de reivindicar X ETH no cadeia principal. Se a transação de saída de Bob for contestada com sucesso, ela será cancelada e o desafiante receberá a recompensa. Assim, todos os participantes são economicamente desincentivados de propagar blocos inválidos para a cadeia infantil.

## Histórico de desenvolvimento
### Plasma White Paper - Agosto 2017

Vitalik e Joseph Poon publicaram o artigo sobre o Plasma. O consenso geral na época do anúncio foi um pouco confuso, mas muita emoção como visto no reddit. Pouco depois, foi anunciado que o OmiseGO iria construir uma ambiente de troca descentralizada usando o Plasma.

### Minimum Viable Plasma - Janeiro 2018

Vitalik - juntamente com a ajuda de Joseph Poon e David Knott - lançou as especificações para o “Minimum Viable Plasma” em ethresear.ch. O objetivo do Plasma MVP era simplificar e fornecer as propriedades básicas de segurança do Plasma para implementadores e impulsionar o desenvolvimento. Neste momento, alguns desenvolvedores selecionados foram convidados a participar da "Plasma Implementers Call". A partir daí, uma chamada quinzenal às quartas-feiras às 10:00 AM EST começou e tem sido continuamente administrada por Joseph Poon e Karl Floersch. As chamadas são usadas para chamar a atenção para novas teorias e propostas, discutir viabilidade técnica, cantar feliz aniversário, etc.

### Plasma Cash - Março 2018

Plasma Cash foi anunciado por Vitalik ao lado de Karl Floersch e Dan Robinson. O Plasma Cash é comumente mencionado com a frase “Plasma Cash is Plasma”. O Plasma Cash recebe esse nome porque é percebido como semelhante ao dinheiro - ou seja, contas que não podem ser divididas ou cortadas para representar valores diferentes. No momento, temos “contas” que são denominadas em valores padrão, como US $ 10, US $ 20, US $ 50 e US $ 100, e são representadas como tokens não fundíveis. Cada depósito no contrato inteligente do Plasma Cash será tratado como uma fatura e indivisível. O Plasma Cash utiliza identificadores exclusivos ao depositar ETH em um contrato de Plasma que permite aos usuários armazenar apenas informações sobre sua moeda. Mas, mesmo assim, os requisitos de armazenamento do ponto de vista do usuário podem ser excessivos, já que é necessário armazenar e manter um histórico crescente de transações, provas de inclusão e provas de não inclusão.

### Plasma XT - Maio 2018

Kelvin Fichter - juntamente com a ajuda de Dan Robinson, David Knott, Joseph Poon, Karl Floersch, Vitalik Buterin e Justin Drake - introduziram o Plasma XT, um método para reduzir os requisitos de armazenamento e manter a finalidade usando assinaturas criptográficas e checkpoints. Os pontos de verificação bem-sucedidos permitem que os usuários descartem o histórico antes do ponto de verificação e reduzam significativamente os requisitos de armazenamento do ponto de vista do usuário, pois o ponto de verificação é visto como final e as transações anteriores não podem ser revertidas ou contestadas. Assinaturas agregadas criptoponômicas permitem que os operadores obtenham assinaturas dos usuários em um checkpoint proposto usando bitfields.

### Plasma Debit & More Viable Plasma - Junho 2018

Uma propriedade do Plasma Cash é que ele não pode ser dividido ou mesclado. Isso dificultou o gerenciamento do Dinheiro Plasma como um mecanismo para transferir fundos para pagamentos. Em junho de 2018, um mecanismo chamado Plasma Debit foi introduzido por Dan Robinson com a assistência de Kelvin Fichter, Vitalik Buterin, Joseph Poon e Karl Floersch para permitir o intercâmbio de valores divisíveis. Esse mecanismo é semelhante ao pagamento com seu cartão de débito, portanto, nomeado apropriadamente depois disso. Cada moeda de Plasma Debit é essencialmente equivalente a um canal de pagamento bidirecional (semelhante aos canais de pagamento baseados em multisegmentos usados ​​na Lightning Network) entre o proprietário atual da moeda e o operador. Isso permite que o operador registre microtransações no canal de pagamento de valores arbitrários. Atualmente, este método funciona apenas com correntes Plasma de operação de operador único.
Também em junho de 2018, o More Viable Plasma foi apresentado por Kelvin Fichter e Ben Jones com a ajuda de Vitalik Buterin, Li Xuanji, David Knott, Eva Beylin e Kasima Tharnpipitchai. Com o mesmo acrônimo de Minimum Viable Plasma, é geralmente conhecido como MoreVP. É uma extensão do MVP, mas reorganiza a prioridade de saída das blockchain filhas da prioridade de idade de saída para a prioridade de entrada mais recente e remove as assinaturas de confirmação. Há também um jogo de saída especial adicional que exige que os usuários coloquem títulos e cancelem a transação.
Existem atualmente mais de 100 tópicos relacionados ao Plasma sendo ativamente discutidos no ethresear.ch.