E se você perdesse a memória a cada hora? E você precisa pedir constantemente a alguém que lhe conte o que você fez? Esse é o estado atual dos contratos inteligentes. Em blockchains como o Ethereum, os contratos inteligentes não podem acessar diretamente estados além de 256 blocos. Este problema é ainda mais agravado no ecossistema multicadeia, onde a recuperação e verificação de dados em diferentes camadas de execução é ainda mais difícil.
Em 2020, Vitalik Buterin e Tomasz Stanczak propuseram uma forma de acessar dados ao longo do tempo. Embora o EIP tenha ficado estagnado, a sua necessidade ressurgiu no mundo multi-cadeia centrado no roll-up. Hoje, as provas de armazenamento surgiram como uma fronteira, para dar consciência e memória aos contratos inteligentes.
Existem várias maneiras pelas quais os dapps podem acessar dados e estado. Todas as abordagens exigem que o aplicativo confie em humanos/entidades ou na segurança ou código criptoeconômico e tenha algumas compensações:
Dados os desafios e limitações destas soluções, há uma clara necessidade de armazenar e fornecer hashes de blocos na cadeia. É aqui que entram as provas de armazenamento. Para entender melhor as provas de armazenamento, vamos dar uma olhada rápida no armazenamento de dados em blockchains.
Um blockchain é um banco de dados público atualizado e compartilhado entre vários computadores em uma rede. Os dados e o estado são armazenados em grupos consecutivos chamados blocos e cada bloco faz referência criptográfica ao seu pai, armazenando o hash do cabeçalho do bloco anterior.
Tomemos o bloco Ethereum como exemplo. Ethereum aproveita um tipo específico de árvore Merkle conhecida como “árvore Merkle Patricia” (MPT). Os cabeçalhos dos blocos Ethereum contêm raízes de quatro tentativas diferentes de Merkle-Patricia, ou seja Teste de estado, teste de armazenamento, teste de recibos e teste de transação. Essas 4 tentativas codificam mapeamentos que compreendem todos os dados Ethereum. Merkle Trees são utilizadas devido à sua eficiência no armazenamento de dados. Usando hashes recursivos, apenas o hash raiz precisa ser armazenado, economizando muito espaço. Eles permitem que qualquer pessoa prove a existência de um elemento na árvore, provando que o hash recursivo dos nós leva ao mesmo hash raiz. As provas Merkle permitem que clientes leves no Ethereum obtenham respostas para perguntas como:
Em vez de baixar cada transação e cada bloco, um “cliente leve” só pode baixar a cadeia de cabeçalhos de bloco e verificar as informações usando Merkle Proofs. Isso torna o processo geral altamente eficiente. Consulte este artigo de pesquisa do blog de Vitalik e Maven11 para entender melhor a implementação, vantagens e desafios associados às árvores Merkle.
As provas de armazenamento nos permitem provar que algo está confirmado no banco de dados e também é válido usando compromissos criptográficos. Se pudermos fornecer tal prova, será uma afirmação verificável de que algo aconteceu na blockchain.
As provas de armazenamento permitem duas funcionalidades principais:
As provas de armazenamento em um nível muito alto verificam se o bloco específico faz parte do histórico canônico do blockchain e, em seguida, verificam se os dados específicos solicitados fazem parte do bloco. Isto pode ser alcançado através de:
Alguns dos projetos que adotam essa abordagem são Heródoto, Lagrange, Axiom, Hyper Oracle, Brevis Network e Nil Foundation. Embora esforços significativos estejam sendo feitos para tornar os aplicativos conscientes do estado em vários blockchains, o IBC (Inter Blockchain Communication) se destaca como um padrão de interoperabilidade que permite aplicativos como ICQ (consultas Interchain) e ICA (contas Interchain). O ICQ permite que aplicativos na Cadeia A consultem o estado da Cadeia B, incluindo a consulta em um pacote IBC simples e o ICA permite que um blockchain controle com segurança uma conta em outro blockchain. Combiná-los pode permitir casos de uso interessantes entre cadeias. Provedores de RaaS como a Saga oferecem essas funcionalidades a todas as suas cadeias de aplicativos por padrão usando IBC.
Há muitas maneiras pelas quais as provas de armazenamento podem ser otimizadas para encontrar o equilíbrio certo entre consumo de memória, tempo de prova, tempo de verificação, eficiência computacional e experiência do desenvolvedor. O processo geral pode ser amplamente dividido em 3 subprocessos principais.
Acesso aos dados: Neste subprocesso, o provedor de serviços acessa os cabeçalhos dos blocos da cadeia de origem nativamente na camada de execução ou por meio da manutenção de um cache on-chain. Para acesso a dados entre cadeias, é necessária a verificação do consenso da cadeia de origem na cadeia de destino. Algumas das abordagens e otimizações adotadas incluem:
Juntamente com o acesso aos dados, os contratos inteligentes também devem ser capazes de fazer cálculos arbitrários sobre os dados. Embora alguns casos de uso possam não exigir computação, é um importante serviço de valor agregado para muitos outros casos de uso. Muitos dos provedores de serviços permitem cálculos nos dados, pois uma prova zk do cálculo pode ser gerada e fornecida na cadeia para validade. Como as soluções AMP existentes, como Axelar, LayerZero e Polyhedra Network, poderiam ser potencialmente usadas para acesso a dados, o processamento de dados poderia se tornar um diferencial para provedores de serviços à prova de armazenamento.
O Hyper Oracle, por exemplo, permite que os desenvolvedores definam cálculos off-chain personalizados com JavaScript. Brevis projetou um mercado aberto de ZK Query Engines que aceita consultas de dados de dApps e as processa usando os cabeçalhos de bloco atestados. O contrato inteligente envia uma consulta de dados, que é coletada por um provador do mercado. O Prover gera uma prova com base na entrada da consulta, cabeçalhos de bloco relevantes (da camada de agregação Brevis) e resultados. Lagrange introduziu o ZK Big Data Stack para provar modelos de programação distribuída como SQL, MapReduce e Spark/RDD. As provas são modulares e podem ser geradas a partir de qualquer cabeçalho de bloco originado de pontes cross-chain e protocolos AMP existentes. ZK MapReduce, o primeiro produto da pilha Lagrange ZK BigData, é um mecanismo de computação distribuída (baseado no conhecido modelo de programação MapReduce) para provar resultados de computação envolvendo conjuntos consideráveis de dados de múltiplas cadeias. Por exemplo, uma única prova ZKMR pode ser usada para provar mudanças na liquidez de um DEX implantado em 4–5 cadeias durante um período de tempo especificado. Para consultas relativamente simples, o cálculo também pode ser feito diretamente na cadeia, como é feito por Heródoto no momento.
As provas de estado e armazenamento podem desbloquear muitos novos casos de uso para contratos inteligentes nas camadas de aplicação, middleware e infraestrutura. Alguns deles são:
Governança:
Todas as provas acima podem ser usadas para fornecer uma experiência personalizada aos usuários. Os Dapps podem oferecer descontos ou privilégios para reter traders ou usuários experientes e oferecer uma experiência de usuário simplificada para usuários novatos.
Os dois últimos casos de uso exigirão que a prova seja atualizada sempre que um novo bloco for adicionado à cadeia de origem.
A conscientização capacita as empresas de tecnologia a atender melhor seus clientes. Da identidade do usuário ao comportamento de compra e aos gráficos sociais, as empresas de tecnologia aproveitam a conscientização para desbloquear recursos como segmentação precisa, segmentação de clientes e marketing viral. As empresas de tecnologia tradicionais precisam de permissão explícita de seus usuários e devem ter cuidado ao gerenciar os dados dos usuários. No entanto, todos os dados do usuário em blockchains sem permissão estão disponíveis publicamente sem necessariamente revelar a identidade do usuário. Os contratos inteligentes devem ser capazes de aproveitar os dados publicamente disponíveis para melhor servir os utilizadores. O desenvolvimento e a adoção de ecossistemas mais especializados tornarão a consciência do Estado ao longo do tempo e as blockchains um problema cada vez mais importante a ser resolvido. As provas de armazenamento podem permitir que o Ethereum emerja como uma camada de identidade e propriedade de ativos, além de ser uma camada de liquidação. Os usuários poderiam manter sua identidade e ativos principais no Ethereum, que poderiam ser usados em vários blockchains sem conectar ativos o tempo todo. Continuamos entusiasmados com as novas possibilidades e casos de uso que serão desbloqueados no futuro.
E se você perdesse a memória a cada hora? E você precisa pedir constantemente a alguém que lhe conte o que você fez? Esse é o estado atual dos contratos inteligentes. Em blockchains como o Ethereum, os contratos inteligentes não podem acessar diretamente estados além de 256 blocos. Este problema é ainda mais agravado no ecossistema multicadeia, onde a recuperação e verificação de dados em diferentes camadas de execução é ainda mais difícil.
Em 2020, Vitalik Buterin e Tomasz Stanczak propuseram uma forma de acessar dados ao longo do tempo. Embora o EIP tenha ficado estagnado, a sua necessidade ressurgiu no mundo multi-cadeia centrado no roll-up. Hoje, as provas de armazenamento surgiram como uma fronteira, para dar consciência e memória aos contratos inteligentes.
Existem várias maneiras pelas quais os dapps podem acessar dados e estado. Todas as abordagens exigem que o aplicativo confie em humanos/entidades ou na segurança ou código criptoeconômico e tenha algumas compensações:
Dados os desafios e limitações destas soluções, há uma clara necessidade de armazenar e fornecer hashes de blocos na cadeia. É aqui que entram as provas de armazenamento. Para entender melhor as provas de armazenamento, vamos dar uma olhada rápida no armazenamento de dados em blockchains.
Um blockchain é um banco de dados público atualizado e compartilhado entre vários computadores em uma rede. Os dados e o estado são armazenados em grupos consecutivos chamados blocos e cada bloco faz referência criptográfica ao seu pai, armazenando o hash do cabeçalho do bloco anterior.
Tomemos o bloco Ethereum como exemplo. Ethereum aproveita um tipo específico de árvore Merkle conhecida como “árvore Merkle Patricia” (MPT). Os cabeçalhos dos blocos Ethereum contêm raízes de quatro tentativas diferentes de Merkle-Patricia, ou seja Teste de estado, teste de armazenamento, teste de recibos e teste de transação. Essas 4 tentativas codificam mapeamentos que compreendem todos os dados Ethereum. Merkle Trees são utilizadas devido à sua eficiência no armazenamento de dados. Usando hashes recursivos, apenas o hash raiz precisa ser armazenado, economizando muito espaço. Eles permitem que qualquer pessoa prove a existência de um elemento na árvore, provando que o hash recursivo dos nós leva ao mesmo hash raiz. As provas Merkle permitem que clientes leves no Ethereum obtenham respostas para perguntas como:
Em vez de baixar cada transação e cada bloco, um “cliente leve” só pode baixar a cadeia de cabeçalhos de bloco e verificar as informações usando Merkle Proofs. Isso torna o processo geral altamente eficiente. Consulte este artigo de pesquisa do blog de Vitalik e Maven11 para entender melhor a implementação, vantagens e desafios associados às árvores Merkle.
As provas de armazenamento nos permitem provar que algo está confirmado no banco de dados e também é válido usando compromissos criptográficos. Se pudermos fornecer tal prova, será uma afirmação verificável de que algo aconteceu na blockchain.
As provas de armazenamento permitem duas funcionalidades principais:
As provas de armazenamento em um nível muito alto verificam se o bloco específico faz parte do histórico canônico do blockchain e, em seguida, verificam se os dados específicos solicitados fazem parte do bloco. Isto pode ser alcançado através de:
Alguns dos projetos que adotam essa abordagem são Heródoto, Lagrange, Axiom, Hyper Oracle, Brevis Network e Nil Foundation. Embora esforços significativos estejam sendo feitos para tornar os aplicativos conscientes do estado em vários blockchains, o IBC (Inter Blockchain Communication) se destaca como um padrão de interoperabilidade que permite aplicativos como ICQ (consultas Interchain) e ICA (contas Interchain). O ICQ permite que aplicativos na Cadeia A consultem o estado da Cadeia B, incluindo a consulta em um pacote IBC simples e o ICA permite que um blockchain controle com segurança uma conta em outro blockchain. Combiná-los pode permitir casos de uso interessantes entre cadeias. Provedores de RaaS como a Saga oferecem essas funcionalidades a todas as suas cadeias de aplicativos por padrão usando IBC.
Há muitas maneiras pelas quais as provas de armazenamento podem ser otimizadas para encontrar o equilíbrio certo entre consumo de memória, tempo de prova, tempo de verificação, eficiência computacional e experiência do desenvolvedor. O processo geral pode ser amplamente dividido em 3 subprocessos principais.
Acesso aos dados: Neste subprocesso, o provedor de serviços acessa os cabeçalhos dos blocos da cadeia de origem nativamente na camada de execução ou por meio da manutenção de um cache on-chain. Para acesso a dados entre cadeias, é necessária a verificação do consenso da cadeia de origem na cadeia de destino. Algumas das abordagens e otimizações adotadas incluem:
Juntamente com o acesso aos dados, os contratos inteligentes também devem ser capazes de fazer cálculos arbitrários sobre os dados. Embora alguns casos de uso possam não exigir computação, é um importante serviço de valor agregado para muitos outros casos de uso. Muitos dos provedores de serviços permitem cálculos nos dados, pois uma prova zk do cálculo pode ser gerada e fornecida na cadeia para validade. Como as soluções AMP existentes, como Axelar, LayerZero e Polyhedra Network, poderiam ser potencialmente usadas para acesso a dados, o processamento de dados poderia se tornar um diferencial para provedores de serviços à prova de armazenamento.
O Hyper Oracle, por exemplo, permite que os desenvolvedores definam cálculos off-chain personalizados com JavaScript. Brevis projetou um mercado aberto de ZK Query Engines que aceita consultas de dados de dApps e as processa usando os cabeçalhos de bloco atestados. O contrato inteligente envia uma consulta de dados, que é coletada por um provador do mercado. O Prover gera uma prova com base na entrada da consulta, cabeçalhos de bloco relevantes (da camada de agregação Brevis) e resultados. Lagrange introduziu o ZK Big Data Stack para provar modelos de programação distribuída como SQL, MapReduce e Spark/RDD. As provas são modulares e podem ser geradas a partir de qualquer cabeçalho de bloco originado de pontes cross-chain e protocolos AMP existentes. ZK MapReduce, o primeiro produto da pilha Lagrange ZK BigData, é um mecanismo de computação distribuída (baseado no conhecido modelo de programação MapReduce) para provar resultados de computação envolvendo conjuntos consideráveis de dados de múltiplas cadeias. Por exemplo, uma única prova ZKMR pode ser usada para provar mudanças na liquidez de um DEX implantado em 4–5 cadeias durante um período de tempo especificado. Para consultas relativamente simples, o cálculo também pode ser feito diretamente na cadeia, como é feito por Heródoto no momento.
As provas de estado e armazenamento podem desbloquear muitos novos casos de uso para contratos inteligentes nas camadas de aplicação, middleware e infraestrutura. Alguns deles são:
Governança:
Todas as provas acima podem ser usadas para fornecer uma experiência personalizada aos usuários. Os Dapps podem oferecer descontos ou privilégios para reter traders ou usuários experientes e oferecer uma experiência de usuário simplificada para usuários novatos.
Os dois últimos casos de uso exigirão que a prova seja atualizada sempre que um novo bloco for adicionado à cadeia de origem.
A conscientização capacita as empresas de tecnologia a atender melhor seus clientes. Da identidade do usuário ao comportamento de compra e aos gráficos sociais, as empresas de tecnologia aproveitam a conscientização para desbloquear recursos como segmentação precisa, segmentação de clientes e marketing viral. As empresas de tecnologia tradicionais precisam de permissão explícita de seus usuários e devem ter cuidado ao gerenciar os dados dos usuários. No entanto, todos os dados do usuário em blockchains sem permissão estão disponíveis publicamente sem necessariamente revelar a identidade do usuário. Os contratos inteligentes devem ser capazes de aproveitar os dados publicamente disponíveis para melhor servir os utilizadores. O desenvolvimento e a adoção de ecossistemas mais especializados tornarão a consciência do Estado ao longo do tempo e as blockchains um problema cada vez mais importante a ser resolvido. As provas de armazenamento podem permitir que o Ethereum emerja como uma camada de identidade e propriedade de ativos, além de ser uma camada de liquidação. Os usuários poderiam manter sua identidade e ativos principais no Ethereum, que poderiam ser usados em vários blockchains sem conectar ativos o tempo todo. Continuamos entusiasmados com as novas possibilidades e casos de uso que serão desbloqueados no futuro.