paint-brush
Como desenvolvemos o protocolo Exa e o Darwin Blockchainpor@exaprotocol
375 leituras
375 leituras

Como desenvolvemos o protocolo Exa e o Darwin Blockchain

por Exa Protocol7m2023/08/11
Read on Terminal Reader

Muito longo; Para ler

Esta história discute o desenvolvimento de uma rede de armazenamento de arquivos descentralizada chamada Exa Protocol, que utiliza espaço de armazenamento gratuito em dispositivos móveis. Enfrentamos desafios com os protocolos da Camada 1 existentes e projetamos um novo chamado Darwin, usando uma abordagem paralela de blockchain. Darwin visa alcançar alto rendimento e escalabilidade com cadeias filhas independentes. O TestNet foi construído, oferecendo uma nova abordagem para a descentralização, capacitando os indivíduos a participar da manutenção da rede e servindo como uma infraestrutura de backbone da internet.
featured image - Como desenvolvemos o protocolo Exa e o Darwin Blockchain
Exa Protocol HackerNoon profile picture

Ainda me lembro da época em que o Google decidiu retirar o armazenamento ilimitado GRATUITO em seu aplicativo “Google Photos”. Para um fotógrafo autoproclamado como eu, foi uma notícia terrível e indicou apenas uma coisa - comprar a assinatura do Google Storage. Isso me fez pensar: “Ah, mais uma assinatura para viver neste planeta. Não era suficiente subscrever ao governo, pagando-lhes parte dos meus ganhos? (aka impostos)”


Momentos como este fazem você se perguntar se há algo para resolver esse problema. Minha cabeça tinha esses pensamentos:


  • “Vamos construir um serviço gratuito e ilimitado de armazenamento de fotos e entregá-lo às pessoas para que as pessoas o usem, e então você corre para os investidores para que possa comprar e executar mais servidores e, quando estiver perdendo, você diz – eu construiu um unicórnio” – Realisticamente, construindo um serviço que pede aos investidores que paguem pelo armazenamento de suas fotos.
  • “Mas e se eu cobrar pelo serviço?!” Então o tijolo da realidade bate na minha cabeça – “Então você quer construir outro Dropbox?”
  • Portanto, nenhum serviço SaaSy. O que mais?

Felizmente, uma resposta está no mundo Web3

Um smartphone hoje é tão capaz quanto um PC há apenas dois anos (computacionalmente) – mas fica inativo por um período substancial de tempo sem fazer nada – ou pior ainda, usa recursos computacionais mínimos enquanto assiste a TikToks ou Reels. E se esse telefone inativo pudesse ser usado para criar uma infraestrutura de armazenamento massiva usando o espaço de armazenamento gratuito disponível nos telefones?


A matemática aproximada sugere que, a cada ano, cerca de 80 EXAbytes de armazenamento são adicionados a este mundo por meio de novos dispositivos móveis. O protocolo está aqui para fornecer um pouco desse espaço ao público. Por isso estamos chamando de EXA…Protocolo.


Aqui está o que pensamos “Vamos construir um token no Ethereum e definir seu valor intrínseco para a quantidade de armazenamento que as pessoas compartilham em seus telefones. Eles serão compensados com o token nativo sempre que alguém armazenar ou recuperar arquivos de seu telefone.” Com a abordagem mobile-first, as pessoas que não têm meios para aproveitar o poder da descentralização e do blockchain poderão fazê-lo pela primeira vez. Isso, no verdadeiro sentido, será a democratização da tecnologia blockchain.


Não vou negar que, enquanto trabalhava nisso, lembrei-me desta citação de Joe Vitale –



“Um gol deve assustar um pouco e excitar muito.”

Joe Vitale



Ideação

Lembro-me de quando Arpan Garg e eu ( Saurabh Singh ) fomos ao quadro branco muitos meses e ainda estávamos confusos sobre como resolver o problema. A versão mais antiga da solução era: “Usaremos o Ethereum e implantaremos um contrato inteligente que compensará os usuários com nosso token sempre que eles permitirem que as pessoas usem seu armazenamento móvel”. e isso foi crivado de grandes problemas:


  1. Ethereum oferece um TPS limitado de 12 (antes do fork PoS). Teríamos sufocado a rede Ethereum com apenas 10 mil usuários que, em média, realizam transações 100 vezes por dia (uma solicitação de arquivo pode significar 50 solicitações por causa do sharding – descrito adiante). Isso terá um efeito cascata e aumentará o preço do gás para executar uma transação nas alturas! – Isso não vai escalar!

  2. Como convencemos as pessoas a salvar seus dados nos telefones de outras pessoas?

  3. Os telefones ligam e desligam e morrem depois de dois anos. Como garantir que os dados estejam seguros mesmo quando o telefone morre?


Primeiro, resolvemos os problemas 2 e 3:


  1. Permita que os usuários criptografem o arquivo antes que ele seja enviado para outros nós para armazenamento usando a criptografia AES 256, que oferece segurança suficiente.
  2. Uma vez criptografado o arquivo, podemos compartilhar o arquivo e armazenar as peças em diferentes dispositivos. Múltiplos dispositivos são usados para armazenar o shard para redundância e para o cenário – “O QUE ACONTECE QUANDO UM DOS DISPOSITIVOS FICAR OFFLINE, VOU PERDER TODOS OS MEUS DADOS!?”. Sim, recebemos muito essa pergunta…

Fig 1: O arquivo é dividido em fragmentos, criptografado e vinculado pelo cliente e salvo em vários nós na rede. Um fragmento pode ser armazenado em vários nós para redundância caso um nó fique offline


Para ser justo, a solução acima foi testada e comprovada e ficamos particularmente tranquilos em resolver esse problema. O maior problema era com os protocolos da Camada 1. Eles eram lentos. Como realmente slowww. A taxa de transferência que eles ofereciam não era suficiente para sustentar nem mesmo 1.000 usuários em nossa rede de armazenamento. Conforme descrito anteriormente, teríamos sufocado a rede facilmente. Os L2s também não ofereciam esperança.


Por isso, decidimos projetar uma nova Camada 1 que dimensiona e executa em dispositivos móveis nativamente. Estamos chamando nosso L1 – Darwin.

Solução

Uma bela manhã, Arpan e eu estávamos sentados no escritório discutindo, discutindo sobre a nova arquitetura Blockchain . Nós nos perguntamos: “ E se em vez de 1 blockchain, houvesse vários blockchains rodando em paralelo?


Parece bom, mas como você governaria isso?


Assim como governamos países, estados e cidades, permitindo que eles trabalhem de forma independente.


Vamos pensar bem; quando havia poucos humanos neste planeta, o mundo inteiro era um grande país para eles .”


Certo.


E quando havia mais humanos, eles dividiram a terra e criaram países separados.


Verdade.


Que tal fazermos o mesmo com nós móveis?


Podemos tentar…


E nós tentamos! Passamos a semana inteira no quadro branco projetando o L1 com analogias do mundo real. Nosso quadro branco costumava ser assim, descobrindo e resolvendo os detalhes da arquitetura:


Fig 2: Dos padrões de árvore no quadro branco à criação de Darwin.


Um mês e meio depois, finalizamos a arquitetura e a chamamos de Darwin.


Darwin foi arquitetado exatamente como as civilizações evoluíram ao longo do tempo e criaram cidades, estados e nações como as conhecemos. Em vez de visualizar todos os nós como parte de um blockchain inteiro, Darwin os segmenta em várias cadeias para obter uma melhor governança e melhorar o desempenho da rede.

Fig 3: Para os primeiros humanos, a terra completa poderia ser vista como uma nação completa. À medida que mais humanos aparecem, as terras são segregadas em seções menores chamadas países com sua própria governança.


As civilizações evoluem e criam grupos como as cidades; Darwin também evolui à medida que mais nós são adicionados à rede. A evolução da Darwin Chain divide-a em múltiplas Child Chains de modo a agrupar os nós que estão próximos para melhorar o desempenho da rede.


As civilizações também têm um sistema de governança robusto que lhes permite funcionar adequadamente. Darwin traz governança usando nós de servidor que auditam as cadeias filhas regularmente.

Como Darwain Funciona?

A Darwin Chain evolui continuamente para aumentar o TPS à medida que a rede cresce e também fragmenta e otimiza a cadeia dinamicamente para criar cadeias secundárias paralelas que funcionam de forma independente e possuem seu próprio conjunto de nós completos para validar as transações. Esses nós formam cadeias de nós que podem transacionar entre si com baixa latência, e cada cadeia é dividida em diferentes cadeias quando corresponde a algumas condições - chamadas de Mutação.

Fig. 4: Representação da mutação na Cadeia de Darwin à medida que o número de nós completos cresce e transaciona entre si. O Fossil Block mostrado aqui é o bloco de gênese de cada cadeia filho.


Quando uma cadeia sofre mutação, cada cadeia filha cresce independentemente e possui seus próprios nós independentes para validar as transações. Os nós são distribuídos entre cadeias filhas usando um algoritmo para reduzir a latência de comunicação e transação em cada cadeia filha. Isso aumenta exponencialmente o rendimento da cadeia, pois cada cadeia filha trabalha de forma independente para criar e validar transações.


Os recursos são disponibilizados mais rapidamente porque os nós são agrupados com base na maior proximidade, assim como funciona no caso de aplicativos Web2 hospedados em um servidor mais próximo da área que tem o tráfego máximo para os servidores. A cadeia Darwin também usa fatores como poder de computação, espaço de armazenamento compartilhado e disponibilidade/reputação de rede de um nó ao criar cadeias filhas.


A criação do Darwin resolveu o maior gargalo para nós: um L1 que pode suportar uma infraestrutura de armazenamento descentralizada e rodar nativamente em dispositivos móveis.

Desempenho de Darwin (máximo teórico): ~ 7,8 milhões de TPS.


Tudo isso foi formalmente estabelecido em nosso Yellow Paper, que está disponível em nosso site .

Mas Funciona Mesmo?

Fig 5: Captura de tela do explorador de cadeias de Darwin. Cada linha na árvore é um blockchain que funciona de forma independente.


Sim!


Recentemente, construímos um TestNet convertendo nossa teoria em código real. Na captura de tela acima, você pode ver como o blockchain Darwin se parece visualmente. A estrutura da árvore contém cada blockchain independente.

Próximos passos

Darwin é apenas uma Camada 1 agora que pode transacionar nosso token nativo. Nosso próximo passo é integrar a lógica DFS (Distributed File System) que cumprirá nosso objetivo de uma infraestrutura de armazenamento verdadeiramente descentralizada usando dispositivos móveis.


Olhando para a escalabilidade da cadeia, permitir a implantação de contrato inteligente criando uma VM compatível com EVM pode ser a próxima etapa após a integração do DFS.


Para alguns, pode ser apenas mais um blockchain; para nós, vemos uma abordagem totalmente nova em relação à descentralização. Quando Satoshi escreveu o Bitcoin Paper, ele imaginou um mundo onde pessoas como você e eu poderíamos fazer parte da rede e mantê-la. Mais de uma década se passou e parece que o poder de manter a rede está nas mãos de poucos (estou falando de ultragrandes fazendas de mineração).


Com Darwin, pretendemos dar às pessoas (não às corporações, nem aos poucos ricos) a custódia do sistema descentralizado que permite a transferência de criptoativos e servirá como uma infraestrutura de backbone da Internet.


Você vai participar dessa jornada conosco?


O dia em que Arpan (esquerda) e eu finalizamos a arquitetura de Darwin.


Publicado também aqui .