Como criar um aplicativo descentralizado e escalável? Use menos blockchain

Não, lançar um aplicativo descentralizado (dapp) no blockchain não levará a um negócio de sucesso. Na verdade, a maioria dos usuários nem sequer pensa se o aplicativo funciona no blockchain – eles simplesmente escolhem um produto que seja mais barato, mais rápido e mais simples.

Infelizmente, mesmo que o blockchain tenha seus próprios recursos e benefícios exclusivos, a maioria dos aplicativos executados nele são muito mais caros, mais lentos e menos intuitivos do que seus concorrentes centralizados.

Como criar um aplicativo descentralizado e escalável? Use menos blockchain

Muitas vezes, nos white papers de aplicativos construídos no blockchain, você pode encontrar um parágrafo que diz: "O blockchain é caro e não pode suportar o número necessário de transações por segundo. Felizmente, muitas pessoas inteligentes estão trabalhando para dimensionar o blockchain e quando nosso aplicativo for lançado, ele se tornará bastante escalonável.”

Em um simples parágrafo, um desenvolvedor de dapp pode abrir mão de uma discussão mais profunda sobre questões de escalabilidade e soluções alternativas para problemas. Isso geralmente leva a uma arquitetura ineficiente, onde os contratos inteligentes executados no blockchain servem como back-end e núcleo do aplicativo.

No entanto, ainda existem abordagens não testadas para a arquitetura descentralizada de aplicativos que permitem uma escalabilidade muito melhor, reduzindo a dependência do blockchain. Por exemplo, Blockstack está trabalhando em uma arquitetura onde a maioria dos dados e lógica do aplicativo são armazenados fora da cadeia.

Vejamos primeiro uma abordagem mais tradicional, que usa blockchain como intermediário direto entre usuários de aplicativos e que não é muito bem dimensionada.

Abordagem nº 1: Blockchain como back-end

Para deixar as coisas mais claras, tomemos como exemplo a indústria hoteleira. Esta é uma indústria enorme na qual intermediários como Booking.com, eles cobram uma taxa enorme para conectar hóspedes e hotéis.

Em qualquer situação em que quisermos derrotar tal intermediário usando esta abordagem, tentaremos replicar sua lógica de negócios usando contratos inteligentes em um blockchain como o Ethereum.

Os contratos inteligentes de código aberto executados no “computador mundial” podem conectar comerciantes a consumidores sem terceiros entre eles, reduzindo, em última análise, as taxas e comissões cobradas pelo intermediário.

Conforme mostra a imagem abaixo, os hotéis utilizam um aplicativo descentralizado para postar no blockchain informações sobre os quartos, sua disponibilidade e preços nos dias de semana ou finais de semana, e talvez até uma descrição dos quartos com todas as demais informações relevantes.

Como criar um aplicativo descentralizado e escalável? Use menos blockchain

Quem quiser reservar um quarto utiliza este aplicativo para pesquisar hotéis e quartos hospedados no blockchain. Assim que o usuário seleciona um quarto, a reserva é feita enviando ao hotel a quantidade necessária de tokens como depósito. E em resposta, o contrato inteligente atualiza a informação na blockchain de que o número não está mais disponível.

Existem dois lados do problema de escalabilidade com essa abordagem. Primeiro, o número máximo de transações por segundo. Em segundo lugar, a quantidade de dados que podem ser armazenados na blockchain.

Vamos fazer alguns cálculos aproximados. A Booking.com afirma ter quase 2 milhões de hotéis registrados. Digamos que um hotel médio tenha 10 quartos e cada um seja reservado apenas 20 vezes por ano – o que nos dá uma média de 13 reservas por segundo.

Para colocar esse número em perspectiva, é importante notar que o Ethereum pode processar aproximadamente 15 transações por segundo.

Ao mesmo tempo, vale considerar que nosso aplicativo também conterá transações de hotéis - para download e atualização constante de informações sobre seus quartos. Os hotéis atualizam os preços dos quartos com muita frequência, às vezes até diariamente, e cada alteração de preço ou descrição requer uma transação no blockchain.

Também há problemas de tamanho aqui – o peso do blockchain Ethereum ultrapassou recentemente a marca de 2 TB. Se as aplicações com esta abordagem se tornassem verdadeiramente populares, a rede Ethereum tornar-se-ia extremamente instável.

Tal sistema baseado em blockchain pode excluir estranhos devido à sua imparcialidade e falta de centralização, as principais vantagens da tecnologia blockchain. Mas o blockchain também tem outras características - é distribuído e não reescrito, são características excelentes, mas você tem que pagar por elas na velocidade e comissão das transações.

Portanto, os desenvolvedores de dapp devem avaliar cuidadosamente se cada recurso que usa o blockchain realmente precisa de distribuição e não-gravabilidade.

Por exemplo: qual é a vantagem de distribuir os dados de cada hotel por centenas de máquinas em todo o mundo e armazená-los permanentemente? É realmente importante que os dados históricos sobre tarifas e disponibilidade de quartos estejam sempre incluídos no blockchain? Provavelmente não.

Se começarmos a fazer perguntas como essas, começaremos a ver que não precisamos necessariamente de todos os recursos caros do blockchain para todas as nossas funções. Então, qual é a alternativa?

Abordagem nº 2: arquitetura inspirada no Blockstack

Embora a ênfase principal Blockstack em aplicativos nos quais os usuários são os proprietários de seus dados (por exemplo, como Texto aéreo, BentenSound, Otimizador de imagem ou Graphite), o blockstack também tem uma filosofia de usar o blockchain levemente – somente quando for absolutamente necessário. Seu principal argumento é que o blockchain é lento e caro e, portanto, só deve ser usado para transações únicas ou pouco frequentes. O restante da interação com as aplicações deve ocorrer através de peer-to-peer, ou seja, os usuários de aplicativos descentralizados devem compartilhar dados diretamente entre si, e não por meio do blockchain. Afinal, os aplicativos descentralizados mais antigos e bem-sucedidos, como BitTorrent, email e Tor, foram criados antes do próprio conceito de blockchain.

Como criar um aplicativo descentralizado e escalável? Use menos blockchain
Esquerda: A primeira abordagem, na qual os usuários interagem através do blockchain. Certo: os usuários interagem diretamente uns com os outros, e o blockchain é usado apenas para identificação e similares.

Voltemos ao exemplo da reserva de hotel. Queremos um protocolo imparcial, independente e aberto para conectar os hóspedes aos hotéis. Em outras palavras, queremos remover o intermediário centralizado. Não precisamos, por exemplo, armazenar constantemente os preços dos quartos num livro-razão distribuído comum.

Por que não permitimos que hóspedes e hotéis interajam diretamente, em vez de via blockchain? Os hotéis podem armazenar seus preços, disponibilidade de quartos e qualquer outra informação em algum lugar acessível a todos - por exemplo, IPFS, Amazon S3 ou até mesmo seu próprio servidor local. Isso é exatamente o que o sistema de armazenamento descentralizado da Blockstack chama Gaia. Ele permite que os usuários escolham onde desejam que seus dados sejam armazenados e controlem quem pode acessá-los por meio de uma abordagem chamada armazenamento multiusuário.

Para estabelecer confiança, todos os dados do hotel são assinados criptograficamente pelo próprio hotel. Independentemente de onde estes dados estejam armazenados, a sua integridade pode ser verificada através das chaves públicas associadas à identidade daquele hotel armazenada na blockchain.

No caso do Blockstack, apenas as informações da sua identidade são armazenadas no blockchain. As informações sobre como obter os dados de cada usuário são armazenadas em arquivos de zona e distribuídas por meio de uma rede ponto a ponto por meio de nós. E mais uma vez, você não precisa confiar nos dados fornecidos pelos nós, pois você pode verificar sua autenticidade comparando-os com os hashes armazenados no blockchain e em outros usuários.

Numa versão simplificada do sistema, os hóspedes utilizarão a rede peer-to-peer Blockstack para procurar hotéis e obter informações sobre os seus quartos. E a autenticidade e integridade de todos os dados que você recebe podem ser verificadas usando chaves públicas e hashes armazenados em circuito virtual Pilha de blocos.

Esta arquitetura é mais complexa que a primeira abordagem e requer uma infraestrutura mais abrangente. Na verdade, é exatamente aqui que entra o Blockstack, fornecendo todos os componentes necessários para criar um sistema tão descentralizado.

Como criar um aplicativo descentralizado e escalável? Use menos blockchain

Com essa arquitetura, armazenamos no blockchain apenas os dados que realmente precisam ser distribuídos e não sobrescritos. No caso do Blockstack, você só precisa de transações no blockchain para se registrar e indicar onde seus dados devem ser armazenados. Pode ser necessário fazer mais transações se quiser alterar alguma dessas informações, mas este não é um evento recorrente.

Além disso, a lógica da aplicação, em contraste com a primeira abordagem, funciona no lado do cliente e não em contratos inteligentes. Isso permite que o desenvolvedor altere essa lógica sem atualizações de contratos inteligentes dispendiosas ou às vezes até impossíveis. E ao manter os dados e a lógica dos aplicativos fora da cadeia, os aplicativos descentralizados podem atingir os níveis de desempenho e escalabilidade dos sistemas centralizados tradicionais.

Conclusão

Os aplicativos executados no Blockstack podem ser escalonados muito melhor do que os aplicativos blockchain convencionais, mas é uma abordagem mais jovem, com seus próprios problemas e perguntas sem resposta.

Por exemplo, se um aplicativo descentralizado não for executado em contratos inteligentes, isso reduzirá a necessidade de tokens utilitários. Isto poderia causar problemas para as empresas, considerando que as ICOs têm sido a principal fonte de financiamento para aplicações descentralizadas (incluindo o próprio Blockstack).

Também existem problemas técnicos aqui. Por exemplo, é relativamente fácil implementar uma função de reserva de hotel num contrato inteligente, onde numa operação atómica, as reservas de quartos são feitas em troca de tokens. E não é muito óbvio como a reserva funcionará em um aplicativo Blockstack sem contratos inteligentes.

Os aplicativos direcionados a mercados globais com potencial para milhões de usuários devem ser muito bem dimensionados para serem bem-sucedidos. É um erro confiar apenas em blockchains para atingir este nível de escalabilidade num futuro próximo. Para poder competir com grandes players do mercado centralizado, como Booking.com, os desenvolvedores de aplicativos descentralizados devem considerar abordagens alternativas para projetar seus aplicativos, como a oferecida pela Blockstack.

Fonte: habr.com

Adicionar um comentário