17

With regard to Solidity, What is UINT256?

From the token example at https://ethereum.org/token :

/* This creates an array with all balances */
mapping (address => uint256) public balanceOf;

Beyond being a variable type in general computing, I'd love to gain a better of understanding and context in the Ethereum world. Why not just use an INT? Assuming it's a specific type of Integer, what does the "U" denote?

3
22

With regard to Solidity...

This is really more a general computer science question that would best be answered on Stack Overflow.

At the risk of repeating what @Ismael has linked to...

  • U - unsigned (meaning this type can only represent positive integers, not positive and negative integers)
  • INT - integer
  • 256 - 256 bits in size

Context: The EVM (Ethereum Virtual Machine) uses 256 bits as its word size. See: Rationale behind 256-bit words in EVM

1
10

Integers in Solidity:

uint256 (uint is an alias) is a unsigned integer which has:

  • minimum value of 0
  • maximum value of 2^256-1 = 115792089237316195423570985008687907853269984665640564039457584007913129639935 //78 decimal digits

int256 (int is an alias) is a signed integer which has:

  • minimum value of -2^255 = -57896044618658097711785492504343953926634992332820282019728792003956564819968
  • maximum value of 2^255-1 = 57896044618658097711785492504343953926634992332820282019728792003956564819967

For example, in Solidity we could write the following code:

uint8 public constant decimals = 6;
uint256 public constant totalSupply = 1000000*10**uint256(decimals); // 1000000000000

P.S. It is unusual that int/uint in Solidity have 256 bits in size, because there are such popular languages as C#/Java that have int data type with 32 bits in size:

  • minimum value of -2^31 = -2147483648
  • maximum value of 2^31-1 = 2147483647
1
  • 1
    I think 256 bits was chosen so that there would be enough addresses for the ethereum network to continue to work indefinitely.
    – forgetso
    Jul 2 '19 at 8:14

Not the answer you're looking for? Browse other questions tagged or ask your own question.