Do Bitcoin às plataformas permissionadas

O Bitcoin

Para a finalidade deste documento, não abordaremos profundamente os conceitos e características das criptomoedas, mas sim o que delas é utilizado em outras plataformas, as plataformas ditas, permissionadas.


Bitcoin é uma criptomoeda e um sistema de pagamentos eletrônicos inventado por um programador ou grupo de programadores sob o pseudônimo de Satoshi Nakamoto.
Nakamoto introduziu o bitcoin em 01 de Novembro de 2008 em uma lista de discussão sobre criptografia ao publicar um white paper com o título “Bitcoin: A Peer-to-Peer Electronic Cash System​”, o software foi liberado em 2009 com código aberto.


O Bitcoin se trata de um sistema peer-to-peer, no qual as transações são feitas entre usuários diretamente, sem um intermediário.
Estas transações são verificadas por uma rede de nodos (nodes em inglês) e registradas em um ledger distribuído e público chamado Blockchain que utiliza o bitcoin como unidade de conta.


Este sistema funciona sem um repositório central ou um administrador, o Bitcoin é conhecido como a primeira moeda digital de-centralizada e atualmente é a maior em termos de valor de mercado.


O Bitcoin é criado como recompensa de uma competição, para os usuários que oferecem seu poder de computação para processar e registrar as transações. Esta atividade é conhecida como mineração e os mineradores que obtém sucesso no processamento de transações são recompensados com as taxas de transação e os novos bitcoins criados na operação.


Este vídeo explica um pouco mais detalhadamente o processo.


Tecnicamente o bitcoin consiste em:
  • Uma rede descentralizada peer-to-peer
  • Um livro de transações, distribuído (Blockchain)
  • Um conjunto de regras para validação das transações (algoritmo de consenso)
  • Um mecanismo para busca de consenso global e descentralizado (Proof-of-Work)


Uma das coisas mais interessantes sobre blockchain é a idéia de ser disruptivo, pois através da ‘Internet de Valor’ que representa um mundo onde a troca de valores acontece na velocidade que a informação se move hoje em dia. As transações ocorrem em tempo real no mundo inteiro sobre uma rede de comunicação global, resolvendo o problema de pagamentos internacionais, com baixas taxas de transação, sem intermediários, desta forma, o conceito favorece a inclusão social.


Ciclo de vida de uma transação bitcoin



A Criptografia

Tecnicamente a criptografia compõe a essência da Blockchain.

1 - Funções Hash

Funções hash criptográficas são algoritmos matemáticos que transformam uma quantidade arbitrária de dados, numa representação de tamanho fixo, conhecidos como Hash.
Hashes são usualmente escritos em notação Hexadecimal.


Existem diversas funções hash criptográficas, algumas das mais utilizadas são:


SHA-256
SHA (Secure Hash Algoritm) que é composta por um conjunto de funções desenvolvidas pela Agência Nacional de Segurança dos Estados Unidos (NSA), esta função hash gera um output de 256 bits, ou seja, 32 bytes, independentemente do tamanho da mensagem de input.
É utilizada na criação do endereço do bitcoin e no algoritmo de consenso Proof-of-Work (PoW)


RIPEMD-160
Esta função hash gera um output de 160 bits, ou seja, 20 bytes, independentemente do tamanho da mensagem de input.
É utilizada na criação do endereço do bitcoin.


Keccak-256
O algoritmo Keccak-256 segue o padrão SHA-3 (Secure Hash Algoritm 3) e é utilizado no Ethereum.


SHA-3
Versão liberada em agosto de 2015 (após o lançamento do Ethereum), com melhorias em relação ao SHA-256


2 - Características das funções Hash

São eficientes: rapidamente se obtém o hash de mensagens com grandes quantidades de dados.
São de mão única: à partir da mensagem de origem se obtém o hash, mas não se obtém a mensagem de origem a partir do hash, como à partir de uma digital de um humano, não se pode obter o humano.
Sem colisão (resitente a colisão) : não é possível se obter hashes iguais a partir de mensagens diferentes, em outras palavras, para cada input, existe um output diferente.


A geração de um hash de uma string gera o seguinte output.
cryptographic-function("Hello World") = 124610xktj1l32kxjcj24j1
Ao se alterar minimamente a string será gerado um output totalmente diferente
cryptographic-function("Hello World!") = 444lkxckl15lsck51lk234
São resistentes: as funções hashes são resistentes á todos o cripto-ataques conhecidos.

3 - Aplicações das funções Hash



Verificar integridade: pode-se utilizar estas funções para checar integridade de dados, verificando o hash esperado, com o hash gerado de determinada mensagem.


Por exemplo, um arquivo na internet, disponibilizado para download, pode ter seu hash visível no site de origem, e após efetuar o download do arquivo, o usuário pode verificar se o hash do arquivo baixado corresponde ao hash visível no site de origem.


Verificação de senha: Um sistema pode converter uma entrada de senha em um formulário, e verificar com o hash armazenado na base de dados.


4 - Merkle Tree

Em criptografia e ciência da computação, uma Merkle Tree é uma árvore binária de hashes, esta árvore construída pelo hashing de dados emparelhados (as folhas), em seguida, é feito o emparelhamento e hashing dos resultados até que um único hash permaneça, a raiz do merkle.


Você pode encontrar mais detalhes sobre Merkle Tree no site patentes.



A Mineração

Os mineradores formam uma rede global de computadores, que executam um software específico, tornando-se assim nós/nodos (nodes em inglês) participantes da rede.
Através do processo de mineração, os mineradores processam transações, adicionando um carimbo do tempo, e as agrupam em grupos conhecidos como blocos.
Cada nó/nodo (node em inglês) participante da rede, tem uma cópia dos blocos, isso é necessário para os mineradores ligarem o novo bloco processado, ao bloco imediatamente anterior.




O processo de mineração é realizado por cada nó individualmente, mas o termo também se refere ao esforço coletivo da rede: a própria rede pode ser considerada segura pela mineração.
Explicando o processo de mineração:
  • Os mineradores selecionam transações pendentes (usualmente as que tem maiores fees)
  • Verificam se a transação é válida
  • Selecionam o hash do bloco atual, e o adicionam no hash do novo bloco, este link entre os blocos é que dá o nome Blockchain.
  • Quando o novo bloco é gerado, ele é adicionado à Blockchain local e em seguida é propagado na rede.

propagação de transações pela rede Blockchain

Mecanismos de Consenso

Proof of Work (PoW)

No proof of work, os mineradores competem para adicionar o próximo bloco (um conjunto de transações, com um timestamp, e o hash do bloco imediatamente anterior), na cadeia de blocos, numa corrida para resolver uma solução criptográfica extremamente difícil, que esteja em conformidade com a meta de dificuldade da rede.

Proof of stake (PoS)

Neste tipo de algoritmo de consenso, ao invés de investir em equipamentos (hardware) para minerar blocos, o validador investe na moeda corrente do sistema.
Não existe a figura de minerador, e sim validador, que é incentivado a utilizar seu capital como investimento na moeda corrente do sistema, para validar transações e pode é penalizado na tentativa de inclusão de uma transação inválida. Esta penalização é centenas ou milhares de vezes maior do que o incentivo pela validação das transações.

Delegated proof of stake (DPoS)

Uma combinação das características de Pow e PoS. Utiliza um sistema de votação criado por Dan Larimer com o objetivo de se utilizar uma quantidade menor de energia, e reduzir a centralização.
No centro do DPoS, estão as testemunhas que são sorteadas para validar as transações, apenas as primeiras 20 testemunhas recebem algum tipo de incentivo ‘financeiro’, essas 20 testemunhas são escolhidas baseadas em quantos tokens elas detém no sistema. Isso significa que aqueles que têm mais tokens, vão influenciar mais em relação a quem tem menos tokens.

Leader-Based Consensus

A rede temporariamente elege um nó que para ser o líder.  O líder é responsável pela validação das transações, um exemplo deste mecanismo de consenso é o Raft:


Raft-based: Utiliza a implementação etcd, e tem como características:
- Este mecanismo de consenso não cria blocos vazios
- Utilizado para transações em milisegundos
- Utiliza o conceito de líder, seguidor ou candidato (leader, follower, or candidate)
- O líder recebe a transação e processa a replicação de log (com o estado de máquina)
- Sempre que há uma transação para ser processada, caso não haja bloco criado, levando em consideração o blocktime (tempo configurado para criação de blocos), cria um novo bloco e processa a transação.
- Transporte de blocos via http
- Provém replicação de log na rede e compactação do log
-  Temporização randomizada para eleição de líderes
- Se um líder estiver indisponível, ou for desconectado da rede, outro líder é escolhido
- O tempo é dividido em prazos, cada prazo começa com a eleição de um líder




PBFT (Practical Byzantine Fault Tolerance)

Cada nó mantém um estado interno (informações ou status específicos em andamento). Quando um nó recebe uma mensagem, eles usam a mensagem em conjunto com seu estado interno para executar um computação ou operação. Este cálculo, por sua vez, diz ao nó individual o que pensar sobre a mensagem em questão. Então, depois de chegar a sua decisão individual sobre a nova mensagem, esse nó compartilha essa decisão com todos os outros nós no sistema. Um consenso. A decisão é determinada com base no total de decisões enviadas por todos os nós.


Um exemplo de implementação PBFT é o IBFT (Istanbul Bizantine Fault Tolerance):


IBFT (Istanbul Bizantine Fault Tolerance): Trata-se de uma variação do conhecido PBFT, utiliza consenso trí-fasico (PRE-PREPARE, PREPARE, COMMIT)
- Utiliza o conceito de validador e proponente (validator and proposer)
- O proponente, propõe a criação de um novo bloco e faz broadcast na rede, na mensagem de PRE-PREPARE
- Após receber a mensagem de PRE-PREPARE do proponente os validadores, iniciam o estado PRE-PREPARED, e em seguida fazem broadcast da mensagem PREPARE
- Após receber a mensagem PREPARE, o validador inicia o estado PREPARED e faz broadcast das mensagens COMMIT.
- Neste passo os validadores aceitam o Bloco e o mesmo será inserido na Blockchain.
- Em seguida os validadores aguardam até que recebam mensagens de COMMIT de 51% dos nós para iniciar o estado COMMITED
- Uma nova rodada então pode ser iniciada


Federated Consensus (FC) / Federated Byzantine Agreement (FBA)

O consenso federado alcança robustez através de quorum slices - confiança individual
das decisões tomadas por cada nó que juntos determinam os quóruns de nível de sistema. FC tem requisitos computacionais e financeiros modestos em comparação com PoW e PoS descentralizados.

Resumo

É importante conhecer os tipos de consenso, neste documento aponto alguns, mas esta é uma área em constante evolução, na qual existem constantes pesquisas e desenvolvimento de novas soluções, para manter o consenso de forma descentralizada (ou não dependendo da rede), com a maior escala e com o menor custo possível.
Para entender o melhor contexto para utilização de cada mecanismo de consenso é necessário conhecer os tipos de plataforma.




Tipos de plataforma

Com a utilização de Blockchain cada vez mais constante por empresas, para todos os tipos de aplicações, inclusive não financeiras, muitas vezes para uma solução específica entre empresas, a utilização de uma rede Blockchain pública como Bitcoin e Ethereum, nem sempre é a melhor escolha, embora os puristas da tecnologia Blockchain discordem desta abordagem, o fato é que existem novas soluções para resolver este tipo de problema, como a tecnologia Corda abordada mais detalhadamente neste documento.


Os tipos de plataforma são divididos em duas categorias:

Públicas

As informações são compartilhadas entre todos os nós/nodos (nodes em inglês), as informações registradas na Blockchain são públicas, o processo de validação das transações é feito através da mineração ou validação das transações, em geral existe um token/moeda na rede, que é com o que se paga por cada transação.
Pressupõe-se a não existência da confiança, que é adquirida pela participação dos nós/nodos (nodes em inglês) através da validação das transações.
Não existe um mediador, um gerente da rede, um intermediário, um censor, assim como não é necessária permissão para acessar ou sair da rede.
Por exemplo: na rede Bitcoin as transações são pagas com bitcoin, na rede Ethereum as transações são pagas com ether.
As plataformas públicas utilizam a teoria dos jogos com uma sintonia impressionante, uma vez que todos os membros da rede tem um incentivo para participar da forma que participa.

Permissionadas

Nestas redes, pressupõe-se que exista uma confiança entre os participantes, uma vez que para acessar este tipo de rede, em geral, utiliza-se a troca de chaves públicas. Não existe um processo de mineração (em geral), assim como não existe um token a ser transacionado nestas redes, e nem uma taxa por transação por isso são conhecidas como FFM (fast, feeless and minerless), e a quantidade de transações por segundo tende a ser maior se comparadas com as plataformas públicas, um dos motivos é que em geral não existe broadcast na rede, ou seja, os dados não são enviados pela rede para todos os participantes.
É comum que existam papéis definidos na rede, o validador, o responsável pelo acesso a rede.

Os dados não são públicos, eles são visíveis apenas pelas partes relevantes, a determinação das partes relevantes é feita através da criação de um workflow que é definido pelos participantes da transação, que por sua vez assinam as transações.

Comentários

  1. Invest in Ethereum on eToro the World's #1 Social Trading Network...

    Join 1,000,000's who have already discovered better strategies for investing in Ethereum...

    Learn from experienced eToro traders or copy their positions automatically!

    ResponderExcluir

Postar um comentário

Postagens mais visitadas