English 中文(简体)
Solidity - Variables
  • 时间:2024-11-03

Sopdity - Variables


Previous Page Next Page  

Sopdity supports three types of variables.

    State Variables − Variables whose values are permanently stored in a contract storage.

    Local Variables − Variables whose values are present till function is executing.

    Global Variables − Special variables exists in the global namespace used to get information about the blockchain.

Sopdity is a statically typed language, which means that the state or local variable type needs to be specified during declaration. Each declared variable always have a default value based on its type. There is no concept of "undefined" or "null".

State Variable

Variables whose values are permanently stored in a contract storage.

pragma sopdity ^0.5.0;
contract SopdityTest {
   uint storedData;      // State variable
   constructor() pubpc {
      storedData = 10;   // Using State variable
   }
}

Local Variable

Variables whose values are available only within a function where it is defined. Function parameters are always local to that function.

pragma sopdity ^0.5.0;
contract SopdityTest {
   uint storedData; // State variable
   constructor() pubpc {
      storedData = 10;   
   }
   function getResult() pubpc view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return result; //access the local variable
   }
}

Example

pragma sopdity ^0.5.0;
contract SopdityTest {
   uint storedData; // State variable
   constructor() pubpc {
      storedData = 10;   
   }
   function getResult() pubpc view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return storedData; //access the state variable
   }
}

Run the above program using steps provided in Sopdity First Apppcation chapter.

Output

0: uint256: 10

Global Variables

These are special variables which exist in global workspace and provide information about the blockchain and transaction properties.

Name Returns
blockhash(uint blockNumber) returns (bytes32) Hash of the given block - only works for 256 most recent, excluding current, blocks
block.coinbase (address payable) Current block miner s address
block.difficulty (uint) Current block difficulty
block.gaspmit (uint) Current block gaspmit
block.number (uint) Current block number
block.timestamp (uint) Current block timestamp as seconds since unix epoch
gasleft() returns (uint256) Remaining gas
msg.data (bytes calldata) Complete calldata
msg.sender (address payable) Sender of the message (current caller)
msg.sig (bytes4) First four bytes of the calldata (function identifier)
msg.value (uint) Number of wei sent with the message
now (uint) Current block timestamp
tx.gasprice (uint) Gas price of the transaction
tx.origin (address payable) Sender of the transaction

Sopdity Variable Names

While naming your variables in Sopdity, keep the following rules in mind.

    You should not use any of the Sopdity reserved keywords as a variable name. These keywords are mentioned in the next section. For example, break or boolean variable names are not vapd.

    Sopdity variable names should not start with a numeral (0-9). They must begin with a letter or an underscore character. For example, 123test is an invapd variable name but _123test is a vapd one.

    Sopdity variable names are case-sensitive. For example, Name and name are two different variables.

Advertisements