Skip to content

Latest commit

 

History

History
37 lines (21 loc) · 1.74 KB

13.-memory-vs-storage.md

File metadata and controls

37 lines (21 loc) · 1.74 KB
description
Há certas formas de manipular os dados dentro das blockchains e cada uma é feita de formas diferentes pelo minerador que vai executar o contrato, isso implica em diferentes custos de gás.

13. Memory vs Storage

Storage

Dados que irão persistir na blockchain e serão armazenados por tempo indefinido (ou definido) dentro dos registros distribuídos entre todos os nós da rede.

Toda variável definida fora de funções será armazenada dessa forma por padrão. Variáveis dentro de funções precisam do parâmetro storage para que sejam gravadas na blockchain.

Memory & Calldata

Esse tipo de armazenamento será temporário e somente durante tempo de execução, ou seja esse dado só irá existir enquanto a função ou instrução estiver sendo executada, dados guardados em variáveis do tipo memory ou calldata não serão armazenados. Há uma diferença relevante entre as duas operações e abaixo veremos quando usar uma ou outra.

memory: pode ser alterado.

Quando passamos parâmetros para uma função e utilizamos memory como indicador de tipo de armazenamento nós temos permissão para alterar esse dado dentro da função caso seja do nosso interesse.

calldata: não pode ser alterado.

Já quando utlizamos calldata não temos permissão para alterar o dado que foi passado para a função.

Custos: Storage vs Memory vs Calldata.

Storage é o mais caro pois guarda os dados dentro da blockchain, seguido de memory que é bem mais barato pois não armazena nada mas utiliza mais OPCODES que calldata que acaba por ser o mais barato de todos os tipos de armazenamento.