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.

Observe que indefinido e nulo não existem aqui.


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: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract SolidityTest {
uint state_variable;
constructor() public{
state_variable=24*3;
}
function get_stateVariable() public view returns(uint){
return state_variable;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div>

Exemplo de variáveis ​​de solidez output1

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract SolidityTest {
uint state_mrx_1;
uint state_ample_2;
constructor() public{
state_mrx_1=14;
state_ample_2=6;
}
function get_stateVariable() public view returns(uint){
return state_mrx_1/state_ample_2;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div>

Saída de exemplo de Solidity Variables

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: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract SolidityTest {
uint state_variable;
constructor() public{
state_variable=24*3;
}
function get_stateVariable() public view returns(uint){
return state_variable;
}
function get_LocalVariable() public view returns(uint){
uint mrx=20;
uint ample=2;
uint divisor=mrx/ample;
return divisor;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div>

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract SolidityTest {
uint state_variable;
constructor() public{
state_variable=5+5;
}
function get_stateVariable() public view returns(uint){
return state_variable;
}
function get_Product_LocalVariable() public view returns(uint){
uint mrx=6;
uint ample=3;
uint product=mrx*ample;
return product;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div>

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract SolidityTest {
uint state_mrx_1;
uint state_ample_2;
constructor() public{
state_mrx_1=20;
state_ample_2=6;
}
function get_Product_stateVariable() public view returns(uint){
return state_mrx_1*state_ample_2;
}
function get_Sum_localvariables() public view returns(uint){
uint local_mrx=4;
uint local_ample=10;
uint sum= local_mrx+local_ample;
return sum;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div>
O capítulo Solidity First Application fornece instruções que o ajudarão a executar o programa acima.

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.

Um nome de variável como 123test é inválido, enquanto _123test é válido.

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.

 

Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone