Blockchain explicado

blockchain-101

Um blockchain é um livro-razão público e distribuído de todas as transações que já ocorreram nesse blockchain. Embora Bitcoin pareça ser sinônimo de blockchain, a tecnologia blockchain não é apenas Bitcoin. Bitcoin é a maior e mais conhecida implementação da tecnologia, mas algumas das outras grandes implementações de código aberto são Ethereum e Litecoin.

Muito simplesmente, o blockchain é um software executado em milhões de computadores. Esses computadores (ou nós) se comunicam entre si para garantir que os dados permaneçam em sincronia.

Mas como funciona e por que foi inventado?

O problema da dupla despesa

Uma das principais responsabilidades de uma autoridade central e confiável em uma transação financeira, como um banco, é evitar o que é conhecido como “gasto duplo” problema. Os bancos atuam como intermediários confiáveis ​​para garantir que o dinheiro não seja gasto digitalmente duas vezes. Os bancos garantem que essa troca de dinheiro aconteça dentro de um transação.

Uma transação, por definição, é atômica, ou seja, ou acontece ou não, não existe um estado intermediário. As transações também são sequenciais. O que significa que uma transação sempre segue e / ou precede outra transação. As transações não ocorrem simultaneamente.

Por exemplo, digamos que Hannah tenha $ 10 e ela tenha que pagar a Alice $ 3 e a Liam $ 5. O fim lógico e bem-sucedido dessas transações resultaria em Hannah com $ 2, Alice com $ 3 e Liam com $ 5. Hannah não pode enviar o mesmo dinheiro para Alice e Liam ao mesmo tempo. Se ela fizesse isso, Hannah ficaria com $ 5, Alice receberia seus $ 3 e Liam receberia seus $ 5. Hannah teria criado magicamente $ 3 extras. Ela teria gasto seu dinheiro duas vezes.

Sem uma autoridade central confiável, como um banco que mantém os registros de cada uma dessas transações, o sistema financeiro desmoronaria rapidamente.

Portanto, embora a ideia de um livro-razão descentralizado e de uma moeda digital já exista desde a década de 1990, o problema do duplo gasto foi um grande obstáculo para sua implementação prática.

Como o Bitcoin / Blockchain resolve isso

Em 2009, Satoshi Nakamoto, um indivíduo ainda a ser identificado, publicou um papel branco no qual ele afirmava ter resolvido o problema de gastos duplos sem uma agência central atuando como árbitro, por meio de criptografia digital, teoria dos jogos e ciência da computação.

Nick Szabo apresentou Bitgold em 2005. Bitcoin é tão semelhante ao Bitgold e compartilha tantos de seus conceitos que algumas pessoas suspeitam que Szabo seja Satoshi Nakamoto.

Criptografia de chave pública

Para entender como a tecnologia blockchain funciona, é preciso entender a criptografia de chave pública. Os detalhes técnicos completos deste tópico estão além do escopo deste artigo. Mais detalhes estão disponíveis aqui.

Em um nível muito alto, a criptografia de chave pública depende de duas chaves: uma chave pública e uma chave privada. Essas duas chaves estão vinculadas, mas separadas conforme a seguir:

  • Apenas a chave pública pode descriptografar dados que foram criptografados pela chave privada correspondente
  • A chave pública pode verificar os dados assinados pela chave privada correspondente

A chave pública pode ser compartilhada com segurança com outras pessoas, portanto, “pública”. A chave privada deve ser mantida em segredo por motivos de segurança. A chave pública pode ser derivada da chave privada, mas não vice-versa.

Por exemplo, suponha que Bob deseja transmitir uma mensagem secreta para Alice. Bob precisará saber a chave pública de Alice para criptografar a mensagem antes de enviá-la para ela. Como a chave pública não é um segredo, Alice está livre para enviá-la a Bob. Quando Alice recebe a mensagem criptografada, ela pode descriptografá-la usando sua chave privada. Qualquer pessoa no meio que intercepta a mensagem não pode descriptografá-la sem a chave privada de Alice.

Para referência, esta é a aparência de uma chave pública:

305C300D06092A864886F70D01010105 00034B003048024100A251C92CCA3E7B 6599146DDB10044807B3AA1EFA8BE627 4D329765E0CC5A0EA03CA8F010524A89 2484A7C96498660A20DBD3AA3E92D2CB 5037DD95B7F69BBA630203010001

Uma mensagem criptografada pode ter a seguinte aparência:

—–BEGIN PGP MENSAGEM —– hIwCMavvb4t6z90BA / 42UOAdWvnzfhRG2xXyYe203CISLsn2O39vM / y640hNbSl7 U29aNGZFfLMRGn7eLZG43SWwBz4cHjphG6iAzeLftRgHkLggxXA9VpGki5PyNID9 B0rk4TpRVE3qzgTbdio69aMlK6BdAQ4zWkyxSCi0oR3Vpnh + VVZyOVyaX8etlYRM AvUTsuDYCkr1AQH + OlA4ntqhxoPP / SJpKm5ugMLYiiij8ak8V90a8IYMkYB0CzMr liOJ6ZZxQm1x8orgjL / 6Bm5EoSvN4eCCeA / xXKYAAAHXLhG47kVhJkjlPrI / L / SR 2aQEm6r + aU1s0ziU1LxF2c5DAW6cD5b4xH + EbvYrnQQJClNMh9y03SjviXvnqFDC O4M70u3iLC50 + em4PouqM1DZdoW8O5pb = vhFx —– MENSAGEM END PGP—–

Funções de hash – SHA-256

A criptografia garante que as mensagens entre as duas partes sejam seguras e confiáveis. No entanto, o destinatário também precisa verificar se a mensagem que recebeu não foi adulterada. Para fazer isso, cada mensagem transmitida é assinada digitalmente usando seu valor de hash.

Um hash é como a assinatura digital de uma mensagem. Numerosos algoritmos, conhecidos como funções hash, foram desenvolvidos para gerar um hash, como MD5 e SHA-1, mas o mais comumente usado agora é chamado SHA-256. Os detalhes de hashing e a matemática envolvida nas várias funções de hash são desnecessários para a compreensão do blockchain.

Uma função hash é uma função unilateral. Isso significa que o hash de uma mensagem é sempre o mesmo ao usar a mesma função. No entanto, a mensagem não pode ser descriptografada do hash.

SHA-256 sempre produz um valor de hash de 256 bits. Por exemplo:

[id da tabela = 1 /]

Como você pode ver, uma única mudança nos dados (maiúscula L neste caso) muda completamente o hash.

A entrada de dados para a função hash pode ser tão simples quanto uma única palavra ou pode ser o dicionário inteiro e sempre produzirá um valor hash de 256 bits semelhante aos acima.

O que são correntes

Conforme mencionado acima, qualquer conjunto de dados pode ser passado por uma função hash para gerar seu hash correspondente. Em um blockchain, esse conjunto de dados são as transações que ocorrem nele. Cada transação em um blockchain é assinada digitalmente usando seu hash, atualmente usando a função SHA-256. Todas as transações subsequentes incluirão a assinatura digital de sua transação anterior. Isso forma um corrente de transações de tal forma que, se alguém modificasse qualquer transação na cadeia, mudaria o valor de hash de todas as transações subsequentes. Isso torna mais fácil identificar qualquer cadeia onde uma transação anterior foi modificada apenas comparando os valores de hash.

Exemplo: Digamos que Bob precise transferir $ 10 para Alice e outros $ 5 para Charlie. Como as transações são atômicas, a transferência de $ 10 de Bob para Alice ocorrerá primeiro. Esta transação será assinada digitalmente usando seu hash SHA-256. A próxima transação de Bob transferindo $ 5 para Charlie também será assinada digitalmente, mas desta vez também incluirá o hash da transação anterior.

[id da tabela = 2 /]

Claro, as transações em um blockchain não serão assim, mas isso dá uma representação geral dela.

O que é mineração

Como mencionado anteriormente, o blockchain é uma rede de nós executando o mesmo software que se comunicam entre si para garantir que os dados estejam em sincronia. Alguns deles são nós especializados chamados mineiros.

O objetivo dos mineiros é verificar as transações que estão sendo feitas no blockchain. Quando uma série de cadeias de transações foram verificadas, elas são combinadas para formar um quadra de transações.

Como recompensa pela verificação correta e honesta das transações, os mineiros recebem a criptomoeda do blockchain correspondente. Assim, por exemplo, os mineiros na blockchain Bitcoin serão recompensados ​​com Bitcoin. Este valor é fixo, mas pode variar de tempos em tempos.

Os mineiros devem mostrar seus prova de trabalho para ganhar sua recompensa. O trabalhar a ser realizada é essencialmente encontrar um campo de 32 bits que, quando hash com o valor hash da cadeia de transações, gera outro valor hash com um número definido de zeros à esquerda. Este campo é denominado nonce. O número de zeros à esquerda a serem gerados é definido pela dificuldade que muda após um determinado número de blocos terem sido minerados. Quanto maior o número de zeros à esquerda, mais difícil se torna encontrar o nonce. 

Por exemplo, o nonce do bloco Bitcoin #493257 foi encontrado para ser 1488602745 que quando hash com as transações naquele bloco gerou o hash para o bloco de 00000000000000000034bd56aea0c6db865e8dff1fe5d2023170b568ad5e0968. Observe os zeros à esquerda no valor de hash do bloco.

É altamente inviável derivar um nonce usando uma fórmula. A única maneira de encontrar o nonce é por meio de suposições. Isso significa que os mineiros precisam gastar seu próprio poder de computação para percorrer um número potencialmente grande de valores de 32 bits antes de essencialmente tropeçar naquele que atende aos requisitos dos zeros à esquerda. O fato de terem encontrado o nonce prova que fizeram o trabalho para encontrá-lo.

Juntando o Blockchain

A criptografia de chave pública garante que as transações entre duas contas sejam seguras.

As funções de hash garantem que as transações sejam válidas, atômicas e virtualmente impossíveis de modificar.

A mineração por meio de prova de trabalho garante que as transações sejam confirmadas e verificadas por terceiros.

Todos esses métodos trabalhando juntos tornam o livro-razão distribuído e, portanto, um aplicativo como moeda digital, possível no blockchain.