Solidity 언어는 스마트 계약에 최적화된 자료형을 지원합니다. 첫 시간에는 자료형의 종류와 용도 등을 알아보도록 하겠습니다.
Solidity의 자료형
- 정수형
- 참, 거짓형
- 나열형
- 문자열 자료형
- 주소
정수형 (int, uint)
정수형의 경우 흔히 프로그래밍 언어에서 사용하는 정수형 int가 있고 int와 달리 부호가 존재하지 않는 정수형인 uint가 있습니다.
- int
- uint
int를 먼저 설명드리자면 Solidity에서 int는 int256을 의미합니다. 자료형 뒤에 숫자는 메모리 영역 내에 크기를 나타내며 int8, int16, int24, int32, int 64, int128, int256등이 있습니다.
uint의 경우도 마찬가지로 uint는 uint256을 의미하고 uint8, uint16, uint24, uint32, uint64, uint128, uint256등이 있습니다.
둘의 차이는 나타낼 수 있는 정수형의 범위에서 차이가 나는데 uint형은 말씀드린 것과 같이 부호가 없어 0과 양의 정수를 나타냅니다.
각각의 범위를 표현을 한다면 아래의 표와 같습니다.
자료형 | 범위 |
int8 | : -128 ~ 127 |
int16 | : -32768 ~ 32767 |
int24 |
: -8388608 ~ 8388607 |
int32 | : -2147483648 ~ 2147483647 |
int64 | : -9223372036854775808 ~ 9223372036854775807 |
int128 | : -1.7014118346046923173168730371588e+38 ~ 1.7014118346046923173168730371588e+38 |
int256 | : -5.7896044618658097711785492504344e+76 ~ 5.7896044618658097711785492504344e+76 |
uint8 | : 0 ~ 255 |
uint16 | : 0 ~ 65535 |
uint24 | : 0 ~ 16777216 |
uint32 | : 0 ~ 4294967296 |
uint64 | : 0 ~ 18446744073709551616 |
uint128 | : 0 ~ 3.4028236692093846346337460743177e+38 |
uint256 | : 0 ~ 1.1576208923731619542357098500869e+77 |
따라서 int와 uint는 엄연히 다른 자료형이고 이런 식으로 범위에 따라 다양하게 존재하는 이유는 불필요하게 낭비되는 공간을 줄이기 위하여 존재합니다.
선언 방법은 자료형(type) 이름(name) = 데이터(data); 의 형태를 가지는데 아래와 같이 선언을 할 수 있습니다.
int a = -10;
uint b = 10;
참, 거짓형 (bool)
데이터 값으로 참(true) 혹은 거짓(false)만 가지는 자료형입니다. 나중에 배울 조건문에서 사용이 되거나 함수의 결과가 '옳다' 혹은 '틀리다'를 결과 값으로 낼 때 사용할 수 있습니다.
선언 방법은 아래와 같이 선언을 할 수 있습니다.
bool a = true;
bool b = false;
나열형(enum)
개발자가 정의할 수 있는 자료형입니다. 나열형의 경우는 예시만 보여드리고 자세한 설명은 다음 글에서 설명드리겠습니다.
enum Ranking {bronze, silver, gold}
Ranking one = Ranking.gold;
Ranking two = Ranking.silver;
Ranking three = Ranking.bronze;
문자열 자료형(string)
문자열을 데이터로 가지는 자료형입니다. 예시를 보시면 이해가 빠르실 수 있어 선언 방법을 먼저 보여드리겠습니다.
string warning = "The enemy is coming";
자료형은 string이고 이름은 warning이며 데이터는 The enemy is coming이 됩니다. 보시는 바와 같이 데이터에 어떠한 문장을 넣고 싶을 때 변수를 선언하기 위한 자료형입니다.
주소형(adress)
가상화폐 거래소를 이용해보셨거나 지갑을 만들어 보신 분들은 주소를 보셨을 겁니다. 주소의 크기는 20바이트 크기의 자료형으로 컨트랙트의 주소를 저장할 때 사용하는 자료형입니다.
address sender = 0x1234567890123456789012345678901234567890;
지금까지 Solidity언어에서 사용되는 자료형에 대하여 알아보았습니다. 다음 시간에는 위에서 설명 못 드린 enum 자료형에 대하여 설명하도록 하겠습니다. 감사합니다.