WEB3DEV

Cover image for O que é um light client e por que você deve se importar?
Rafael Ojeda
Rafael Ojeda

Posted on • Atualizado em

O que é um light client e por que você deve se importar?

O que é um light client e por que você deve
se importar?

Os light clients são elementos cruciais nos ecossistemas de blockchain. Eles ajudam os usuários a acessar e interagir com uma blockchain de forma segura e descentralizada sem ter que sincronizar toda a blockchain. Neste artigo, vou explicar em palavras simples o que é um light client, o que não é e de onde ele vem.

Antes de falar sobre o que é um light client, vamos começar esclarecendo o que é um client. Um client na ciência da computação é uma peça de hardware ou software que se conecta a um servidor. Um navegador da Internet, por exemplo, é um client - ele se conecta ao servidor de um site para solicitar seu conteúdo. No contexto de uma blockchain, um client é um software que se conecta a outros clients de uma forma peer-to-peer. Como todos esses clients falam uns com os outros, eles formam uma rede onde cada client é um node. Esta é a razão pela qual o termo node também é usado no lugar de client.

No caso do Ethereum, costumava haver apenas um tipo de node, agora referido como um full node. Este software é responsável pela verificação e retransmissão das transações e blocos na rede. Devido ao ambiente não confiável (a internet aberta) e à natureza de uma blockchain, cada full node precisa baixar e verificar cada bloco, e portanto cada transação em cada bloco.

Ambos Parity Ethereum e Geth, os dois clients mais populares do Ethereum, podem rodar em um laptop moderadamente potente atualmente. Entretanto, o download e a verificação de toda a blockchain leva tempo e recursos. Por exemplo, agora é necessário usar um SSD para sincronizar totalmente a blockchain Ethereum. Um HDD não consegue acompanhar as operações de entrada/saída necessárias por segundo.

Os casos de uso do full node

Atualmente, as organizações e as pessoas físicas administram full nodes porque precisam disso para seus negócios. Pense nos mineradores, block explorers, exchanges. Os usuários individuais podem querer executar um full node porque é a forma mais segura de interagir com a blockchain. Em uma escala muito menor, eles também podem fazê-lo por puro altruísmo para ajudar a rede. Executar um full node 24/7 requer um bom nível de conhecimento e recursos que, compreensivelmente, a maioria dos usuários não está disposta a investir. Exceto para os mineradores, não há incentivo embutido para executar um full node, apesar desta peça de infra-estrutura ser crítica para a rede.

Como resultado, a maioria dos usuários que interage com a blockchain irá, voluntariamente ou não, usar uma peça centralizada de infra-estrutura. As exchanges de software mais populares dependem, por padrão, de um node hospedado por terceiros. Estes clients se conectam a um remote node e confiam completamente em suas respostas de forma não-criptograficamente comprovada. O aspecto positivo disto é obviamente a experiência aprimorada do usuário, pois os usuários destas exchanges não precisam executar seu próprio node. No entanto, eles são forçados a confiar em um nó de terceiros. Metamask, MyEtherWallet e MyCrypto se conectam a um remote node por padrão, mas ainda permitem que os usuários se conectem a seu próprio local node se assim o desejarem. Este não é o caso das exchanges Jaxx ou Exodus, que se conectam a um remote node por padrão, sem opção de conexão com o local node do próprio usuário. As exchanges móveis não são mencionadas aqui, pois os telefones celulares não são capazes de rodar full nodes.

Empresas como a Infura dedicam-se a rodar full nodes e os disponibilizam gratuitamente para aqueles que precisam deles. Abstrair o incômodo de sincronizar um nó completo permite que qualquer usuário possa acessar a blockchain sem esforço. Tais soluções ajudam a tornar o Ethereum acessível a mais usuários. Entretanto, embora esta iniciativa tenha sido um grande acréscimo ao ecossistema, ela representa um ponto singular de falha centralizado que é contrário à filosofia da blockchain descentralizada. Até alguns meses atrás, os desenvolvedores de exchanges não tinham outra escolha.

"Nosso objetivo é criar um protocolo compatível com vários graus de 'leveza', desde clientes que não armazenam quase nada até aqueles que armazenam quase tudo". - _PIP, Parity Light Protocol_

A alternativa leve: light clients

Um light client ou light node é um software que se conecta a full nodes para interagir com a blockchain. Ao contrário de seus pares de full nodes, os light nodes não precisam funcionar 24 horas por dia, 7 dias por semana ou ler e escrever muitas informações sobre a blockchain. Na verdade, os light client não interagem diretamente com a blockchain; eles usam os full nodes como intermediários. Os lights clients dependem de full nodes para muitas operações, desde solicitar os últimos cabeçalhos até pedir o saldo de uma conta.

A forma como os protocolos de light clients são projetados permite que eles interajam com full nodes de uma maneira atenuada pela confiança. Este é um aspecto crucial para entender, então vamos dar um passo atrás para rever os princípios básicos da blockchain Ethereum:

  • Usuários regulares enviam transações na rede usando full nodes, light nodes ou remote nodes confiáveis.
  • Os full nodes recebem transações de seus pares na rede, verificam a validade dessas transações e as transmitem para a rede.
  • Os mineradores são full nodes anexados a um software específico. Eles recebem e verificam as transações da rede como um full node normal, mas adicionalmente investem muita energia para encontrar a solução de um problema para permitir autorizar o próximo bloco. Os full nodes utilizados pelos mineradores chegam a um consenso sobre qual bloco deve ser adicionado à blockchain e construído em cima dela. Qualquer bloco que tenha pelo menos 10 blocos construídos em cima dele é considerado seguro no sentido de que as transações nele contidas têm uma probabilidade muito baixa de serem revertidas.

Agora, de volta aos nossos light clients. Como ponto de partida, um light client precisa baixar os cabeçalhos dos blocos da blockchain. O light client não precisa confiar no full node para cada pedido que faz ao full node. Isto porque os cabeçalhos de bloco contém um pedaço de informação chamado Merkle Tree Root. A Merkle Tree Root é como uma impressão digital de todas as informações na blockchain sobre saldos de contas e armazenamento de smart contracts. Se qualquer pequeno pedaço de informação mudar, esta impressão digital também mudará. Assumindo que a maioria dos mineradores são honestos, os cabeçalhos dos blocos e, portanto, as impressões digitais que contêm são assumidas como válidas. Um light client pode precisar solicitar informações de full nodes, tais como o saldo de uma conta específica. Conhecendo as impressões digitais de cada bloco, um light client pode verificar se a resposta dada pelo full node coincide com a impressão digital que ele possui. Esta é uma ferramenta poderosa para provar a autenticidade da informação sem conhecê-la de antemão.

Como os light clients precisam enviar vários pedidos para fazer operações simples, a largura de banda total necessária é maior do que a de um full node. Por outro lado, a quantidade de recursos e armazenamento necessária é várias ordens de magnitude inferior à de um full node, alcançando um nível de segurança muito alto. Exigindo apenas cerca de 100 MB de armazenamento e baixa potência computacional, um light node pode funcionar em um dispositivo móvel! Isto significa que um telefone celular pode acessar a blockchain de forma descentralizada.

Como requer uma fração das informações de um full node, um light node pode sincronizar-se com uma blockchain muito mais rapidamente. Atualmente, leva cerca de uma hora para sincronizar toda a blockchain da rede principal Ethereum com um light client, mas qualquer coisa acima de alguns segundos para que o node se sincronize seria demais para qualquer aplicação. Foram desenvolvidas soluções para que light clients sincronizassem rapidamente com o topo da blockchain, embora estas soluções muitas vezes incluam tradeoffs. Atualmente, os light clients têm um ponto de verificação da blockchain de confiança incorporado em seu código. Graças a isso, o client só precisa baixar os últimos cabeçalhos, permitindo que ele consiga uma sincronia em questão de segundos. Os usuários dos light clients confiam nos desenvolvedores dos clients para integrar um ponto de verificação válido. Esta troca é considerada aceitável, pois os usuários já precisam confiar nos desenvolvedores para a implementação do client. Para realizar uma sincronização rapidamente de forma descentralizada, a Parity Technologies desenvolve atualmente uma solução alternativa que permite aos light clients realizar uma sincronização warp-sync de forma semelhante aos full nodes.

"No futuro, os Light Clients estarão por toda parte." - Marty McFly

Desafios dos light clients

Os light clients são bem adequados para as principais funções, como o envio de algumas transações e a verificação do saldo das contas. As principais críticas feitas aos light clients são que eles não ajudam diretamente a rede. Eles não verificam nenhuma outra informação além daquela que precisam para seu próprio propósito, não servem ou retransmitem informações da rede para outros colegas e utilizam recursos de full nodes sem dar nada em troca.

Em comparação com os full nodes, os light clients fornecem uma experiência muito melhor para o usuário final enquanto permitem que os usuários finais acessem a blockchain de forma descentralizada e segura. A chave é encontrar uma maneira de incentivar indivíduos e instituições a rodar full nodes, servir light nodes e punir full nodes maliciosos que servem dados ruins. Uma maneira de tornar os light clients sustentáveis é fazer com que eles realizem micropagamentos para cada pedido feito aos full nodes. Num futuro próximo, os light clients desempenharão um papel significativo na fragmentação do Ethereum para permitir que o validador sincronize diferentes fragmentos rapidamente. light clients também poderiam ser usados para denunciar atores maliciosos (validadores ou plasma authorities). O incentivo total do node pelos light clients é uma área ativa de pesquisa, pois o incentivo é a chave para a estabilidade do ecossistema.

Há idéias promissoras para permitir que os light clients se sincronizem rapidamente, evitando as concessões acima mencionadas. Uma idéia é permitir que os full nodes forneçam provas de conhecimento zero (por exemplo, zk-STARK) do último cabeçalho conhecido. O light client poderia então verificá-lo e sincronizá-lo com o topo da chain sem o conhecimento prévio do estado da blockchain.

Em resumo, os light clients serão a espinha dorsal das aplicações descentralizadas a curto prazo, e esta é uma notícia muito boa para um ecossistema descentralizado de fácil utilização.

Thibaut Sardan é um Desenvolvedor Front - End @ Parity Technologies

Deseja construir o futuro da web? Estamos contratando

Siga a Parity no Twitter

PARITY

TECHNOLOGIES

SOLUTIONS

ABOUT

JOBS

BLOG

TWITTER

GITHUB

Artigo escrito por Thibaut Sardan em 26 de julho de 2018 na Parity Fether e traduzido para o português por Rafael Ojeda

Você pode encontrar o texto original aqui.

Latest comments (0)