portuguese

english

Palestras sobre a Blockchain

Blocks

A blockchain, literalmente, é uma cadeia de blocos. Há um bloco inicial, o bloco Genesis e blocos que apontam aos seus antecessores.

Esta flecha que aponta ao antecessor é um hash, uma identificação do conteúdo inteiro do bloco antecedente; é um endereço que figura no cabeçalho do bloco.

O tronco do bloco consiste de transações, em média 2000 delas, entre os usuários do bitcoin.

Hashes

Como o hash do bloco depende do conteúdo inteiro do bloco, a singela alteração de um bit muda o seu hash, isto é, invalida a flecha do sucessor para ele! Logo, para os blocos continuarem a formar uma cadeia, é preciso alterar esta flecha. Logo, o hash do sucessor muda! Logo, para os blocos continuarem a formar uma cadeia, é preciso alterar a flecha do sucessor do sucessor, e assim por diante, uma reação em cadeia!

Quer dizer, se alterarmos algum detalhe, por exemplo, uma transação no primeiro bloco, todas as flechas (= hashes) que seguem têm de ser recalculadas!

Mineração

Entra a questão da mineração que dificulta muito esta alteração, porque somente blocos cujos hashes são pequenos, quer dizer começam com muitos zeros, são aceitos pela rede (isto é, pelos nós que verificam). Então, não basta alterar uma transação e calcular os novos hashes de todos os sucessores. É preciso fazer esta alteração tal que todos os hashes sejam pequenos!

É muito difícil encontrar uma tal alteração. Atualmente, a busca de um tal bloco requer um bilhão de anos num computador usual; mas só dez minutos pela rede dos mineradores. Enquanto o malfazejo começou a buscar os blocos aceitáveis, a rede já criou vários outros, invalidando este trabalho!

Transações

Todos os bitcoins que existem foram gerados por mineração, isto é, foram dados (pela coinbase transação) como recompensa àquele que criou um bloco (com um hash pequeno).

Todas as outras transações têm uma entrada e saída. Na entrada junta-se uma quantia suficiente para pagar o que será gastado. Tem de gastar tudo! Por isso, usualmente uma transação inclui o remetente como destinatário, o troco. O que não for gastado ganhará o minerador que incluirá esta transação no seu bloco como recompensa (atualmente em volta de 40 $).

O destinatário é designado pela sua chave pública, e só na hora em que gastará as moedas precisa de demonstrar a posse da sua chave privada correspondente, pela sua assinatura da transação.

Curvas Elípticas

O Bitcoin usa a criptografia com curvas elípticas finitas para assinar as transações: O Diffie-Hellman usa anéis finitos como {0, 1, ..., m} (por exemplo, m = 12 para o relógio, e um número primo como p = 2255 − 19 com 100 algarismos no Bitcoin). O conceito usado pelo Bitcoin semelha à de Diffie-Hellman, só que em vez de números 0, 1, 2, ... usa pares de números (x, y), isto é, pontos de uma curva, de um gráfico, dito elíptica.

A graça desta curva é que podemos adicionar pontos: vale p + q + r = 0 se os três pontos estão na mesma reta. Em vez de multiplicar várias vezes o mesmo número, adicionamos o mesmo ponto. É fácil adicionar pontos com esta receita sobre estes anéis finitos, mas é dificílimo saber quantas vezes um ponto foi adicionado a si mesmo para obter o ponto resultante. A cifração corresponde à adição, a decifração ao conhecimento deste número de vezes.

Finalmente, o esquema de assinatura é uma variação da assinatura de ElGamal: a assinatura demonstra que o dono da chave privada conseguiu resolver uma equação difícil, tão dificílimo que é praticamente impossível resolvê-la sem esta chave privada que fornece um atalho.