Blockchain (substantivo): Uma máquina de coordenação que permite que participantes de todo o mundo colaborem ao longo de um conjunto de regras comumente acordadas sem a necessidade de qualquer terceiro facilitador.
Os computadores são projetados para fazer três coisas: armazenar dados, calcular e se comunicar entre si e com humanos. As blockchains acrescentam uma quarta dimensão: garantias adicionais de que essas três coisas (armazenamento, cálculo e comunicação) aconteçam de maneira acordada. Essas garantias possibilitam a cooperação entre estranhos sem a necessidade de uma terceira parte confiável para facilitá-la (descentralizada).
Essas garantias adicionais podem ser econômicas (teoria dos jogos de confiança e incentivos/desincentivos) ou criptográficas (matemática de confiança), mas a maioria das aplicações utiliza uma combinação dos dois - criptoecônomico. Isso atua como um contraste marcante com o status quo atual dos sistemas em grande parte baseados em reputação.
Embora a Web3 seja frequentemente descrita como "ler, escrever, possuir", acreditamos que uma melhor noção para a terceira iteração da internet seja "ler, escrever, verificar", dado que o principal benefício das blockchains públicas é computação garantidae fácil verificação de que essas garantias foram cumpridas. A propriedade pode ser um subconjunto de computação garantida se construirmos artefatos digitais que possam ser comprados, vendidos e controlados. No entanto, muitos casos de uso de blockchains se beneficiam da computação garantida, mas não envolvem diretamente a propriedade. Por exemplo, se sua saúde em um jogo totalmente on-chain é 77/100 - você possui essa saúde ou é apenas aplicável on-chain de acordo com regras comumente acordadas? Argumentaríamos que é o último, mas Chris Dixonpode discordar.
Web3 = Ler, Escrever, Verificar
As blockchains oferecem muito para se animar, mas o modelo descentralizado também adiciona sobrecarga e ineficiência por meio de funções adicionais como mensagens P2P e consenso. Além disso, a maioria das blockchains ainda valida transições de estado corretas por meio de reexecução, significando que cada nó na rede tem que reexecutar transações para verificar a correção da transição de estado proposta. Isso é desperdiçador e em forte contraste com o modelo centralizado onde apenas uma entidade executa. Enquanto um sistema descentralizado sempre contém alguma sobrecarga e replicação, o objetivo deve ser se aproximar assintoticamente de um benchmark centralizado em termos de eficiência.
Mesmo que a infraestrutura subjacente tenha melhorado significativamente na última década, ainda há muito trabalho a ser feito antes que as blockchains possam lidar com a escala do nível da internet. Vemos compensações ao longo de dois eixos principais - expressividade e dificuldade - e acreditamos que a modularidade permite experimentação mais rápida ao longo da fronteira de compensação, enquanto o ZK a expande:
A modularidade é o grau em que os componentes de um sistema podem ser separados e recombinados. Através de ciclos de feedback mais rápidos e barreiras mais baixas à entrada com menos capital necessário (tanto econômico quanto humano) - a modularidade permite experimentação e especialização mais rápidas. A questão da modular vs integrado não é binária, mas sim um espectro para experimentar e descobrir quais partes fazem sentido para desacoplar e quais não fazem.
Zero Knowledge Proofs, ou ZKPs, por outro lado, permitem que uma parte (o provador) prove a outra parte (o verificador) que eles sabem que algo é verdadeiro, sem revelar nenhuma informação adicional além de sua validade. Isso pode aumentar a escalabilidade e eficiência evitando a reexecução (passando de um modelo de todos executam para verificar, para um modelo de um executa, todos verificam), bem como a expressividade, permitindo a privacidade (com limitações). ZKPs também melhoram a dificuldade das garantias substituindo garantias criptoeconômicas mais fracas por garantias mais fortes, o que é representado empurrando a fronteira de compensação para fora (fazendo referência ao gráfico acima).
Acreditamos que tanto a modularidade quanto a "ZKficação de tudo" são tendências que continuarão a acelerar. Embora ambos forneçam lentes interessantes através das quais explorar o espaço individualmente - estamos particularmente interessados na interseção dos dois. As duas principais questões em que estamos interessados são:
No entanto, antes de podermos entrar nessas perguntas, precisamos de uma visão atualizada de como a pilha modular se parece em 2024.
A imagem frequentemente usada da pilha modular com quatro componentes (execução, publicação de dados, consenso, liquidação) é útil como um modelo mental simples, mas não a consideramos mais uma representação adequada, dada a evolução do espaço modular. A desagregação adicional leva a novos componentes que antes eram considerados parte de um todo maior, ao mesmo tempo que cria novas dependências e a necessidade de interoperabilidade segura entre os diferentes componentes (mais sobre isso mais adiante). Dado o ritmo acelerado com que o espaço está avançando, pode ser difícil se manter atualizado sobre todas as inovações em diferentes níveis da pilha.
Tentativas anteriores de explorar o stack web3 incluem as feitas por Kyle Samani (Multicoin) - originalmente publicado em 2018e atualizado em2019. Ele abrange tudo, desde o acesso à internet descentralizado de última milha (como Hélio) para a gestão de chaves do usuário final. Embora os princípios por trás disso possam ser reciclados, algumas peças, como a prova e verificação, estão completamente ausentes.
Levando isso em consideração, tentamos criar uma representação atualizada de como a pilha modular se parece em 2024, expandindo a pilha modular existente em quatro partes. Ela é dividida por componente em vez de funcionalidade, o que significa que a rede P2P, por exemplo, está incluída no consenso em vez de ser separada como um componente separado - principalmente porque é difícil construir um protocolo em torno disso.
Agora que temos uma visão atualizada da pilha modular, podemos começar a olhar para a questão real, ou seja, quais partes da pilha o ZK já penetrou e quais problemas em aberto poderiam ser resolvidos introduzindo o ZK (evitando reexecução ou recursos de privacidade). Abaixo está um resumo de nossas descobertas, antes de nos aprofundarmos em cada componente separadamente.
Os usuários atuais de blockchains precisam navegar por várias cadeias, carteiras e interfaces, o que é complicado e atua como um obstáculo para uma adoção mais ampla. A abstração da operação do usuário é um termo genérico para qualquer tentativa de abstrair essa complexidade e permitir que os usuários interajam com apenas uma interface (por exemplo, um aplicativo específico ou uma carteira), com toda a complexidade ocorrendo nos bastidores. Alguns exemplos de abstrações de nível de infraestrutura incluem:
As transações precisam ser ordenadas antes de serem adicionadas a um bloco, o que pode ser feito de várias maneiras: ordenando por lucratividade para o proponente (transações de maior pagamento primeiro), na ordem em que foram enviadas (primeiro a entrar, primeiro a sair), dando prioridade a transações de memórias privadas, etc.
Outra questão é quem tem permissão para ordenar as transações. Em um mundo modular, várias partes diferentes podem fazer isso, incluindo o sequenciador de rollup (centralizado ou descentralizado), sequenciamento L1 (com base em rollups) e uma rede de sequenciamento compartilhada (rede descentralizada de sequenciadores usada por vários rollups). Todos esses têmdiferentes pressupostos de confiança e capacidades de escalabilidade. Na prática, a ordenação real de transações e o agrupamento delas em um bloco também podem ser feitos fora do protocolo por atores especializados (construtores de blocos).
A camada de execução contém a lógica de como o estado é atualizado e é onde os contratos inteligentes são executados. Além de retornar uma saída da computação, os zkVMs também permitem comprovar que as transições de estado foram feitas corretamente. Isso permite que outros participantes da rede verifiquem a execução correta apenas verificando a prova, em vez de terem que reexecutar transações.
Além da verificação mais rápida e eficiente, outro benefício da execução comprovável é possibilitar computações mais complexas, uma vez que você não enfrenta os problemas típicos de gás e recursos limitados on-chain com computação off-chain. Isso abre as portas para novas aplicações inteiramente novas que são computacionalmente mais intensas para serem executadas em blockchains e aproveitam a computação garantida.
Consulta de dados, ou leitura de dados no blockchain, é uma parte essencial da maioria das aplicações. Enquanto grande parte das discussões e esforços nos últimos anos têm se concentrado em escalar gravações (execução) - escalar leituras é ainda mais importante devido ao desequilíbrio entre os dois (particularmente em um ambiente descentralizado). A relação entre leitura/escrita difere entre blockchains, mas um ponto de dados é Estimativa da Sigque >96% de todas as chamadas para nós na Solana foram chamadas de leitura (com base em 2 anos de dados empíricos) - uma proporção de leitura/escrita de 24:1.
Escalonar leituras inclui tanto obter mais desempenho (mais leituras por segundo) com clientes validadores dedicados (como Sig na Solana) quanto permitir consultas mais complexas (combinando leituras com cálculos), por exemplo, com a ajuda de co-processadores.
Outro ângulo é descentralizar os métodos de consulta de dados. Hoje, a maioria das solicitações de consulta de dados em blockchains são facilitadas por terceiros confiáveis (baseados em reputação), como nós RPC (Infura) e indexadores (Duna). Exemplos de opções mais descentralizadas incluem O Gráficoe operadores à prova de armazenamento (também verificáveis). Existem também várias tentativas de criar uma rede RPC descentralizada, como Infura DINouRede Lava(além do RPC descentralizado, Lava pretende oferecer serviços adicionais de acesso a dados posteriormente).
Com cada vez mais aplicações incorporando ZKPs, a prova e verificação estão rapidamente se tornando uma parte essencial do stack modular. No entanto, hoje, a maioria da infraestrutura de prova ainda é permissionada e centralizada, com muitas aplicações dependendo de um único provador.
Embora a solução centralizada seja menos complexa, descentralizar a arquitetura de prova e dividir em um componente separado na pilha modular traz vários benefícios. Um benefício chave vem na forma de garantias de vivacidade que são cruciais para aplicações que dependem da geração frequente de provas. Os usuários também se beneficiam de uma resistência maior à censura e de taxas mais baixas impulsionadas pela competição e compartilhamento da carga de trabalho entre vários provadores.
Acreditamos que as redes de provadores de propósito geral (muitos aplicativos, muitos provadores) são superiores às redes de provadores de aplicação única (um aplicativo, muitos provadores) devido à maior utilização do hardware existente e menor complexidade para os provadores. Uma maior utilização também beneficia os usuários em termos de taxas mais baixas, uma vez que os provadores não precisam ser compensados pela redundância através de taxas mais altas (ainda é necessário cobrir custos fixos).
Figment Capitalforneceu uma boa visão geral do estado atual da cadeia de suprimentos de prova, que consiste tanto na geração de prova quanto na agregação de prova (que por si só é geração de prova, mas apenas tomando duas provas como entrada em vez de rastreamento de execução).
Origem: Figment Capital
Origem: Capital da Figment
A publicação de dados (DP) garante que os dados estejam disponíveis e facilmente recuperáveis por um curto período (1-2 semanas). Isso é crucial tanto para a segurança (rollups otimistas requerem dados de entrada para verificar a execução correta por meio de reexecução durante o período de desafio, 1-2 semanas) quanto para a vivacidade (mesmo que um sistema utilize provas de validade, os dados de transação subjacentes podem ser necessários para comprovar a propriedade de ativos para saídas de emergência, transações forçadas ou para verificar se as entradas correspondem às saídas). Os usuários (como zk-bridges e rollups) enfrentam um pagamento único, que cobre o custo de armazenar transações e estados por um curto período até que sejam podados. As redes de publicação de dados não são projetadas para armazenamento de dados em longo prazo (em vez disso, consulte a próxima seção para possíveis soluções).
Celestiafoi a primeira camada DP alternativa a lançar sua mainnet (31 de outubro), mas em breve haverá muitas alternativas para escolher como Disponível, EigenDA, e Perto de DAsão todos esperados para serem lançados durante 2024. Além disso, EIP 4844 do Ethereumatualizar a publicação de dados dimensionados na Ethereum (além de criar um mercado de taxas separado para armazenamento de blobs) e preparar o terreno para o completo dank-sharding. DP também está se expandindo para outros ecossistemas - um exemplo sendo@nubit_org/riema-secures-angel-investment-for-launching-the-first-bitcoin-native-data-availability-layer-49ccf0487380">Nubit que tem como objetivo construir o DP nativo no Bitcoin.
Muitas soluções de DP também oferecem serviços além da mera publicação de dados, incluindo segurança compartilhada para rollups soberanos (como CelestiaeDisponível) ou interoperabilidade mais suave entre rollups (como Avail’sNexus). Também existem projetos (DomiconeZero Gravity) que oferecem tanto a publicação de dados quanto o armazenamento de estado a longo prazo, o que é uma proposta convincente. Este é também um exemplo de reagrupamento de dois componentes na pilha modular, algo que provavelmente veremos mais no futuro (experimentação tanto com desagregação adicional quanto com reagrupamento).
Armazenar dados históricos é importante principalmente para fins de sincronização e atendimento a solicitações de dados. No entanto, não é viável para cada nó completo armazenar todos os dados e a maioria dos nós completos poda dados antigos para manter os requisitos de hardware razoáveis. Em vez disso, contamos com partes especializadas (nós de arquivamento e indexadores) para armazenar todos os dados históricos e disponibilizá-los a pedido dos usuários.
Também existem fornecedores de armazenamento descentralizado, como FilecoinouArweave, que oferecem soluções de armazenamento descentralizado de longo prazo a um preço razoável. Embora a maioria das blockchains não tenha um processo formal de armazenamento de arquivos (simplesmente confiam em alguém para armazená-los), os protocolos de armazenamento descentralizado são bons candidatos para armazenar histórico e adicionar alguma redundância (pelo menos X nós armazenam os dados) através dos incentivos integrados à rede de armazenamento.
Dado que as blockchains são sistemas distribuídos P2P, não há uma terceira parte confiável que determine a verdade global. Em vez disso, os nós da rede concordam com qual é a verdade atual (qual bloco é o correto) por meio de um mecanismo chamado consenso. Métodos de consenso baseados em PoS podem ser categorizados como baseados em BFT (onde o quórum tolerante a falhas bizantinas de validadores decide o estado final) ou baseados em cadeia (onde o estado final é decidido retrospectivamente pela regra de escolha de bifurcação). Embora a maioria das implementações de consenso de PoS existentes sejam baseadas em BFT, Cardanoé um exemplo de implementação da cadeia mais longa. Também há um crescente interesse em mecanismos de consenso baseados em DAG, como o Narwhal-Bullshark, que é implementado em algumas variações em Aleo, Aptos e Sui.
O consenso é uma parte crucial de muitos componentes diferentes da pilha modular, incluindo sequenciador compartilhado, provas descentralizadas e redes de publicação de dados baseadas em blockchain (não baseadas em comitê, como o EigenDA).
A liquidação é semelhante ao mais alto tribunal de justiça - a fonte final da verdade onde a correção das transições de estado é verificada e as disputas são resolvidas. Uma transação é considerada final no momento em que é irreversível (ou no caso da finalidade probabilística - no momento em que seria suficientemente difícil de reverter). O tempo até a finalização depende da camada de liquidação subjacente usada, que por sua vez depende da regra de finalização específica usada e do tempo de bloco.
A finalidade lenta é particularmente um problema na comunicação cross-rollup, onde os rollups precisam esperar pela confirmação do Ethereum antes de serem capazes de aprovar uma transação (7 dias para rollups otimistas, 12 minutos e tempo de prova para rollups de validade). Isso leva a uma experiência ruim do usuário. Há vários esforços para resolver esse problema usando pré-confirmações com um certo nível de segurança. Exemplos incluem soluções específicas do ecossistema (Camada AggLayer do PolygonouzkSync HyperBridge) e soluções de propósito geral como Camada de Finalidade Rápida do Nearque tem como objetivo conectar vários ecossistemas rollup diferentes, aproveitando a segurança econômica da EigenLayer. Também há a opção depontes de rollup nativas alavancando EigenLayerpara confirmações suaves para evitar esperar pela plena finalidade.
A segurança está relacionada à solidez das garantias e é uma parte crucial da proposta de valor das blockchains. No entanto, a segurança criptoecônica inicial é difícil - aumentando as barreiras de entrada e atuando como atrito para a inovação para aquelas aplicações que necessitam dela (vários middleware e L1s alternativos).
A ideia de segurança compartilhada é usar a segurança econômica existente das redes PoS e sujeitá-la a risco adicional de slashing (condições de punição), em vez de cada componente tentar inicializar o seu próprio. Houve algumas tentativas anteriores de fazer o mesmo em redes PoW (mineração combinada.)), mas incentivos desalinhados tornaram mais fácil para os mineradores conluio e explorar um protocolo (mais difícil punir comportamentos ruins, já que o trabalho acontece no mundo físico, ou seja, mineração usando poder computacional). A segurança de PoS é mais flexível para ser usada por outros protocolos, pois possui incentivos positivos (rendimento de staking) e negativos (slashing).
Protocolos construindo em torno da premissa de segurança compartilhada incluem:
A interoperabilidade segura e eficiente continua a ser uma grande questão em um mundo multi-cadeia, exemplificada pela $2.8bn perdidos em hacks de ponte. Em sistemas modulares, a interoperabilidade se torna ainda mais importante - Você não está apenas se comunicando entre outras cadeias, mas blockchains modulares também requerem que diferentes componentes se comuniquem entre si (como a camada DA e de liquidação). Portanto, não é mais viável simplesmente executar um nó completo ou verificar uma única prova de consenso como nos blockchains integrados. Isso adiciona mais peças em movimento à equação.
A interoperabilidade inclui tanto a ponte de tokens quanto a passagem de mensagens mais geral entre blockchains. Existem várias opções diferentes que fazem diferentes compensações em termos de segurança, latência e custo. Otimizar os três é muito difícil, o que geralmente requer sacrificar pelo menos um. Além disso, diferentes padrões entre as cadeias tornam as implementações em novas cadeias mais difíceis.
Embora ainda falte uma definição clara dos diferentes tipos de clientes leves (ou nós), esta postagem por Dino(co-fundador da Fluent & Modular Media) faz uma boa introdução. A maioria dos clientes leves hoje só verifica o consenso, mas idealmente teríamos clientes leves que também podem verificar a execução e DA para reduzir as suposições de confiança. Isso permitiria chegar perto da segurança de um nó completo, sem os altos requisitos de hardware.
Supondo que possamos alcançar um estado em que a geração de Provas de Conhecimento Zero (ZKPs) se torne muito rápida (quase à velocidade da luz) e incrivelmente barata (quase gratuita), como seria o resultado final? Em outras palavras, quando as ZKPs tiverem dominado completamente a pilha modular?
Em termos gerais, acreditamos que duas coisas seriam verdadeiras neste estado do mundo:
Uma terceira condição seria em torno da privacidade (ou gerenciamento de fluxo de informações), mas é mais complicado. ZKPs podem ser usados para algumas aplicações de privacidade com comprovação do lado do cliente, que é o que plataformas como Aleo, Aztec ou Polygon Miden estão construindo, mas alcançar a privacidade em grande escala para todos os casos de uso potenciais depende do progresso do MPC e FHE também - um possível tema para uma futura postagem no blog.
E se estivermos errados, e o futuro não for nem modular nem ZK'fied? Alguns riscos potenciais para a nossa tese incluem:
Tanto os usuários quanto os desenvolvedores sofrem com o número cada vez maior de cadeias. Os usuários precisam gerenciar fundos em várias cadeias (e potencialmente várias carteiras). Os desenvolvedores de aplicativos, por outro lado, têm menos estabilidade e previsibilidade, dado o quanto o espaço ainda está evoluindo, tornando mais difícil decidir em qual cadeia construir. Eles também precisam pensar sobre a fragmentação do estado e da liquidez. Isso é particularmente verdadeiro agora, pois ainda estamos experimentando ao longo da fronteira de quais componentes fazem sentido para desacoplar e quais serão recoplados. Acreditamos que a abstração da operação do usuário, bem como soluções de interoperabilidade seguras e eficientes, são partes cruciais para resolver esse problema.
Não há como contornar o fato de que a geração de provas leva muito tempo e o custo tanto da prova quanto da verificação ainda é muito alto hoje. Soluções concorrentes como ambientes de execução confiáveis/TEEs (privacidade) ou soluções de segurança otimistas/criptoeconômicas (custo) ainda fazem mais sentido para muitas aplicações hoje.
Muito trabalho, no entanto, está sendo feito em relação à otimização de software e aceleração de hardware para ZKPs. A agregação de provas ajudará a reduzir ainda mais os custos de verificação, espalhando o custo por várias partes diferentes (custo inferior/usuário). Também existe a possibilidade de adaptar a camada base para ser mais otimizada para a verificação de ZKPs. Um desafio em relação à aceleração de hardware para ZKPs é o rápido desenvolvimento de sistemas de prova. Isso torna difícil criar hardware especializado (ASICs), já que correm o risco de se tornar obsoletos rapidamente se/quando os padrões dos sistemas de prova subjacentes evoluem.
Ingonyamatentou criar alguns benchmarks para o desempenho do provador por meio de uma métrica comparável chamada pontuação ZK. É baseado no custo da execução da computação (OPEX) e rastreia MMOPS/WATT, onde MMOPS significa operações de multiplicação modular por segundo. Para mais leituras sobre o assunto, recomendamos blogs por @Cysic/BJQcpVbXn?ref=blog.succinct.xyz">Cysic and @ingonyama/revisiting-paradigms-hardware-acceleration-for-zero-knowledge-proofs-5dffacdc24b4">Ingonyama, assim como esta palestra de Wei Dai.
ZKPs só podem ser usados para alcançar privacidade para estado pessoal, não para estado compartilhado onde várias partes precisam computar em dados criptografados (como um Uniswap privado). FHE e MPC também são necessários para privacidade total, mas esses precisam melhorar muitas ordens de magnitude em termos de custo e desempenho antes de serem opções viáveis para uso em larga escala. Dito isso, ZKPs ainda são úteis para certos casos de uso que não exigem um estado compartilhado privado, como soluções de identidade ou pagamentos. Nem todos os problemas precisam ser resolvidos com a mesma ferramenta.
Então, onde isso nos deixa? Enquanto estamos progredindo a cada dia, muito trabalho ainda resta. As questões mais urgentes a serem resolvidas são como o valor e a informação podem fluir com segurança entre diferentes componentes modulares sem sacrificar velocidade ou custo, bem como abstraindo tudo isso do consumidor final para que eles não precisem se preocupar com a ponte entre diferentes cadeias, trocar carteiras, etc.
Embora ainda estejamos muito na fase de experimentação, as coisas devem se estabilizar ao longo do tempo, à medida que descobrimos onde no espectro estão os compromissos ideais para cada caso de uso. Isso, por sua vez, permitirá que padrões (informais ou formais) surjam e ofereçam mais estabilidade aos construtores em cima destas cadeias.
Hoje em dia, ainda existem muitos casos de uso que recorrem à segurança cripto-econômica devido ao custo e à complexidade de gerar ZKPs e alguns que exigem uma combinação dos dois. No entanto, essa participação deve diminuir com o tempo à medida que projetamos sistemas de prova mais eficientes e hardware especializado para reduzir o custo e a latência da prova e verificação. Com cada redução exponencial no custo e na velocidade, novos casos de uso são desbloqueados.
Embora este artigo tenha se concentrado especificamente em ZKPs, também estamos cada vez mais interessados em como as soluções de criptografia modernas (ZKPs, MPC, FHE e TEE) acabarão interagindo juntas - algo que já estamos vendo.
Obrigado por ler!
Blockchain (substantivo): Uma máquina de coordenação que permite que participantes de todo o mundo colaborem ao longo de um conjunto de regras comumente acordadas sem a necessidade de qualquer terceiro facilitador.
Os computadores são projetados para fazer três coisas: armazenar dados, calcular e se comunicar entre si e com humanos. As blockchains acrescentam uma quarta dimensão: garantias adicionais de que essas três coisas (armazenamento, cálculo e comunicação) aconteçam de maneira acordada. Essas garantias possibilitam a cooperação entre estranhos sem a necessidade de uma terceira parte confiável para facilitá-la (descentralizada).
Essas garantias adicionais podem ser econômicas (teoria dos jogos de confiança e incentivos/desincentivos) ou criptográficas (matemática de confiança), mas a maioria das aplicações utiliza uma combinação dos dois - criptoecônomico. Isso atua como um contraste marcante com o status quo atual dos sistemas em grande parte baseados em reputação.
Embora a Web3 seja frequentemente descrita como "ler, escrever, possuir", acreditamos que uma melhor noção para a terceira iteração da internet seja "ler, escrever, verificar", dado que o principal benefício das blockchains públicas é computação garantidae fácil verificação de que essas garantias foram cumpridas. A propriedade pode ser um subconjunto de computação garantida se construirmos artefatos digitais que possam ser comprados, vendidos e controlados. No entanto, muitos casos de uso de blockchains se beneficiam da computação garantida, mas não envolvem diretamente a propriedade. Por exemplo, se sua saúde em um jogo totalmente on-chain é 77/100 - você possui essa saúde ou é apenas aplicável on-chain de acordo com regras comumente acordadas? Argumentaríamos que é o último, mas Chris Dixonpode discordar.
Web3 = Ler, Escrever, Verificar
As blockchains oferecem muito para se animar, mas o modelo descentralizado também adiciona sobrecarga e ineficiência por meio de funções adicionais como mensagens P2P e consenso. Além disso, a maioria das blockchains ainda valida transições de estado corretas por meio de reexecução, significando que cada nó na rede tem que reexecutar transações para verificar a correção da transição de estado proposta. Isso é desperdiçador e em forte contraste com o modelo centralizado onde apenas uma entidade executa. Enquanto um sistema descentralizado sempre contém alguma sobrecarga e replicação, o objetivo deve ser se aproximar assintoticamente de um benchmark centralizado em termos de eficiência.
Mesmo que a infraestrutura subjacente tenha melhorado significativamente na última década, ainda há muito trabalho a ser feito antes que as blockchains possam lidar com a escala do nível da internet. Vemos compensações ao longo de dois eixos principais - expressividade e dificuldade - e acreditamos que a modularidade permite experimentação mais rápida ao longo da fronteira de compensação, enquanto o ZK a expande:
A modularidade é o grau em que os componentes de um sistema podem ser separados e recombinados. Através de ciclos de feedback mais rápidos e barreiras mais baixas à entrada com menos capital necessário (tanto econômico quanto humano) - a modularidade permite experimentação e especialização mais rápidas. A questão da modular vs integrado não é binária, mas sim um espectro para experimentar e descobrir quais partes fazem sentido para desacoplar e quais não fazem.
Zero Knowledge Proofs, ou ZKPs, por outro lado, permitem que uma parte (o provador) prove a outra parte (o verificador) que eles sabem que algo é verdadeiro, sem revelar nenhuma informação adicional além de sua validade. Isso pode aumentar a escalabilidade e eficiência evitando a reexecução (passando de um modelo de todos executam para verificar, para um modelo de um executa, todos verificam), bem como a expressividade, permitindo a privacidade (com limitações). ZKPs também melhoram a dificuldade das garantias substituindo garantias criptoeconômicas mais fracas por garantias mais fortes, o que é representado empurrando a fronteira de compensação para fora (fazendo referência ao gráfico acima).
Acreditamos que tanto a modularidade quanto a "ZKficação de tudo" são tendências que continuarão a acelerar. Embora ambos forneçam lentes interessantes através das quais explorar o espaço individualmente - estamos particularmente interessados na interseção dos dois. As duas principais questões em que estamos interessados são:
No entanto, antes de podermos entrar nessas perguntas, precisamos de uma visão atualizada de como a pilha modular se parece em 2024.
A imagem frequentemente usada da pilha modular com quatro componentes (execução, publicação de dados, consenso, liquidação) é útil como um modelo mental simples, mas não a consideramos mais uma representação adequada, dada a evolução do espaço modular. A desagregação adicional leva a novos componentes que antes eram considerados parte de um todo maior, ao mesmo tempo que cria novas dependências e a necessidade de interoperabilidade segura entre os diferentes componentes (mais sobre isso mais adiante). Dado o ritmo acelerado com que o espaço está avançando, pode ser difícil se manter atualizado sobre todas as inovações em diferentes níveis da pilha.
Tentativas anteriores de explorar o stack web3 incluem as feitas por Kyle Samani (Multicoin) - originalmente publicado em 2018e atualizado em2019. Ele abrange tudo, desde o acesso à internet descentralizado de última milha (como Hélio) para a gestão de chaves do usuário final. Embora os princípios por trás disso possam ser reciclados, algumas peças, como a prova e verificação, estão completamente ausentes.
Levando isso em consideração, tentamos criar uma representação atualizada de como a pilha modular se parece em 2024, expandindo a pilha modular existente em quatro partes. Ela é dividida por componente em vez de funcionalidade, o que significa que a rede P2P, por exemplo, está incluída no consenso em vez de ser separada como um componente separado - principalmente porque é difícil construir um protocolo em torno disso.
Agora que temos uma visão atualizada da pilha modular, podemos começar a olhar para a questão real, ou seja, quais partes da pilha o ZK já penetrou e quais problemas em aberto poderiam ser resolvidos introduzindo o ZK (evitando reexecução ou recursos de privacidade). Abaixo está um resumo de nossas descobertas, antes de nos aprofundarmos em cada componente separadamente.
Os usuários atuais de blockchains precisam navegar por várias cadeias, carteiras e interfaces, o que é complicado e atua como um obstáculo para uma adoção mais ampla. A abstração da operação do usuário é um termo genérico para qualquer tentativa de abstrair essa complexidade e permitir que os usuários interajam com apenas uma interface (por exemplo, um aplicativo específico ou uma carteira), com toda a complexidade ocorrendo nos bastidores. Alguns exemplos de abstrações de nível de infraestrutura incluem:
As transações precisam ser ordenadas antes de serem adicionadas a um bloco, o que pode ser feito de várias maneiras: ordenando por lucratividade para o proponente (transações de maior pagamento primeiro), na ordem em que foram enviadas (primeiro a entrar, primeiro a sair), dando prioridade a transações de memórias privadas, etc.
Outra questão é quem tem permissão para ordenar as transações. Em um mundo modular, várias partes diferentes podem fazer isso, incluindo o sequenciador de rollup (centralizado ou descentralizado), sequenciamento L1 (com base em rollups) e uma rede de sequenciamento compartilhada (rede descentralizada de sequenciadores usada por vários rollups). Todos esses têmdiferentes pressupostos de confiança e capacidades de escalabilidade. Na prática, a ordenação real de transações e o agrupamento delas em um bloco também podem ser feitos fora do protocolo por atores especializados (construtores de blocos).
A camada de execução contém a lógica de como o estado é atualizado e é onde os contratos inteligentes são executados. Além de retornar uma saída da computação, os zkVMs também permitem comprovar que as transições de estado foram feitas corretamente. Isso permite que outros participantes da rede verifiquem a execução correta apenas verificando a prova, em vez de terem que reexecutar transações.
Além da verificação mais rápida e eficiente, outro benefício da execução comprovável é possibilitar computações mais complexas, uma vez que você não enfrenta os problemas típicos de gás e recursos limitados on-chain com computação off-chain. Isso abre as portas para novas aplicações inteiramente novas que são computacionalmente mais intensas para serem executadas em blockchains e aproveitam a computação garantida.
Consulta de dados, ou leitura de dados no blockchain, é uma parte essencial da maioria das aplicações. Enquanto grande parte das discussões e esforços nos últimos anos têm se concentrado em escalar gravações (execução) - escalar leituras é ainda mais importante devido ao desequilíbrio entre os dois (particularmente em um ambiente descentralizado). A relação entre leitura/escrita difere entre blockchains, mas um ponto de dados é Estimativa da Sigque >96% de todas as chamadas para nós na Solana foram chamadas de leitura (com base em 2 anos de dados empíricos) - uma proporção de leitura/escrita de 24:1.
Escalonar leituras inclui tanto obter mais desempenho (mais leituras por segundo) com clientes validadores dedicados (como Sig na Solana) quanto permitir consultas mais complexas (combinando leituras com cálculos), por exemplo, com a ajuda de co-processadores.
Outro ângulo é descentralizar os métodos de consulta de dados. Hoje, a maioria das solicitações de consulta de dados em blockchains são facilitadas por terceiros confiáveis (baseados em reputação), como nós RPC (Infura) e indexadores (Duna). Exemplos de opções mais descentralizadas incluem O Gráficoe operadores à prova de armazenamento (também verificáveis). Existem também várias tentativas de criar uma rede RPC descentralizada, como Infura DINouRede Lava(além do RPC descentralizado, Lava pretende oferecer serviços adicionais de acesso a dados posteriormente).
Com cada vez mais aplicações incorporando ZKPs, a prova e verificação estão rapidamente se tornando uma parte essencial do stack modular. No entanto, hoje, a maioria da infraestrutura de prova ainda é permissionada e centralizada, com muitas aplicações dependendo de um único provador.
Embora a solução centralizada seja menos complexa, descentralizar a arquitetura de prova e dividir em um componente separado na pilha modular traz vários benefícios. Um benefício chave vem na forma de garantias de vivacidade que são cruciais para aplicações que dependem da geração frequente de provas. Os usuários também se beneficiam de uma resistência maior à censura e de taxas mais baixas impulsionadas pela competição e compartilhamento da carga de trabalho entre vários provadores.
Acreditamos que as redes de provadores de propósito geral (muitos aplicativos, muitos provadores) são superiores às redes de provadores de aplicação única (um aplicativo, muitos provadores) devido à maior utilização do hardware existente e menor complexidade para os provadores. Uma maior utilização também beneficia os usuários em termos de taxas mais baixas, uma vez que os provadores não precisam ser compensados pela redundância através de taxas mais altas (ainda é necessário cobrir custos fixos).
Figment Capitalforneceu uma boa visão geral do estado atual da cadeia de suprimentos de prova, que consiste tanto na geração de prova quanto na agregação de prova (que por si só é geração de prova, mas apenas tomando duas provas como entrada em vez de rastreamento de execução).
Origem: Figment Capital
Origem: Capital da Figment
A publicação de dados (DP) garante que os dados estejam disponíveis e facilmente recuperáveis por um curto período (1-2 semanas). Isso é crucial tanto para a segurança (rollups otimistas requerem dados de entrada para verificar a execução correta por meio de reexecução durante o período de desafio, 1-2 semanas) quanto para a vivacidade (mesmo que um sistema utilize provas de validade, os dados de transação subjacentes podem ser necessários para comprovar a propriedade de ativos para saídas de emergência, transações forçadas ou para verificar se as entradas correspondem às saídas). Os usuários (como zk-bridges e rollups) enfrentam um pagamento único, que cobre o custo de armazenar transações e estados por um curto período até que sejam podados. As redes de publicação de dados não são projetadas para armazenamento de dados em longo prazo (em vez disso, consulte a próxima seção para possíveis soluções).
Celestiafoi a primeira camada DP alternativa a lançar sua mainnet (31 de outubro), mas em breve haverá muitas alternativas para escolher como Disponível, EigenDA, e Perto de DAsão todos esperados para serem lançados durante 2024. Além disso, EIP 4844 do Ethereumatualizar a publicação de dados dimensionados na Ethereum (além de criar um mercado de taxas separado para armazenamento de blobs) e preparar o terreno para o completo dank-sharding. DP também está se expandindo para outros ecossistemas - um exemplo sendo@nubit_org/riema-secures-angel-investment-for-launching-the-first-bitcoin-native-data-availability-layer-49ccf0487380">Nubit que tem como objetivo construir o DP nativo no Bitcoin.
Muitas soluções de DP também oferecem serviços além da mera publicação de dados, incluindo segurança compartilhada para rollups soberanos (como CelestiaeDisponível) ou interoperabilidade mais suave entre rollups (como Avail’sNexus). Também existem projetos (DomiconeZero Gravity) que oferecem tanto a publicação de dados quanto o armazenamento de estado a longo prazo, o que é uma proposta convincente. Este é também um exemplo de reagrupamento de dois componentes na pilha modular, algo que provavelmente veremos mais no futuro (experimentação tanto com desagregação adicional quanto com reagrupamento).
Armazenar dados históricos é importante principalmente para fins de sincronização e atendimento a solicitações de dados. No entanto, não é viável para cada nó completo armazenar todos os dados e a maioria dos nós completos poda dados antigos para manter os requisitos de hardware razoáveis. Em vez disso, contamos com partes especializadas (nós de arquivamento e indexadores) para armazenar todos os dados históricos e disponibilizá-los a pedido dos usuários.
Também existem fornecedores de armazenamento descentralizado, como FilecoinouArweave, que oferecem soluções de armazenamento descentralizado de longo prazo a um preço razoável. Embora a maioria das blockchains não tenha um processo formal de armazenamento de arquivos (simplesmente confiam em alguém para armazená-los), os protocolos de armazenamento descentralizado são bons candidatos para armazenar histórico e adicionar alguma redundância (pelo menos X nós armazenam os dados) através dos incentivos integrados à rede de armazenamento.
Dado que as blockchains são sistemas distribuídos P2P, não há uma terceira parte confiável que determine a verdade global. Em vez disso, os nós da rede concordam com qual é a verdade atual (qual bloco é o correto) por meio de um mecanismo chamado consenso. Métodos de consenso baseados em PoS podem ser categorizados como baseados em BFT (onde o quórum tolerante a falhas bizantinas de validadores decide o estado final) ou baseados em cadeia (onde o estado final é decidido retrospectivamente pela regra de escolha de bifurcação). Embora a maioria das implementações de consenso de PoS existentes sejam baseadas em BFT, Cardanoé um exemplo de implementação da cadeia mais longa. Também há um crescente interesse em mecanismos de consenso baseados em DAG, como o Narwhal-Bullshark, que é implementado em algumas variações em Aleo, Aptos e Sui.
O consenso é uma parte crucial de muitos componentes diferentes da pilha modular, incluindo sequenciador compartilhado, provas descentralizadas e redes de publicação de dados baseadas em blockchain (não baseadas em comitê, como o EigenDA).
A liquidação é semelhante ao mais alto tribunal de justiça - a fonte final da verdade onde a correção das transições de estado é verificada e as disputas são resolvidas. Uma transação é considerada final no momento em que é irreversível (ou no caso da finalidade probabilística - no momento em que seria suficientemente difícil de reverter). O tempo até a finalização depende da camada de liquidação subjacente usada, que por sua vez depende da regra de finalização específica usada e do tempo de bloco.
A finalidade lenta é particularmente um problema na comunicação cross-rollup, onde os rollups precisam esperar pela confirmação do Ethereum antes de serem capazes de aprovar uma transação (7 dias para rollups otimistas, 12 minutos e tempo de prova para rollups de validade). Isso leva a uma experiência ruim do usuário. Há vários esforços para resolver esse problema usando pré-confirmações com um certo nível de segurança. Exemplos incluem soluções específicas do ecossistema (Camada AggLayer do PolygonouzkSync HyperBridge) e soluções de propósito geral como Camada de Finalidade Rápida do Nearque tem como objetivo conectar vários ecossistemas rollup diferentes, aproveitando a segurança econômica da EigenLayer. Também há a opção depontes de rollup nativas alavancando EigenLayerpara confirmações suaves para evitar esperar pela plena finalidade.
A segurança está relacionada à solidez das garantias e é uma parte crucial da proposta de valor das blockchains. No entanto, a segurança criptoecônica inicial é difícil - aumentando as barreiras de entrada e atuando como atrito para a inovação para aquelas aplicações que necessitam dela (vários middleware e L1s alternativos).
A ideia de segurança compartilhada é usar a segurança econômica existente das redes PoS e sujeitá-la a risco adicional de slashing (condições de punição), em vez de cada componente tentar inicializar o seu próprio. Houve algumas tentativas anteriores de fazer o mesmo em redes PoW (mineração combinada.)), mas incentivos desalinhados tornaram mais fácil para os mineradores conluio e explorar um protocolo (mais difícil punir comportamentos ruins, já que o trabalho acontece no mundo físico, ou seja, mineração usando poder computacional). A segurança de PoS é mais flexível para ser usada por outros protocolos, pois possui incentivos positivos (rendimento de staking) e negativos (slashing).
Protocolos construindo em torno da premissa de segurança compartilhada incluem:
A interoperabilidade segura e eficiente continua a ser uma grande questão em um mundo multi-cadeia, exemplificada pela $2.8bn perdidos em hacks de ponte. Em sistemas modulares, a interoperabilidade se torna ainda mais importante - Você não está apenas se comunicando entre outras cadeias, mas blockchains modulares também requerem que diferentes componentes se comuniquem entre si (como a camada DA e de liquidação). Portanto, não é mais viável simplesmente executar um nó completo ou verificar uma única prova de consenso como nos blockchains integrados. Isso adiciona mais peças em movimento à equação.
A interoperabilidade inclui tanto a ponte de tokens quanto a passagem de mensagens mais geral entre blockchains. Existem várias opções diferentes que fazem diferentes compensações em termos de segurança, latência e custo. Otimizar os três é muito difícil, o que geralmente requer sacrificar pelo menos um. Além disso, diferentes padrões entre as cadeias tornam as implementações em novas cadeias mais difíceis.
Embora ainda falte uma definição clara dos diferentes tipos de clientes leves (ou nós), esta postagem por Dino(co-fundador da Fluent & Modular Media) faz uma boa introdução. A maioria dos clientes leves hoje só verifica o consenso, mas idealmente teríamos clientes leves que também podem verificar a execução e DA para reduzir as suposições de confiança. Isso permitiria chegar perto da segurança de um nó completo, sem os altos requisitos de hardware.
Supondo que possamos alcançar um estado em que a geração de Provas de Conhecimento Zero (ZKPs) se torne muito rápida (quase à velocidade da luz) e incrivelmente barata (quase gratuita), como seria o resultado final? Em outras palavras, quando as ZKPs tiverem dominado completamente a pilha modular?
Em termos gerais, acreditamos que duas coisas seriam verdadeiras neste estado do mundo:
Uma terceira condição seria em torno da privacidade (ou gerenciamento de fluxo de informações), mas é mais complicado. ZKPs podem ser usados para algumas aplicações de privacidade com comprovação do lado do cliente, que é o que plataformas como Aleo, Aztec ou Polygon Miden estão construindo, mas alcançar a privacidade em grande escala para todos os casos de uso potenciais depende do progresso do MPC e FHE também - um possível tema para uma futura postagem no blog.
E se estivermos errados, e o futuro não for nem modular nem ZK'fied? Alguns riscos potenciais para a nossa tese incluem:
Tanto os usuários quanto os desenvolvedores sofrem com o número cada vez maior de cadeias. Os usuários precisam gerenciar fundos em várias cadeias (e potencialmente várias carteiras). Os desenvolvedores de aplicativos, por outro lado, têm menos estabilidade e previsibilidade, dado o quanto o espaço ainda está evoluindo, tornando mais difícil decidir em qual cadeia construir. Eles também precisam pensar sobre a fragmentação do estado e da liquidez. Isso é particularmente verdadeiro agora, pois ainda estamos experimentando ao longo da fronteira de quais componentes fazem sentido para desacoplar e quais serão recoplados. Acreditamos que a abstração da operação do usuário, bem como soluções de interoperabilidade seguras e eficientes, são partes cruciais para resolver esse problema.
Não há como contornar o fato de que a geração de provas leva muito tempo e o custo tanto da prova quanto da verificação ainda é muito alto hoje. Soluções concorrentes como ambientes de execução confiáveis/TEEs (privacidade) ou soluções de segurança otimistas/criptoeconômicas (custo) ainda fazem mais sentido para muitas aplicações hoje.
Muito trabalho, no entanto, está sendo feito em relação à otimização de software e aceleração de hardware para ZKPs. A agregação de provas ajudará a reduzir ainda mais os custos de verificação, espalhando o custo por várias partes diferentes (custo inferior/usuário). Também existe a possibilidade de adaptar a camada base para ser mais otimizada para a verificação de ZKPs. Um desafio em relação à aceleração de hardware para ZKPs é o rápido desenvolvimento de sistemas de prova. Isso torna difícil criar hardware especializado (ASICs), já que correm o risco de se tornar obsoletos rapidamente se/quando os padrões dos sistemas de prova subjacentes evoluem.
Ingonyamatentou criar alguns benchmarks para o desempenho do provador por meio de uma métrica comparável chamada pontuação ZK. É baseado no custo da execução da computação (OPEX) e rastreia MMOPS/WATT, onde MMOPS significa operações de multiplicação modular por segundo. Para mais leituras sobre o assunto, recomendamos blogs por @Cysic/BJQcpVbXn?ref=blog.succinct.xyz">Cysic and @ingonyama/revisiting-paradigms-hardware-acceleration-for-zero-knowledge-proofs-5dffacdc24b4">Ingonyama, assim como esta palestra de Wei Dai.
ZKPs só podem ser usados para alcançar privacidade para estado pessoal, não para estado compartilhado onde várias partes precisam computar em dados criptografados (como um Uniswap privado). FHE e MPC também são necessários para privacidade total, mas esses precisam melhorar muitas ordens de magnitude em termos de custo e desempenho antes de serem opções viáveis para uso em larga escala. Dito isso, ZKPs ainda são úteis para certos casos de uso que não exigem um estado compartilhado privado, como soluções de identidade ou pagamentos. Nem todos os problemas precisam ser resolvidos com a mesma ferramenta.
Então, onde isso nos deixa? Enquanto estamos progredindo a cada dia, muito trabalho ainda resta. As questões mais urgentes a serem resolvidas são como o valor e a informação podem fluir com segurança entre diferentes componentes modulares sem sacrificar velocidade ou custo, bem como abstraindo tudo isso do consumidor final para que eles não precisem se preocupar com a ponte entre diferentes cadeias, trocar carteiras, etc.
Embora ainda estejamos muito na fase de experimentação, as coisas devem se estabilizar ao longo do tempo, à medida que descobrimos onde no espectro estão os compromissos ideais para cada caso de uso. Isso, por sua vez, permitirá que padrões (informais ou formais) surjam e ofereçam mais estabilidade aos construtores em cima destas cadeias.
Hoje em dia, ainda existem muitos casos de uso que recorrem à segurança cripto-econômica devido ao custo e à complexidade de gerar ZKPs e alguns que exigem uma combinação dos dois. No entanto, essa participação deve diminuir com o tempo à medida que projetamos sistemas de prova mais eficientes e hardware especializado para reduzir o custo e a latência da prova e verificação. Com cada redução exponencial no custo e na velocidade, novos casos de uso são desbloqueados.
Embora este artigo tenha se concentrado especificamente em ZKPs, também estamos cada vez mais interessados em como as soluções de criptografia modernas (ZKPs, MPC, FHE e TEE) acabarão interagindo juntas - algo que já estamos vendo.
Obrigado por ler!