- Solidity - Discussion
- Solidity - Useful Resources
- Solidity - Quick Guide
- Solidity - Error Handling
- Solidity - Events
- Solidity - Assembly
- Solidity - Libraries
- Solidity - Interfaces
- Solidity - Abstract Contracts
- Solidity - Constructors
- Solidity - Inheritance
- Solidity - Contracts
- Solidity - Restricted Access
- Solidity - Withdrawal Pattern
- Cryptographic Functions
- Mathematical Functions
- Function Overloading
- Solidity - Fallback Function
- Solidity - Pure Functions
- Solidity - View Functions
- Solidity - Function Modifiers
- Solidity - Functions
- Solidity - Style Guide
- Solidity - Special Variables
- Solidity - Ether Units
- Solidity - Conversions
- Solidity - Mappings
- Solidity - Structs
- Solidity - Enums
- Solidity - Arrays
- Solidity - Strings
- Solidity - Decision Making
- Solidity - Loops
- Solidity - Operators
- Solidity - Variable Scope
- Solidity - Variables
- Solidity - Types
- Solidity - Comments
- Solidity - First Application
- Solidity - Basic Syntax
- Solidity - Environment Setup
- Solidity - Overview
- Solidity - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Sopdity - Variables
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
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.