Estratégias de armazenamento de dados em blockchain
Última atualização da página: 26 de fevereiro de 2026
Existem várias maneiras de armazenar informações diretamente na blockchain ou de uma maneira protegida pela blockchain:
- Blobs EIP-4844
- Calldata
- Offchain com mecanismos L1
- Contrato "code"
- Eventos
- Armazenamento EVM
A escolha do método a ser utilizado é baseada em vários critérios:
- A fonte da informação. As informações nos calldatas não podem vir diretamente da própria blockchain.
- O destino da informação. Calldata está disponível apenas na transação que o inclui. Os eventos não são acessíveis na cadeia.
- Qual é o nível de complexidade aceitável? Computadores que executam um nó em grande escala podem executar mais processamento do que um cliente leve em um aplicativo executado em um navegador.
- É necessário facilitar o acesso às informações de cada nó?
- Os requisitos de segurança.
Os requisitos de segurança
Em geral, a segurança da informação consiste em três atributos:
-
Confidentiality: entidades não autorizadas não estão autorizadas a ler as informações. Isso é importante em muitos casos, mas não aqui. Não há segredos na blockchain. As blockchains funcionam porque qualquer pessoa pode verificar as transições de estado, então é impossível usá-las para armazenar segredos diretamente. Existem maneiras de armazenar informações confidenciais na blockchain, mas todas elas dependem de algum componente offchain para armazenar pelo menos uma chave.
-
Integrity: as informações estão corretas, não podem ser alteradas por entidades não autorizadas ou de maneiras não autorizadas (por exemplo, transferindo tokens ERC-20 (opens in a new tab) sem um evento
Transfer). Na blockchain, cada nó verifica cada mudança de estado, o que garante integridade. -
Availability: a informação está disponível para qualquer entidade autorizada. Na blockchain, isso é geralmente obtido ao ter as informações disponíveis em cada nó completo (opens in a new tab).
Todas as diferentes soluções aqui têm excelente integridade, porque os hashes são postados no L1. No entanto, elas têm diferentes garantias de disponibilidade.
Pré-requisitos
Você deve ter um bom entendimento dos fundamentos da blockchain. Esta página também pressupõe que o leitor esteja familiarizado com blocos, transações e outros tópicos relevantes.
Blobs EIP-4844
Começando com o hardfork Dencun (opens in a new tab), a blockchain Ethereum inclui EIP-4844 (opens in a new tab), que adiciona blobs de dados Ethereum com uma vida útil limitada (inicialmente cerca de 18 dias (opens in a new tab)). Esses blobs têm preços separados do gás de execução, embora usem um mecanismo semelhante. Eles são uma maneira barata de postar dados temporários.
O principal caso de uso dos blobs EIP-4844 é a publicação das transações pelos rollups. Optimistic rollups precisam publicar as transações em suas blockchains. Essas transações precisam estar disponíveis para qualquer pessoa durante o período do desafio (opens in a new tab) para permitir que os validadores (opens in a new tab) corrijam o erro se o sequenciador (opens in a new tab) do rollup publicar uma raiz de estado incorreta.
Entretanto, uma vez que o período de desafio tenha passado e a raiz do estado tenha sido finalizada, o propósito restante para conhecer essas transações é replicar o estado atual da cadeia. Esse estado também está disponível nos nós da cadeia, exigindo muito menos processamento. Portanto, as informações de transações ainda devem ser preservadas em alguns lugares, como exploradores de bloco, mas não há necessidade de pagar pelo nível de resistência à censura que o Ethereum oferece.
Rollups de conhecimento zero também publicam seus dados de transações para permitir que outros nós repliquem o estado existente e verifiquem provas de validade, mas, novamente, esse é um requisito de curto prazo.
No momento em que escrevo, postar no EIP-4844 custa um wei (10-18 ETH) por byte, o que é insignificante comparado aos 21.000 gases de execução que qualquer transação, incluindo uma que publica blobs, custa (opens in a new tab). Você pode ver o preço atual do EIP-4844 em blobscan.com (opens in a new tab).
Aqui estão os endereços para ver os blobs postados por alguns rollups famosos.
Calldata
Calldata refere-se aos bytes enviados como parte da transação. Ele é armazenado como parte do registro permanente da blockchain no bloco que inclui essa transação.
Este é o método mais barato para colocar dados permanentemente na blockchain. O custo por byte é de 4 unidades de gás de execução (se o byte for zero) ou 16 gás (qualquer outro valor). Se os dados forem compactados, o que é uma prática padrão, cada valor de byte será igualmente provável, então o custo médio será de aproximadamente 15,95 unidades de gás por byte.
No momento em que este artigo foi escrito, os preços eram 12 gwei/gás e 2300 $/ETH, o que significa que o custo é de aproximadamente 45 centavos por quilobyte. Como esse era o método mais barato antes do EIP-4844, esse é o método usado pelos rollups para armazenar informações de transações, que precisam estar disponíveis para desafios de falhas (opens in a new tab), mas não precisam estar acessíveis diretamente na cadeia.
Aqui estão os endereços para ver as transações publicadas por alguns rollups famosos.
Offchain com mecanismos L1
Dependendo das suas compensações de segurança, pode ser aceitável colocar as informações em outro lugar e usar um mecanismo que garanta que os dados estejam disponíveis quando necessário. Há dois requisitos para que isso funcione:
-
Publique um hash (opens in a new tab) dos dados na blockchain, chamado de input commitment. Pode ser uma única palavra de 32 bytes, portanto não é caro. Enquanto o comprometimento de entrada estiver disponível, a integridade estará garantida porque não é possível encontrar outros dados que tenham o mesmo valor. Portanto, se dados incorretos forem fornecidos, eles poderão ser detectados.
-
Tenha um mecanismo que garanta a disponibilidade. Por exemplo, em Redstone (opens in a new tab) qualquer nó pode enviar um desafio de disponibilidade. Se o sequenciador não responder onchain dentro do prazo, o comprometimento de entrada será descartado, então a informação será considerada como nunca tendo sido publicada.
Isso é aceitável para um pptimistic rollup porque já estamos contando com pelo menos um verificador honesto para a raiz do estado. Um verificador honesto também garantirá que possui os dados para processar blocos e emitirá um desafio de disponibilidade se as informações não estiverem disponíveis off-chain. Esse tipo de optimistic rollup é chamado de plasma.
Código do contrato
Informações que só precisam ser escritas uma vez, nunca são substituídas e precisam estar disponíveis na cadeia podem ser armazenadas como código de contrato. Isso significa que criamos um "contrato inteligente" com os dados e então usamos EXTCODECOPY (opens in a new tab) para ler as informações. A vantagem é que copiar código é relativamente barato.
Além do custo de expansão de memória, EXTCODECOPY custa 2.600 unidades de gás para o primeiro acesso a um contrato (quando ele está "frio") e 100 unidades de gás para cópias subsequentes do mesmo contrato, mais 3 unidades de gás por palavra de 32 bytes. Comparado com o calldata, que custa 15,95 por byte, este é mais barato a partir de cerca de 200 bytes. Com base na fórmula para custos de expansão de memória (opens in a new tab), desde que você não precise de mais de 4 Mb de memória, o custo de expansão de memória é menor que o custo de adicionar dados de chamada.
Claro, esse é apenas o custo para ler os dados. A criação do contrato custa aproximadamente 32.000 unidades de gás + 200 unidades de gás/byte. Este método só é econômico quando a mesma informação precisa ser lida muitas vezes em transações diferentes.
O código do contrato pode ser absurdo, desde que não comece com 0xEF. Contratos que começam com 0xEF são interpretados como formato de objeto ethereum (opens in a new tab), que tem requisitos muito mais rigorosos.
Eventos
Eventos (opens in a new tab) são emitidos por contratos inteligentes e lidos por software offchain. A vantagem é que o código offchain pode escutar eventos. O custo é gás (opens in a new tab), 375 mais 8 unidades de gás por byte de dados. A 12 gwei/gás e 2.300 $/ETH, isso se traduz em um centavo mais 22 centavos por kilobyte.
Armazenamento
Contratos inteligentes têm acesso a armazenamento persistente (opens in a new tab). Porém, é muito caro. Escrever uma palavra de 32 bytes em um slot de armazenamento previamente vazio pode custar 22.100unidades de gás (opens in a new tab). A 12 gwei/gás e 2.300 $/ETH, isso é cerca de 61 centavos por operação de gravação, ou US$ 19,5 por kilobyte.
Esta é a forma mais cara de armazenamento no Ethereum.
Resumo
Esta tabela resume as diferentes opções, suas vantagens e desvantagens.
| Tipo de armazenamento | Fonte de dados | Garantia de disponibilidade | Disponibilidade onchain | Limitações adicionais |
|---|---|---|---|---|
| Blobs EIP-4844 | Offchain | Garantia Ethereum por cerca de 18 dias (opens in a new tab) | Apenas hash está disponível | |
| Calldata | Offchain | Garantia perpétua Ethereum (parte da blockchain) | Disponível somente se escrito em um contrato e nessa transação específica | |
| Offchain com mecanismos L1 | Offchain | Garantia de "Um verificador honesto" durante o período de desafio | Somente hash | Garantido pelo mecanismo de desafio, apenas durante o período de desafio |
| Código do contrato | Onchain ou offchain | Garantia perpétua Ethereum (parte da blockchain) | Sim | Escrito em um endereço "aleatório". Não pode começar com 0xEF |
| Eventos | Onchain | Garantia perpétua Ethereum (parte da blockchain) | Não | |
| Armazenamento | Onchain | Garantia perpétua Ethereum (parte da blockchain e o estado atual até ser substituído) | Sim |