Como Executar um Blockchain em uma Ilha Deserta, com Caneta e Papel

Alex Berloffe
CoinYou
Published in
10 min readJul 15, 2018

por Tal Kol

Esta é uma tradução para o idioma português do artigo original em inglês, autorizada pelo autor. This is a translation to portuguese of the original article in english, duly authorized by the author.
Artigo original: https://hackernoon.com/how-to-run-a-blockchain-on-a-deserted-island-with-pen-and-paper-899949ec555b

Se você estiver preso em uma ilha deserta, saber como executar o processo de consenso descentralizado — ou, em outras palavras, operar um blockchain muito simples à mão — pode ser bem útil. Tudo que você precisa é de alguns colegas sobreviventes, este post, uma caneta e alguns pedaços de papel.

Se você não tiver certeza de que essa habilidade é realmente útil para a sua sobrevivência, leia o meu último post sobre como um blockchain pode melhorar muito a vida na ilha.

Vamos voltar à história original e passar pelo processo com nossos heróis destemidos, que acabaram de cair de avião em uma ilha deserta, em algum lugar no Pacífico Sul — Hugo , Sawyer , Kate e Jack .

Uma breve recapitulação: a gangue está tentando implementar o IslandCoin, uma nova e revolucionária moeda que trará um fim à economia aleijada da ilha. A turma concorda que é justo que cada um deles comece com 100 moe-das. Uma vez que eles não têm metal para cunhar moedas reais, eles terão que se contentar com alguns pedaços de papel. Crivada de problemas de confian-ça, a turma não conseguiu concordar sobre quem seria a pessoa que iria manter o controle dos saldos. Sua única opção é manter os saldos juntos.

Vamos começar com o que é provavelmente a implementação de blockchain mais simples para nosso caso de uso de ilha. Em posts futuros, podemos explorar outras implementações e vinculá-las a conceitos como Prova de Trabalho e Prova de Estaca — isso nos ajudará a enxergar melhor seus bene-fícios e desvantagens. Mas por enquanto, vamos começar da maneira mais simples possível.

O que estamos tentando alcançar?

É muito simples, na verdade — tudo o que estamos tentando fazer é manter uma simples tabela de saldos em um pedaço de papel. A tabela abaixo mostrará quantas moedas cada um de nossos heróis tem. O truque é que como não podemos ter apenas um pedaço de papel que contenha a única fonte da verdade — vamos ter manter as coisas iguais e deixar que cada membro da gangue mantenha sua própria versão- essa é a parte descentralizada. E, naturalmente, também esperamos que os 4 pedaços de papel eventualmente mostrem a mesma coisa- essa é a parte do consenso.

Então, como seria esse pedaço de papel?

Este documento é o primeiro em que concordamos — é por isso que está marcado como o dia 1.

De onde vieram esses saldos?

Nós previamente concordamos que é justo que cada um comece com 100 moedas.

Também vamos precisar de um dos sobreviventes para escrever este artigo. Realmente não importa quem, então vamos levar Hugo. Ele será o único a publicar este artigo para todos e garantir que cada um salve uma cópia (a ilha tem uma incrível máquina de fotocópia, esqueci de mencionar).

Como os saldos de moedas devem mudar, criaremos um novo pedaço de papel atualizado no final de cada dia. Pode não ser sempre Hugo quem publica a atualização — queremos manter as coisas da forma mais justa possível afinal.

Outra parte importante, devido à falta de confiança mútua no grupo, é fazer com que cada uma das gangues confirme a atualização de status individualmente. Uma maneira fácil de conseguir isso é fazer com que cada um dos sobreviventes assine cada um dos documentos — mas apenas se eles concordarem com o que está escrito nele.

Então, quantas pessoas precisarão assinar um documento para que ele seja considerado final e aprovado? Precisamos chegar a um consenso , então a maioria fará. Como temos 4 pessoas no total, a maioria é pelo menos 3 de 4. O documento acima foi assinado por todos os quatro, então é definitivamente final. Alcançamos consenso. Por que não queremos exigir todas as quatro assinaturas em todos os artigos? Porque isso permitirá que um indivíduo comprometa todo o processo. Se Sawyer for pescar por alguns dias, a gangue não pode atualizar os balanços até que ele volte — isso dá a uma pessoa muito poder. Por que precisamos mesmo de uma maioria? Por que não 2 de 4 assinaturas já serem suficientes? Porque se tivermos apenas de 2 de 4, podemos acabar com 2 pessoas (como Hugo e Sawyer) assinando uma versão de balanços, e as outras 2 pessoas (Kate e Jack) assinando uma versão diferente que não combina. Não podemos ter duas versões conflitantes da realidade consideradas finais.

Na manhã do segundo dia, Kate quer comprar um tomate. Hugo vende tomates por 2 moedas cada. Ela quer transferir 2 moedas para Hugo. Kate pega um novo pedaço de papel e escreve a transferência:

É a primeira ação de Kate, então ela rotula como tal. Além disso, Kate assina este papel. Precisamos ter sua assinatura para garantir que ninguém mais possa forjar uma solicitação de transferência em sua conta.

O final do segundo dia está se aproximando e a turma quer publicar um conjunto atualizado de balanços. Hugo publicou o jornal para o primeiro dia e recolheu as assinaturas de todos. Faz sentido se revezar fazendo isso. A gangue concorda em usar uma ordem rotativa simples: Hugo, Sawyer, Kate, Jack, Hugo, Sawyer e assim por diante.

Isso significa que publicar o papel de status para o dia 2 é de responsabilidade de Sawyer. O status que ele publica reflete a transferência de Kate:

Esse papel que Sawyer fez não é final, porque é assinado apenas por Sawyer. Ele precisa coletar mais assinaturas. Sawyer passa pela turma e pede para cada um verificar e assinar. Este documento é muito fácil de verificar. Primeiro, o verificador precisa procurar em sua própria coleção de papéis e encontrar o documento de status que mostra os saldos do dia anterior (dia 1, neste caso). Em seguida, o verificador precisa atualizar os saldos de todos conforme a nova lista de transferências. Neste caso, só temos uma transferência por Kate. Esta transferência é fácil de verificar, nós podemos ter certeza de que ela está de fato assinada por Kate e nós podemos ter certeza que Kate realmente tem moedas suficientes para dar esse valor a Hugo.

Uma vez que cada habitante da ilha conclua seu processo de verificação e assine o papel, Sawyer agora tem um documento de status final para o dia 2 para publicar para todos. Todo mundo faz uma cópia e vai dormir feliz e contente.

O dia 3 está chegando. O sistema está funcionando bem e todo mundo está animado para gastar suas moedas. Hugo quer comprar lenha de Sawyer por 10 moedas. Sawyer quer pegar algumas pílulas de Jack por 25 moedas. Jack está com fome de um tomate e quer dar a Hugo 2 moedas para comprar um.

Cada um deles cria um pedaço de papel detalhando sua transferência:

À medida que a noite se aproxima, a pessoa que publica os saldos atuais é Kate. Para garantir que o Kate inclua essas transferências em sua proposta de trabalho, cada um dos sobreviventes precisará fornecer, a cada um dos outros no grupo, uma cópia da solicitação de transferência.

Só que Jack demora para entregar a cópia de seu pedido de transferência para Kate e quando ele o traz para ela, seu status de balanço do dia já está escrito:

Jack está frustrado pois esse status de saldo não incluiu sua própria transferência. Isso significa que Hugo não receberá o pagamento de Jack pelo tomate e não lhe dará o tomate para o jantar. Jack vai dormir com fome esta noite. Ele sai à procura de algo para comer e não assina a proposta de papel de Kate para o dia. Por sorte, Kate consegue obter assinaturas suficientes do resto da turma:

Kate conseguiu obter 3 assinaturas no papel, cada uma verificando se os saldos realmente correspondem às transferências e aos saldos de ontem.

Como temos uma maioria, então esta folha é final para o dia 3.

É dia 4 e ninguém sabe onde Jack está. Ele foi pescar na noite anterior, foi pego em uma tempestade e não voltou ao acampamento. Pode ser problemático porque hoje é a vez de Jack publicar a atualização de saldo.

Kate quer fazer algumas transferências hoje, ela as escreve em um pedaço de papel e dá uma cópia para todo mundo:

A noite se aproxima e Jack ainda não voltou. A gangue já havia concordado que é sua vez de publicar os saldos, mas ele não está em lugar nenhum, então a atualização do balanço deste dia é pulada.

É o dia 5 e Hugo é o responsável por publicar a atualização diária. Está chovendo há alguns dias e Hugo quer um lugar mais quente para dormir. Ele pede a Sawyer para construir uma pequena cabana de madeira. Sawyer quer 200 moedas para o trabalho. É um problema, porque o Hugo tem apenas 98 moedas. Hugo tem uma ideia maluca, ele é o único a publicar o balanço hoje, então por que não adicionar uma “transferência louca” desse montante para Sawyer?

Não há outras transferências hoje. Hugo tem as transferências de Kate de ontem, e a transferência de Jack do dia anterior não acabou. Ele acrescenta tudo isso, junto com sua nova “transferência louca”:

Hugo assina essa atualização, embora sua transferência não faça sentido. Para tornar esta atualização de status final, ele precisa coletar mais duas assinaturas. Quando ele se aproxima de Sawyer e Kate, eles notam que no balanço final anterior (a partir do dia 3), Hugo tinha 92 moedas. Como ele pode enviar 200 para Sawyer? Eles se recusam a assinar este balancete até que ele corrija esse erro e remova essa transferência inválida. Ele relutantemente concorda e publica um novo balanço que está correto. Eles acabam assinando:

Esta atualização de saldo é final porque tem 3 assinaturas.

É a manhã do dia 6. Jack finalmente volta ao acampamento. Ele teve alguns dias difíceis com a tempestade e tudo. Ele não participou das discussões nos últimos dois dias e perdeu anúncios de novas transferências e publicações de novas atualizações de saldo. Ele não tem certeza de quantas moedas ele tem. Ele encontra o primeiro sobrevivente que ele vê e pede as últimas atualizações que ele perdeu. Ele recebe a atualização final do dia 5 e a atualização aprovada do Kate, publicada no dia 3.

É fácil para Jack sincronizar de volta com o resto da turma. Ele pode ver que essas atualizações de saldo foram de fato assinadas pelo menos 3 vezes, então ele pode estar relativamente seguro de que elas estão bem. Ele também pode realizar os cálculos com base nessas atualizações e na atualização mais recente (do dia 2). Isso permitirá que Jack participe das transferências de hoje, assim como ele não perdeu nada.

O sistema parece estar funcionando bem. É verdade que é um pouco simplista, mas é suficiente para o que esses habitantes da ilha precisam. Bem, não podemos ter uma blockchain funcional sem um papel branco! A gangue se senta e celebra a realização publicando esse magnífico documento:

Por que isso é considerado um blockchain? Para começar, cada pedaço de papel publicado diariamente representa um bloco. Cada bloco é numerado e aponta para o anterior — formando uma cadeia de blocos. Para verificar o estado atual das balanças, qualquer observador deve começar do começo da cadeia (dia 1 — o bloco gênese ) e verificar cada um dos blocos um após o outro em sucessão. Os saldos evoluem de forma incremental.

Esta é uma implementação ideal do Blockchain? Provavelmente não. Pode ser melhorada de várias maneiras. Por exemplo, ela só suporta esses 4 habitantes. O que acontece se um sobrevivente chegar à ilha pela água? Este protocolo será capaz de acomodá-los? Este protocolo também está atualmente sem restrições de permissão, como podemos atribuir tais restrições ? E se quiséssemos modificá-lo para usar prova de trabalho ou teste de estaca?

Bem, vamos explorar essas ideias nos próximos posts desta série.

Tal é um dos fundadores da Orbs.com — uma infraestrutura pública de blockchain para aplicações de larga escala, voltadas ao consumidor, com milhões de usuários. Para saber mais, e para ter acesso aos Orbs White Papers clique aqui. [Siga-nos no Telegram, Twitter, Reddit]

Tal Kol

Blockchain disponível para o consumidor. Fundador da Orbs.com. Fã de React. Ex-chefe de engenharia da Kin by Kik, Ex-chefe de engenharia mobile da Wix.com.

--

--

Alex Berloffe
CoinYou
Editor for

To be curious is a self-given right that sets the pace and points the way to anywhere out of this ordinary place we live in.