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

Não, lançar um aplicativo descentralizado (dapp) na blockchain não levará ao sucesso nos negócios. Na verdade, a maioria dos usuários nem se preocupa se o aplicativo está funcionando na blockchain — eles simplesmente escolhem o produto que é mais barato, mais rápido e mais fácil.

Infelizmente, mesmo que a blockchain tenha suas características e vantagens únicas, a maioria dos aplicativos que a utilizam é muito mais cara, mais lenta e menos compreensível do que suas concorrentes centralizadas.

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

É bastante comum em whitepapers de aplicativos construídos sobre blockchain encontrarmos um parágrafo que diz: "a blockchain é cara e não consegue suportar o número necessário de transações por segundo. Felizmente, muitas pessoas inteligentes estão trabalhando na escalabilidade da blockchain e, até o lançamento do nosso aplicativo, ela será suficientemente escalável."

Em um simples parágrafo, o desenvolvedor do dapp pode evitar uma discussão mais profunda sobre problemas de escalabilidade e soluções alternativas. Isso frequentemente resulta em uma arquitetura ineficiente, onde o back-end e o núcleo do aplicativo são tratados por contratos inteligentes que operam na blockchain.

No entanto, existem abordagens ainda não testadas na arquitetura de aplicativos descentralizados que permitem uma escalabilidade muito melhor, reduzindo a dependência da blockchain. Por exemplo, a Blockstack está desenvolvendo uma arquitetura onde a maioria dos dados e da lógica do aplicativo é armazenada fora da blockchain.

Vamos primeiro olhar para uma abordagem mais tradicional, onde a blockchain é usada como um intermediário direto entre os usuários do aplicativo e que não escala muito bem.

Abordagem #1: Blockchain como back-end

Para facilitar, vamos pegar a indústria hoteleira como exemplo. É uma indústria enorme, onde intermediários como o Booking.com cobram uma taxa exorbitante para conectar hóspedes e hotéis.

Em qualquer situação em que queiramos superar tal intermediário usando essa abordagem, tentaremos replicar sua lógica de negócios utilizando contratos inteligentes em uma blockchain como o Ethereum.

Contratos inteligentes de código aberto, executados em um "computador mundial", podem conectar vendedores a consumidores sem uma empresa intermediária, reduzindo assim as taxas e comissões cobradas pelos intermediários.

Como mostrado na imagem abaixo, os hotéis usam um aplicativo descentralizado para armazenar no blockchain informações sobre quartos, sua disponibilidade e preços em dias úteis ou fins de semana, e talvez até mesmo descrições dos quartos com todas as informações adequadas.

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

Qualquer pessoa que deseje reservar um quarto usa este aplicativo para procurar hotéis e quartos registrados no blockchain. Assim que o usuário escolhe um quarto, a reserva é feita enviando a quantia necessária de tokens para o hotel como garantia. Em resposta, o contrato inteligente atualiza a informação no blockchain, tornando o quarto indisponível.

Nesse método, há dois lados do problema de escalabilidade. Primeiro, o número máximo de transações por segundo. Em segundo lugar, o volume de dados que pode ser armazenado no blockchain.

Vamos fazer alguns cálculos aproximados. O Booking.com afirma ter quase 2 milhões de hotéis cadastrados. Suponha que, em média, um hotel tenha 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 a pena notar que o Ethereum pode processar cerca de 15 transações por segundo.

Além disso, deve-se considerar que em nosso aplicativo haverá também transações dos hotéis — para carregar e atualizar constantemente as informações sobre seus quartos. Os hotéis atualizam os preços dos quartos com muita frequência, às vezes até diariamente, e cada mudança de preço ou descrição requer uma transação no blockchain.

Aqui também está o problema do tamanho — o peso do blockchain do Ethereum recentemente ultrapassou a marca de 2TB. Se aplicativos com essa abordagem se tornarem realmente populares, a rede Ethereum se tornaria extremamente instável.

Um sistema baseado em blockchain pode excluir terceiros devido à sua imparcialidade e falta de centralização — as principais vantagens da tecnologia blockchain. Mas o blockchain também possui outras características — ele é distribuído e não regravável, essas são ótimas características, mas que vêm com custos em velocidade e taxas de transação.

Portanto, os desenvolvedores de dapps devem avaliar cuidadosamente se cada recurso que utiliza blockchain realmente necessita de descentralização e imutabilidade.

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

Se começarmos a fazer essas perguntas, começaremos a perceber que não precisamos de todos os recursos caros do blockchain para todas as nossas funcionalidades. Então, qual seria a alternativa?

Abordagem #2: Arquitetura inspirada no Blockstack

Embora o foco principal do Blockstack seja em aplicativos nos quais os usuários são proprietários de seus dados (como Airtext, BentenSound, ImageOptimizer ou Graphite), o Blockstack também tem a filosofia de usar o blockchain de forma minimizada — apenas quando absolutamente necessário. Seu principal argumento é que blockchain é lento e caro, portanto, deve ser utilizado apenas para operações isoladas ou raras. As demais interações com os aplicativos devem acontecer por meio de peer-to-peer, ou seja, os usuários de aplicativos descentralizados devem compartilhar dados diretamente entre si, e não através do blockchain. Afinal, os aplicativos descentralizados mais antigos e bem-sucedidos, como BitTorrent, e-mail e Tor, foram criados antes mesmo do conceito de blockchain ser desenvolvido.

Como criar um aplicativo descentralizado que seja escalável? Use menos blockchain
À esquerda: a primeira abordagem, onde os usuários interagem através do blockchain. À direita: os usuários interagem diretamente entre si, e o blockchain é utilizado apenas para identificação e afins..

Voltando ao exemplo de reserva de hotéis. Queremos um protocolo imparcial, independente e aberto para conectar hóspedes a hotéis. Em outras palavras, queremos eliminar o intermediário centralizado. Não precisamos, por exemplo, manter continuamente os preços dos quartos em um registro distribuído geral.

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

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

No caso do Blockstack, apenas suas informações de identificação são armazenadas no blockchain. As informações sobre como acessar os dados de cada usuário estão armazenadas em arquivos de zona e são distribuídas por meio de uma rede peer-to-peer usando nós. E mais uma vez — você não precisa confiar nos dados fornecidos pelos nós, porque pode verificar sua autenticidade comparando-os com os hashes armazenados no blockchain e com outros usuários.

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

Essa arquitetura é mais complexa do que a primeira abordagem e requer uma infraestrutura mais abrangente. Na verdade, é exatamente aí que o Blockstack entra, fornecendo todos os componentes necessários para criar um sistema descentralizado como esse.

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

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

Além disso, a lógica do aplicativo, ao contrário da primeira abordagem, opera do lado do cliente, e não em contratos inteligentes. Isso permite que o desenvolvedor altere essa lógica sem atualizações caríssimas ou, às vezes, até impossíveis, dos contratos inteligentes. Mantendo os dados e a lógica do aplicativo fora da blockchain, as aplicações descentralizadas podem alcançar níveis de desempenho e escalabilidade comparáveis aos de sistemas centralizados tradicionais.

Conclusão

Os aplicativos que operam na Blockstack podem escalar muito melhor do que os aplicativos de blockchain comuns, mas essa é uma abordagem mais nova, com seus próprios problemas e questões não respondidas.

Por exemplo, se um aplicativo descentralizado não funciona com contratos inteligentes, isso reduz a necessidade de tokens utilitários. Isso pode causar problemas para os negócios, considerando que as ICOs foram a principal fonte de financiamento para aplicativos descentralizados (incluindo a própria Blockstack).

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

Aplicativos que visam mercados globais com potencial para milhões de usuários devem ser altamente escaláveis para ter sucesso. É um erro confiar exclusivamente nas blockchains para alcançar tal nível de escalabilidade no futuro próximo. Para competir com grandes players centralizados do mercado, como o Booking.com, os desenvolvedores de aplicativos descentralizados devem considerar abordagens alternativas para o design de seus aplicativos, como as que a Blockstack oferece.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster