Guia rápido para variáveis de estado
Neste artigo, exploraremos variáveis de estado e diferentes tipos de variáveis Solidity e seus mecanismos de armazenamento, juntamente com as melhores práticas para declarar e inicializar variáveis em contratos inteligentes .
Existem três tipos de variáveis suportadas pelo Solidity:
Variáveis | Visão geral |
Variáveis de Estado | (também chamadas de variáveis de contrato) são variáveis com valores que permanecem permanentemente no contrato. |
Variáveis locais | Variáveis cujos valores permanecem até que a função seja executada. |
Variáveis especiais | existem no namespace global e são usados para obter informações sobre o blockchain. |
Como uma linguagem tipada estaticamente, o Solidity requer um tipo de variável local ou de estado durante a declaração.
Há sempre um valor padrão para cada variável declarada com base no tipo da variável.
Estado variável
As variáveis de estado são declaradas fora de qualquer função e têm um local de armazenamento permanente no contrato.
Eles podem ser acessados e modificados por qualquer função dentro do contrato.
Variáveis de estado normalmente são usadas para armazenar informações que precisam persistir entre chamadas de função ou que precisam ser compartilhadas entre funções.
Example:
Example:
2 é retornado porque a saída também é retornada como um inteiro sem sinal.
Variável local de solidez
As variáveis locais, por outro lado, são declaradas dentro de uma função e existem apenas durante a execução dessa função.
Eles não são armazenados permanentemente no contrato e não podem ser acessados por outras funções.
Example:
Example:
Example:
Variáveis Globais de Solidez
Existem variáveis especiais no espaço de trabalho global que fornecem informações sobre blockchains e transações.
nomes | devoluções |
blockhash(uint blockNumber) retorna (bytes32) | O hash do bloco fornecido – funciona apenas para os 256 blocos mais recentes, excluindo os blocos atuais |
block.coinbase (endereço pagável) | Fornece o endereço do minerador de bloco atual |
block.difficulty (uint) | Dá a dificuldade atual do bloco |
block.gaslimit (uint) | Mostra o limite de gás do bloco atual |
block.number (uint) | Exibe o número do bloco atual |
block.timestamp (uint) | fornece o carimbo de data/hora do bloco atual como segundos desde a época unix |
gasleft() retorna (uint256) | Mostra o gás restante |
msg.data (bytes calldata) | Exibe dados completos da chamada |
msg.remetente (endereço a pagar) | Exibe o remetente da mensagem (chamador atual) |
msg.sig (bytes4) | Mostra os primeiros quatro bytes do calldata (identificador de função) |
msg.value (uint) | Fornece o número de sufixos wei (1 x 10^ 12) enviados com a mensagem |
agora (uint) | Exibe o carimbo de data/hora do bloco atual |
tx.gasprice (uint) | Mostra o preço do gás da transação |
tx.origin (endereço a pagar) | fornece os detalhes da transação do remetente |
Nome da variável Solidity
Você deve manter as seguintes regras em mente ao nomear suas variáveis do Solidity.
Não é recomendado usar palavras-chave reservadas do Solidity como nomes de variáveis.
A próxima seção discute essas palavras-chave. Nomes de variáveis como break ou boolean não são permitidos.
Os nomes das variáveis de solidez não devem começar com um número (0-9). Letras ou sublinhados devem ser usados como o primeiro caractere.
O caso é levado em consideração ao nomear variáveis de Solidity.
Da mesma forma, uma variável inicializada por Name e uma variável inicializada por name são diferentes.