À medida que a rede Ethereum continua a evoluir e a amadurecer, o conceito de diferentes tipos de nós torna-se cada vez mais importante para entender. No entanto, a realidade é que a maioria dos utilizadores não está disposta a fazer o esforço para executar um nó, apesar de os requisitos de hardware serem alcançáveis para muitos. No "fim de jogo" do desenvolvimento da Ethereum, é crucial que os utilizadores possam verificar a integridade do estado e a disponibilidade dos dados sem exigir conhecimentos técnicos extensivos ou recursos. Afinal, uma blockchain sem verificabilidade é apenas uma base de dados ineficiente.
Neste artigo, iremos abordar os três principais tipos de nós que moldarão o futuro da rede Ethereum: nós sem estado, nós com estado e nós completos/arquivo. Vamos examinar como os nós sem estado podem permitir a verificação sem confiança de novos blocos usando provas de conhecimento zero, como os nós com estado podem fornecer acesso rápido e sem confiança ao estado atual do Ethereum e como os nós completos/arquivo podem armazenar todo o histórico da cadeia desde o início. Ao entender os papéis e as compensações de cada tipo de nó, podemos trabalhar para um ecossistema Ethereum mais descentralizado, seguro e escalável.
Como já vimos hoje, a maioria dos usuários não está disposta a se esforçar muito para executar qualquer tipo de nó, mesmo que para o Bitcoin e Ethereum os requisitos de hardware sejam alcançáveis para a maioria dos usuários pesados dessas cadeias. Aqui, 'usuário pesado' é definido como alguém com um tamanho decente de ativos na cadeia, pense nisso como qualquer usuário em que o custo de executar um nó não seja um obstáculo.
A principal razão é provavelmente uma combinação do fato de que a grande maioria dos usuários não se importa em fazer isso, não está disposta a gastar algumas centenas de dólares no hardware ou não tem conhecimento técnico sobre como executá-lo. Mesmo que o Bitcoin e o Ethereum tenham avançado muito para tornar mais fácil. Ainda é uma tarefa bastante complexa para um usuário não técnico.
Uma Visão para um Ethereum Sem Estado
Sou da opinião de que no "Endgame" de cada blockchain, os utilizadores terão de verificar a integridade do estado e a disponibilidade dos dados sem que necessariamente tenham de saber o que são essas coisas. A boa notícia é que esta visão é totalmente alcançável com engenharia suficiente (tecnologia de conhecimento zero e um pouco deamostragem de disponibilidade de dados).
Neste final de jogo, basicamente todas as carteiras que valem a pena usar terão um nó sem estado que, para cada novo bloco adicionado à cadeia, pode consultar qualquer nó completo na camada p2p para o último cabeçalho de bloco e uma prova zk de que as alterações de estado do cabeçalho de bloco anterior foram executadas corretamente, solicitar algumas amostras de dados aleatórios de alguns pares para obter uma confiança próxima de 100% de que todos os dados (blobs e dados de bloco de execução) foram publicados e também uma prova zk que comprove que a rede chegou a um consenso e finalizou o bloco.
A largura de banda/computação para fazer isso é muito pequena e pode ser totalmente feita em um telefone (ou mesmo em um smartwatch como@drakefjustin""> @drakefjustin adora mencionar). Este tipo de nó mencionado acima seria classificado como um tipo de nó "sem estado", pois o nó pode verificar novos blocos sem precisar do estado atual localmente e, em vez disso, confiar em diferentes tipos de provas para verificar novos blocos.
Essas provas não precisam ser zk-provas. Teremos validação sem estado da execução muito antes de podermos fazer o que descrevi acima com zk-provas para execução. Na verdade, a execução sem estado pode ser feita hoje, mas é MUITO ineficiente com a estrutura atual de Árvore Merkle-Patricia, as provas de testemunha são muito grandes para serem práticas. (ver @peter_szilagyi's tweet).
Veja o tamanho do "testemunho" aqui. Este é o principal problema com a execução sem estado que ocorre com a atual árvore Merkle-Patricia, muitos dos blocos nesta captura de tela têm um tamanho bem inferior a 100kb e a prova necessária para permitir a verificação sem estado é muitas vezes mais de 50 vezes maior que o próprio bloco.
Estrutura MPT do Ethereum
No entanto, o Ethereum irá atualizar a sua estrutura de árvore de estado para algo diferente da estrutura atual de árvore Merkle-Patricia no futuro. Muitos de vocês podem ter ouvido falar das árvores Verkle que estão no mapa há anos (Se não, então leia o nosso artigo -Verkle Trees Para o Resto de Nós: Parte 1). Eles permitiriam a criação de clientes sem estado que são práticos, uma vez que a natureza da estrutura de árvore Verkle permite testemunhas/provas muito pequenas.
Árvore de Merkle vs. Árvores Verkle
Um dos principais problemas que as árvores Verkle têm é que não são seguras quanticamente, o que significa que, no máximo, serão uma solução temporária até que uma solução permanente para a estrutura de árvore de estado esteja madura e/ou eficiente o suficiente. A solução final provavelmente será uma árvore de hash binária comprovada por STARK e é muito possível que as árvores Verkle sejam ignoradas em favor de algum tipo de árvore de hash binária comprovada por STARK. (meme relevante de @VitalikButerin)
Uma opção muito interessante que um nó sem estado pode ter é a opção de não ser totalmente sem estado. Como exemplo, seria possível armazenar localmente o estado que você considera relevante para o seu caso de uso (assumindo que o seu cliente suporte tal funcionalidade).
Digamos que você tenha seus ativos distribuídos em alguns endereços, ativos e protocolos DeFi, você poderia, nesse caso, ter o estado de tudo o que é relevante para o seu caso de uso escrito localmente no disco, usando apenas uma quantidade trivialmente pequena de espaço em disco. Mesmo acompanhando todo o estado de vários protocolos DeFi grandes, seria apenas alguns gigabytes e considerando que basicamente todos os telefones mais recentes vêm com 128 GB ou mais de armazenamento, não apenas é possível, mas potencialmente prático para um usuário manter todo o estado que eles acham útil escrito no armazenamento flash de seu telefone móvel.
(Nota rápida sobre clientes leves: Em um mundo onde clientes sem estado podem verificar eficientemente transições de estado e consenso trivialmente, sinto que não haverá realmente um caso de uso para um cliente leve tradicional que depende de uma suposição de maioria honesta.)
Os nós stateful apenas têm o estado atual e muito recente, eles eliminam tudo o que é mais antigo que uma certa idade (consulte a tabela.eip-4444proposta). O estado atual é necessário para construir blocos localmente e a construção local de blocos é algo que nós sem estado são incapazes de fazer.
Nós de estado não devem ser confundidos com nós “completos”, já que um nó de estado não irá manter todo o histórico da cadeia, pois isso se tornaria realmente intensivo em dados no futuro. Um nó de estado é útil para qualquer usuário que queira acesso rápido e confiável ao estado atual do Ethereum, quer seja para consultar dados do estado, construir blocos ou utilizar este tipo de nó para staking.
Preservar a possibilidade de executar nós com estado em hardware de consumo é um objetivo muito importante que, na minha opinião, nós da comunidade Ethereum devemos preservar, mesmo quando os nós sem estado são muito leves e maduros. Uma das principais razões para isso é que todos os nós sem estado dependem de nós com estado para criar a prova necessária para a validação sem estado de novos blocos.
Ter acesso ao estado atual também é necessário para saber se uma transação que está na mempool é válida ou não e, portanto, é muito importante que tenhamos um conjunto muito descentralizado de nós com estado na rede que podem garantir garantias muito fortes de resistência à censura com algum tipo de design de lista de inclusão.
A boa notícia é que com a expiração do estado podemos tornar significativamente mais fácil executar um nó com estado, pois o estado com o qual ninguém interagiu por um tempo pode ser removido do disco do nó, qualquer pessoa que queira interagir com um estado expirado terá que trazer uma testemunha (essencialmente uma prova de merkle) para trazer o estado expirado de volta para o estado atual. Qualquer pessoa com acesso ao histórico da cadeia pode, de forma confiável, construir esses tipos de provas para trazer de volta o estado expirado. No momento em que este texto foi escrito, o estado do Ethereum está se aproximando de 300 GB e até que alguma forma de expiração do estado seja implementada, o tamanho do estado continuará a crescer em uma tendência de crescimento contínuo.
(Aquié um artigo muito bom de @paradigmque aprofunda o tópico do crescimento do estado e da expiração do estado)
Para os efeitos deste artigo, vou agrupar nós completos e arquivados, uma vez que um nó completo normal, com as informações que gravou localmente no disco, pode calcular todos os dados que um nó arquivado gravou no disco. A diferença é que um nó completo elimina o estado que já não é o estado mais recente. Não é possível, por exemplo, consultar "qual era o saldo de ETH da conta X no bloco Y há cerca de 5 anos" a partir de um nó completo normal, enquanto um nó arquivado responderia a essa consulta em milissegundos.
Guia Fácil sobre Ethereum Full Node Vs Archive Node por @0xZeeve
Dito isto, é teoricamente possível calcular a resposta a esta consulta a partir dos dados que um nó completo gravou no disco (todo o histórico da cadeia), mas poucos clientes de execução suportam esta funcionalidade. Acho irrazoável pensar que muitos utilizadores, mesmo os sofisticados, executarão um nó completo/arquivado daqui a 10 anos, para que esta seja uma opção razoável, teríamos que restringir o débito do L1 a níveis completamente irrazoáveis quando podemos obter uma maior capacidade de débito no L1 com compromissos mínimos. Quando a maioria dos utilizadores pode verificar facilmente novos blocos com uma prova zk, acho que é um compromisso que vale a pena procurar quando os benefícios são tão grandes.
Talvez possamos obter clientes de execução que sejam capazes de ser executados eficientemente em HDD e tornar prático armazenar até mesmo centenas de TB de estado arquivado de forma relativamente barata. Isso poderia permitir que os usuários que, por qualquer motivo, desejam arquivar todo o Ethereum, o façam. Eu sei que um dos objetivos do Erigon é permitir que um nó de arquivo completo seja executado em HDD.
No final, o futuro do Ethereum será moldado pelos nós que compõem sua rede. Ao abraçar nós sem estado como a opção mais realista para a maioria dos usuários, mas ainda sendo pragmáticos e percebendo o valor de uma forte presença de nós com estado, e nós completos/arquivados na rede, podemos criar um equilíbrio perfeito entre descentralização, segurança e escalabilidade que beneficie todos os usuários.
À medida que a rede Ethereum continua a evoluir e a amadurecer, o conceito de diferentes tipos de nós torna-se cada vez mais importante para entender. No entanto, a realidade é que a maioria dos utilizadores não está disposta a fazer o esforço para executar um nó, apesar de os requisitos de hardware serem alcançáveis para muitos. No "fim de jogo" do desenvolvimento da Ethereum, é crucial que os utilizadores possam verificar a integridade do estado e a disponibilidade dos dados sem exigir conhecimentos técnicos extensivos ou recursos. Afinal, uma blockchain sem verificabilidade é apenas uma base de dados ineficiente.
Neste artigo, iremos abordar os três principais tipos de nós que moldarão o futuro da rede Ethereum: nós sem estado, nós com estado e nós completos/arquivo. Vamos examinar como os nós sem estado podem permitir a verificação sem confiança de novos blocos usando provas de conhecimento zero, como os nós com estado podem fornecer acesso rápido e sem confiança ao estado atual do Ethereum e como os nós completos/arquivo podem armazenar todo o histórico da cadeia desde o início. Ao entender os papéis e as compensações de cada tipo de nó, podemos trabalhar para um ecossistema Ethereum mais descentralizado, seguro e escalável.
Como já vimos hoje, a maioria dos usuários não está disposta a se esforçar muito para executar qualquer tipo de nó, mesmo que para o Bitcoin e Ethereum os requisitos de hardware sejam alcançáveis para a maioria dos usuários pesados dessas cadeias. Aqui, 'usuário pesado' é definido como alguém com um tamanho decente de ativos na cadeia, pense nisso como qualquer usuário em que o custo de executar um nó não seja um obstáculo.
A principal razão é provavelmente uma combinação do fato de que a grande maioria dos usuários não se importa em fazer isso, não está disposta a gastar algumas centenas de dólares no hardware ou não tem conhecimento técnico sobre como executá-lo. Mesmo que o Bitcoin e o Ethereum tenham avançado muito para tornar mais fácil. Ainda é uma tarefa bastante complexa para um usuário não técnico.
Uma Visão para um Ethereum Sem Estado
Sou da opinião de que no "Endgame" de cada blockchain, os utilizadores terão de verificar a integridade do estado e a disponibilidade dos dados sem que necessariamente tenham de saber o que são essas coisas. A boa notícia é que esta visão é totalmente alcançável com engenharia suficiente (tecnologia de conhecimento zero e um pouco deamostragem de disponibilidade de dados).
Neste final de jogo, basicamente todas as carteiras que valem a pena usar terão um nó sem estado que, para cada novo bloco adicionado à cadeia, pode consultar qualquer nó completo na camada p2p para o último cabeçalho de bloco e uma prova zk de que as alterações de estado do cabeçalho de bloco anterior foram executadas corretamente, solicitar algumas amostras de dados aleatórios de alguns pares para obter uma confiança próxima de 100% de que todos os dados (blobs e dados de bloco de execução) foram publicados e também uma prova zk que comprove que a rede chegou a um consenso e finalizou o bloco.
A largura de banda/computação para fazer isso é muito pequena e pode ser totalmente feita em um telefone (ou mesmo em um smartwatch como@drakefjustin""> @drakefjustin adora mencionar). Este tipo de nó mencionado acima seria classificado como um tipo de nó "sem estado", pois o nó pode verificar novos blocos sem precisar do estado atual localmente e, em vez disso, confiar em diferentes tipos de provas para verificar novos blocos.
Essas provas não precisam ser zk-provas. Teremos validação sem estado da execução muito antes de podermos fazer o que descrevi acima com zk-provas para execução. Na verdade, a execução sem estado pode ser feita hoje, mas é MUITO ineficiente com a estrutura atual de Árvore Merkle-Patricia, as provas de testemunha são muito grandes para serem práticas. (ver @peter_szilagyi's tweet).
Veja o tamanho do "testemunho" aqui. Este é o principal problema com a execução sem estado que ocorre com a atual árvore Merkle-Patricia, muitos dos blocos nesta captura de tela têm um tamanho bem inferior a 100kb e a prova necessária para permitir a verificação sem estado é muitas vezes mais de 50 vezes maior que o próprio bloco.
Estrutura MPT do Ethereum
No entanto, o Ethereum irá atualizar a sua estrutura de árvore de estado para algo diferente da estrutura atual de árvore Merkle-Patricia no futuro. Muitos de vocês podem ter ouvido falar das árvores Verkle que estão no mapa há anos (Se não, então leia o nosso artigo -Verkle Trees Para o Resto de Nós: Parte 1). Eles permitiriam a criação de clientes sem estado que são práticos, uma vez que a natureza da estrutura de árvore Verkle permite testemunhas/provas muito pequenas.
Árvore de Merkle vs. Árvores Verkle
Um dos principais problemas que as árvores Verkle têm é que não são seguras quanticamente, o que significa que, no máximo, serão uma solução temporária até que uma solução permanente para a estrutura de árvore de estado esteja madura e/ou eficiente o suficiente. A solução final provavelmente será uma árvore de hash binária comprovada por STARK e é muito possível que as árvores Verkle sejam ignoradas em favor de algum tipo de árvore de hash binária comprovada por STARK. (meme relevante de @VitalikButerin)
Uma opção muito interessante que um nó sem estado pode ter é a opção de não ser totalmente sem estado. Como exemplo, seria possível armazenar localmente o estado que você considera relevante para o seu caso de uso (assumindo que o seu cliente suporte tal funcionalidade).
Digamos que você tenha seus ativos distribuídos em alguns endereços, ativos e protocolos DeFi, você poderia, nesse caso, ter o estado de tudo o que é relevante para o seu caso de uso escrito localmente no disco, usando apenas uma quantidade trivialmente pequena de espaço em disco. Mesmo acompanhando todo o estado de vários protocolos DeFi grandes, seria apenas alguns gigabytes e considerando que basicamente todos os telefones mais recentes vêm com 128 GB ou mais de armazenamento, não apenas é possível, mas potencialmente prático para um usuário manter todo o estado que eles acham útil escrito no armazenamento flash de seu telefone móvel.
(Nota rápida sobre clientes leves: Em um mundo onde clientes sem estado podem verificar eficientemente transições de estado e consenso trivialmente, sinto que não haverá realmente um caso de uso para um cliente leve tradicional que depende de uma suposição de maioria honesta.)
Os nós stateful apenas têm o estado atual e muito recente, eles eliminam tudo o que é mais antigo que uma certa idade (consulte a tabela.eip-4444proposta). O estado atual é necessário para construir blocos localmente e a construção local de blocos é algo que nós sem estado são incapazes de fazer.
Nós de estado não devem ser confundidos com nós “completos”, já que um nó de estado não irá manter todo o histórico da cadeia, pois isso se tornaria realmente intensivo em dados no futuro. Um nó de estado é útil para qualquer usuário que queira acesso rápido e confiável ao estado atual do Ethereum, quer seja para consultar dados do estado, construir blocos ou utilizar este tipo de nó para staking.
Preservar a possibilidade de executar nós com estado em hardware de consumo é um objetivo muito importante que, na minha opinião, nós da comunidade Ethereum devemos preservar, mesmo quando os nós sem estado são muito leves e maduros. Uma das principais razões para isso é que todos os nós sem estado dependem de nós com estado para criar a prova necessária para a validação sem estado de novos blocos.
Ter acesso ao estado atual também é necessário para saber se uma transação que está na mempool é válida ou não e, portanto, é muito importante que tenhamos um conjunto muito descentralizado de nós com estado na rede que podem garantir garantias muito fortes de resistência à censura com algum tipo de design de lista de inclusão.
A boa notícia é que com a expiração do estado podemos tornar significativamente mais fácil executar um nó com estado, pois o estado com o qual ninguém interagiu por um tempo pode ser removido do disco do nó, qualquer pessoa que queira interagir com um estado expirado terá que trazer uma testemunha (essencialmente uma prova de merkle) para trazer o estado expirado de volta para o estado atual. Qualquer pessoa com acesso ao histórico da cadeia pode, de forma confiável, construir esses tipos de provas para trazer de volta o estado expirado. No momento em que este texto foi escrito, o estado do Ethereum está se aproximando de 300 GB e até que alguma forma de expiração do estado seja implementada, o tamanho do estado continuará a crescer em uma tendência de crescimento contínuo.
(Aquié um artigo muito bom de @paradigmque aprofunda o tópico do crescimento do estado e da expiração do estado)
Para os efeitos deste artigo, vou agrupar nós completos e arquivados, uma vez que um nó completo normal, com as informações que gravou localmente no disco, pode calcular todos os dados que um nó arquivado gravou no disco. A diferença é que um nó completo elimina o estado que já não é o estado mais recente. Não é possível, por exemplo, consultar "qual era o saldo de ETH da conta X no bloco Y há cerca de 5 anos" a partir de um nó completo normal, enquanto um nó arquivado responderia a essa consulta em milissegundos.
Guia Fácil sobre Ethereum Full Node Vs Archive Node por @0xZeeve
Dito isto, é teoricamente possível calcular a resposta a esta consulta a partir dos dados que um nó completo gravou no disco (todo o histórico da cadeia), mas poucos clientes de execução suportam esta funcionalidade. Acho irrazoável pensar que muitos utilizadores, mesmo os sofisticados, executarão um nó completo/arquivado daqui a 10 anos, para que esta seja uma opção razoável, teríamos que restringir o débito do L1 a níveis completamente irrazoáveis quando podemos obter uma maior capacidade de débito no L1 com compromissos mínimos. Quando a maioria dos utilizadores pode verificar facilmente novos blocos com uma prova zk, acho que é um compromisso que vale a pena procurar quando os benefícios são tão grandes.
Talvez possamos obter clientes de execução que sejam capazes de ser executados eficientemente em HDD e tornar prático armazenar até mesmo centenas de TB de estado arquivado de forma relativamente barata. Isso poderia permitir que os usuários que, por qualquer motivo, desejam arquivar todo o Ethereum, o façam. Eu sei que um dos objetivos do Erigon é permitir que um nó de arquivo completo seja executado em HDD.
No final, o futuro do Ethereum será moldado pelos nós que compõem sua rede. Ao abraçar nós sem estado como a opção mais realista para a maioria dos usuários, mas ainda sendo pragmáticos e percebendo o valor de uma forte presença de nós com estado, e nós completos/arquivados na rede, podemos criar um equilíbrio perfeito entre descentralização, segurança e escalabilidade que beneficie todos os usuários.