Introdução à aplicações descentralizadas

Lucas Vieira
4 min readApr 16, 2018

--

Decentralized Applications

Neste post vamos aprender a construir aplicações descentralizadas (dapp). Na verdade vou separar em três partes, sendo que na primeira vamos entender a diferença entre um dapp e uma aplicação tradicional, na segunda parte construiremos um contrato inteligente e por fim uma UI para se comunicar com esse contrato. Estamos acostumados com o seguinte “modelo”:

Arquitetura tradicional

Escrevemos o front end com HTML/CSS/JS e no back end um framework à sua escolha como Nodejs ou Django. Essas duas camadas se comunicam enviando mensagens em JSON através do protocolo HTTP. Além disso, como mencionei no post sobre Ethereum, há um servidor que hospeda seu site. Já nas dapps o modelo é um pouco diferente:

Arquitetura do dapp

No front end continuamos desenvolvendo da mesma forma, a diferença é o back end. Podemos, por exemplo, usar a blockchain da Ethereum. A comunicação pode ser feita através das mensagens em JSON mesmo. É importante ressaltar que o usuário não conseguirá distinguir se está interagindo com um dapp ou uma aplicação tradicional, ou seja, a mudança seria invisível.

Problemas com a arquitetura tradicional

  • Roda em um servidor centralizado

Para derrubar todos os sites que estão hospedados em um provedor popular, tudo o que você precisa fazer é romper a infraestrutura desse único provedor o que pode acarretar com a potencial queda de metade da internet. Esta não é uma arquitetura muito resiliente.

  • Fácil de censurar e/ou controlar

Um governo pode, com facilidade, censurar ou até controlar o que é exibido em um site especifico ou o que é trafegado na internet simplesmente por que não concordam ou não gostam. Entretanto, se sua aplicação estivesse rodando em todos os nós de uma rede, isso não seria tão fácil. Para censurar uma aplicação blockchain você teria que derrubar todos os nós (computadores da rede) ao mesmo tempo. De acordo com o ethernodes a blockchain da Ethereum tem atualmente 14933 nós espalhados pelo mundo.

Quando confiamos em servidores centralizados criamos honeypots de dados para possíveis atacantes e já vimos isso varias vezes, o ultimo caso que vimos foi o vazamento de dados da Uber e Facebook. Essas empresas guardam dados sensíveis de milhões de clientes pelo mundo que depositam sua confiança nelas. Como um hacker em potencial é muito lucrativo entrar em apenas um servidor e ter acesso a esses milhares de dados, geralmente usados para fazer comprar no nome do cliente, etc. Com a blockchain ter acesso a esses dados sensíveis não é tão trivial assim.

Outro problema é a integridade de dados. Assumindo que você confia 100% no seu provedor, isto não é um problema. Mas como você pode ter certeza, certo? O que impede um funcionário não autorizado de alterar os dados do banco de dados? E se essas informações forem seus dados bancários e saldo da sua conta? Isso é muita coisa para colocar na responsabilidade de uma única organização.

De fato hoje em dia, dados são muito valiosos, muitas empresas lucram justamente com nossos dados, que muitas vezes são coletados e vendidos sem o nosso conhecimento ou consentimento. Pense sobre isso, todos os dados que são gerados por todo mundo é monetizado por apenas um grupinho de empresas. Com aplicações descentralizadas, os usuários podem retomar o controle de seus dados e decidir por si mesmo se querem monetiza-los ou não. E caso decidam vendê-los quem fica com o lucro é o dono dessas informações. É o caso da Steemit, rede social que paga para que seus usuários criem conteúdo.

Proteção à falhas é outro problema. A não ser que você tenha o trabalho de criar backups não há garantias de que os dados vão sobreviver a falhas catastróficas. Não há um padrão de como esses backups devem ser feitos, algumas empresas podem até não fazer ou guarda-los em um lugar vulnerável. Com a blockchain todos os dados podem ser lidos de forma pública e os dados são redundantemente replicados nos nós da rede, garantindo que os dados nunca sejam perdidos, mesmo que um certo número de nós caiam.

Tudo isso não foi para dizer que a blockchain é a solução maravilhosa para tudo já que ela também tem suas limitações como o tempo para enviar transações, escalabilidade, etc. Alguns projetos como o Tendermin e Cosmos estão trabalhando para melhorar ainda mais a forma com que as blockchains são criadas. Mas com certeza dapps proveem um novo nível de garantias que não são encontradas em outros sistemas como uma tolerância a falhas superior e execução sem necessidade de confiar em organizações ou terceiros.

Agora que entendemos os benefícios de um dapp vamos fazer um para votação. No próximo post escreveremos o contrato da aplicação em Solidity, caso não saiba nada sobre Solidity este post faz uma boa introdução.

--

--

Lucas Vieira

Computer science student. Currently learning, coding and testing blockchain applications