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

Não, a execução de um aplicativo descentralizado (dapp) no blockchain não levará a um negócio bem-sucedido. De fato, a maioria dos usuários nem pensa se o aplicativo funciona no blockchain - eles apenas escolhem um produto que é mais barato, mais rápido e mais fácil.


Infelizmente, mesmo que o blockchain tenha seus próprios recursos e vantagens, a maioria dos aplicativos executados é muito mais cara, mais lenta e menos compreensível do que seus concorrentes centralizados.



Muitas vezes, no whitepaper dos aplicativos criados no blockchain, você pode encontrar um parágrafo que diz: "o blockchain é caro e não é capaz de suportar o número necessário de transações por segundo. Felizmente, muitas pessoas inteligentes estão trabalhando no dimensionamento do blockchain mesmo no momento em que nosso aplicativo é lançado tornar-se-á escalável o suficiente. "


Em um parágrafo simples, um desenvolvedor dapp pode abandonar uma discussão mais profunda sobre problemas de escalabilidade e soluções alternativas para problemas. Isso geralmente leva a uma arquitetura ineficiente, onde o backend e o núcleo do aplicativo são contratos inteligentes em execução na blockchain.


No entanto, ainda existem abordagens não experimentadas na arquitetura de aplicativos descentralizados que permitem uma escalabilidade muito melhor, devido a uma diminuição na dependência da blockchain. Por exemplo, o Blockstack funciona em uma arquitetura em que a maior parte da lógica de dados e aplicativos é armazenada fora do blockchain.


Vamos primeiro olhar para uma abordagem mais tradicional, na qual o blockchain é usado como intermediário direto entre os usuários do aplicativo e que não é muito escalável.


Abordagem # 1: Blockchain como back-end


Para tornar mais claro, tomemos o setor hoteleiro como exemplo. É uma indústria enorme, na qual revendedores como o Booking.com cobram taxas enormes pela conexão de hóspedes e hotéis.


Em qualquer situação em que desejamos derrotar um intermediário usando essa abordagem, tentaremos repetir sua lógica de negócios usando contratos inteligentes em uma blockchain como, por exemplo, Ethereum.


Os contratos inteligentes de código aberto em execução em um "computador global" podem conectar vendedores a consumidores sem uma empresa de terceiros entre eles, reduzindo finalmente a taxa e comissão cobrada pelo intermediário.


Como mostrado na imagem abaixo, os hotéis usam um aplicativo descentralizado para colocar informações sobre quartos, sua disponibilidade e preços nos dias úteis ou finais de semana na blockchain, e até mesmo uma descrição dos quartos com todas as outras informações relevantes é possível.



Quem quiser reservar um quarto usa esse aplicativo para procurar hotéis e quartos localizados na blockchain. Assim que o usuário seleciona um quarto, a reserva é enviada enviando a quantidade necessária de tokens para o hotel como um depósito. E, em resposta, o contrato inteligente atualiza as informações no blockchain de que o número não está mais disponível.


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


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


Para estimar esse número, vale ressaltar que o Ethereum pode processar aproximadamente 15 transações por segundo.


Ao mesmo tempo, vale a pena considerar que em nosso aplicativo também haverá transações de hotéis - para baixar e atualizar constantemente informações sobre seus quartos. Os hotéis atualizam o preço dos quartos com muita frequência, às vezes até diariamente, e todas as alterações de preço ou descrição exigem uma transação no blockchain.


Também há problemas de tamanho aqui - o peso da blockchain Ethereum recentemente ultrapassou a marca de 2 TB. Se os aplicativos com essa abordagem se tornassem realmente populares, a rede Ethereum se tornaria extremamente instável.


Esse sistema baseado em blockchain pode excluir pessoas de fora devido à sua imparcialidade e falta de centralização - as principais vantagens da tecnologia blockchain. Mas o blockchain também tem outros recursos - é distribuído e não regravável, essas são excelentes características, mas você precisa pagar por eles com rapidez e taxas de transação.


Portanto, os desenvolvedores da dapps devem avaliar cuidadosamente se cada recurso que usa o blockchain realmente precisa de distribuição e não regravação.


Por exemplo: qual é a vantagem de distribuir os dados de cada hotel para centenas de carros em todo o mundo e armazená-los lá permanentemente? É realmente importante que dados históricos sobre preços e disponibilidade de quartos sejam sempre incluídos na blockchain? Provavelmente não.


Se começarmos a fazer essas perguntas, começaremos a ver que não precisamos necessariamente de todas as características caras do blockchain para todas as nossas funções. Então, qual é a alternativa?


Abordagem 2: arquitetura inspirada no Blockstack


Embora a ênfase principal do Blockstack esteja em aplicativos nos quais os usuários possuem seus dados (por exemplo, como Airtext , BentenSound , ImageOptimizer ou Graphite ), o blockstack também tem uma filosofia de pouco uso do blockchain - somente quando é absolutamente necessário. O principal argumento deles é que o blockchain é lento e caro, o que significa que ele deve ser usado apenas para operações únicas ou pouco frequentes. O restante da interação com os aplicativos deve ocorrer através de ponto a ponto, ou seja, os usuários de aplicativos descentralizados devem compartilhar dados diretamente entre si, e não através da blockchain. No final, os aplicativos descentralizados mais antigos e bem-sucedidos, como BitTorrent, email e Tor, foram criados antes do próprio conceito de blockchain.



Esquerda: a primeira abordagem na qual os usuários interagem através do blockchain. Certo: os usuários interagem diretamente entre si, e o blockchain é usado apenas para identificação e afins .


Vamos voltar ao exemplo de 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 em um registro distribuído comum.


Por que não permitimos que hóspedes e hotéis interajam diretamente, e não através do blockchain. Os hotéis podem armazenar seus preços, disponibilidade de quartos e qualquer outra informação em algum lugar em que estarão disponíveis para todos - por exemplo, IPFS, Amazon S3 ou mesmo seu próprio servidor local. É exatamente isso que o sistema de armazenamento descentralizado do Blockstack chamado Gaia fornece. Ele permite que os usuários escolham onde desejam armazenar seus dados e controlem quem pode ter acesso a eles por meio de uma abordagem chamada armazenamento multiusuário .


Para estabelecer confiança, todos os dados do hotel são criptograficamente assinados pelo próprio hotel. Não importa onde esses dados estejam armazenados, sua integridade pode ser verificada usando chaves públicas associadas às informações de identificação deste hotel armazenadas na blockchain.


No caso do Blockstack, apenas suas informações de identificação 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 uma rede ponto a ponto usando nós. E mais uma vez - você não precisa confiar nos dados que os nós distribuem, porque você pode verificar sua autenticidade comparando-os com os hashes armazenados na blockchain e com outros usuários.


Em uma versão simplificada do sistema, os hóspedes usarão a rede ponto a ponto do Blockstack para procurar hotéis e obter informações sobre seus quartos. E a autenticidade e integridade de todos os dados que você recebe podem ser verificadas usando chaves públicas e hashes armazenados na cadeia virtual Blockstack.


Essa arquitetura é mais complexa que a primeira abordagem e requer uma infraestrutura mais integrada. De fato, é exatamente aí que o Blockstack entra, fornecendo todos os componentes necessários para criar um sistema descentralizado.



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


Além disso, a lógica do aplicativo, ao contrário da 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 caras ou às vezes impossíveis no contrato inteligente. E, mantendo a lógica de dados e aplicativos fora do blockchain, aplicativos descentralizados podem atingir o nível de desempenho e escalabilidade dos sistemas centralizados tradicionais.


Conclusão


Os aplicativos em execução no Blockstack podem escalar muito melhor do que os aplicativos blockchain convencionais, mas essa é uma abordagem mais jovem, com seus próprios problemas e perguntas sem resposta.


Por exemplo, se um aplicativo descentralizado não funcionar em contratos inteligentes, isso reduzirá a necessidade de tokens de utilidade. Isso pode causar problemas para os negócios, uma vez que as OICs eram a principal fonte de financiamento para aplicativos descentralizados (incluindo o próprio Blockstack)


Há também problemas técnicos. Por exemplo, é relativamente simples implementar a função de reserva de hotel em um contrato inteligente, onde, durante uma operação atômica, as reservas de quarto são feitas em troca de tokens. E não é muito óbvio como a reserva funcionará no aplicativo Blockstack sem contratos inteligentes.


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

Source: https://habr.com/ru/post/pt486100/


All Articles