Solidity provides several basic data types that can be used to define variables in smart contracts. Understanding these data types is essential for effective smart contract development. Below are the primary data types in Solidity:

1. Boolean

The bool type represents a boolean value, which can be either true or false.

Sample Code for Boolean


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract BooleanExample {
bool public isActive; // State variable of type bool

function activate() public {
isActive = true; // Set isActive to true
}

function deactivate() public {
isActive = false; // Set isActive to false
}
}

2. Integer

Solidity provides both signed and unsigned integer types. The most commonly used integer types are:

  • int / int256: Signed integer (can be positive or negative).
  • uint / uint256: Unsigned integer (only positive values).

Sample Code for Integer


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract IntegerExample {
int256 public signedNumber; // Signed integer
uint256 public unsignedNumber; // Unsigned integer

function setNumbers(int256 _signed, uint256 _unsigned) public {
signedNumber = _signed; // Set signedNumber
unsignedNumber = _unsigned; // Set unsignedNumber
}
}

3. Address

The address type is used to store Ethereum addresses. Addresses can be used to send and receive Ether and can also point to smart contracts.

Sample Code for Address


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract AddressExample {
address public owner; // State variable of type address

constructor() {
owner = msg.sender; // Set the contract creator as the owner
}

function changeOwner(address newOwner) public {
owner = newOwner; // Change the owner to a new address
}
}

4. Fixed-size Byte Arrays

Solidity supports fixed-size byte arrays, which can store binary data. The size of the array is specified in the type declaration (e.g., bytes1 to bytes32).

Sample Code for Fixed-size Byte Arrays


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract ByteArrayExample {
bytes32 public data; // Fixed-size byte array of 32 bytes

function setData(bytes32 _data) public {
data = _data; // Set the byte array
}
}

5. Dynamic Byte Arrays

The bytes type is a dynamic byte array that can store an arbitrary amount of data. It is useful for handling binary data of varying lengths.

Sample Code for Dynamic Byte Arrays


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract DynamicByteArrayExample {
bytes public data; // Dynamic byte array

function setData(bytes memory _data) public {
data = _data; // Set the dynamic byte array
}
}

6. String

The string type is used to store UTF-8 encoded text. Strings are dynamic and can hold any length of text.

Sample Code for String


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract StringExample {
string public text; // State variable of type string

function setText(string memory _text) public {
text = _text; // Set the string value
}
}

Conclusion

In summary, Solidity provides a variety of basic data types that are essential for defining variables in smart contracts. Understanding these data types, including boolean, integer, address, fixed-size byte arrays, dynamic byte arrays, and strings, is crucial for effective smart contract development. By utilizing these data types appropriately, developers can create robust and efficient smart contracts.