크립토 좀비로 공부하는 솔리디티 #02

이인수·2022년 3월 23일
0

TIL

목록 보기
26/26

(지난 블로깅) 크립토 좀비로 공부하는 솔리디티 #01


Chapter 3 : 상태 변수 & 정수

우리의 좀비 DNA는 16자리 숫자로 결정될 걸세.

dnaDigits라는 uint를 선언하고 16이라는 값을 배정해 보게.

이번 챕터에서는 솔리디티의 상태 변수정수를 배우기위한 내용이다.

정수부호 없는 정수(uint)부호 있는 정수(int)로 나뉜다.

변수

솔리디티에서는 세 가지의 변수타입이 존재한다.

  • 상태 변수(State Variable)
    상태 변수(State Variable)는 컨트랙트 저장소(이더리움 블록체인)에 영구적으로 저장되는 변수로 저장이 되면 DB에서 데이터를 쓰는 것과 동일한 형태로 구성된다.

  • 지역 변수(Local Variable)
    지역 변수(Local Variable)는 함수안에서 존재하는 변수로 함수가 실행될때까지만 존재하는 변수이다.

  • 전역 변수(Global Variable)
    전역 변수(Global Variable)는 이더리움 블록체인에서 제공하는 변수이며, 블록체인 및 트랜잭션에 대한 속성을 가져올 수 있는 변수다.

전역 변수(Global Variable)와 구분하는 변수명
솔리디티에서는 전역 변수와 함수명을 구분하기위해 전역 변수가 아닌 동일한 이름의 변수명에는 언더바(_)를 붙인다.


정수

위에서 설명한 것과 같이 솔리디티에서 정수는 부호 없는 정수(uint)부호 있는 정수(int)로 나뉜다.
부호 없는 정수(uint)란 unsigned integer로 양수를 말하고,
부호 있는 정수(int)양수 + 음수를 말한다.
각각(uint & int)은 8~256까지 값을 선언할 수 있다.

Ex. uint8 ~ uint256

이 숫자는 bit 수를 의미해서 8비트 ~ 256비트를 뜻한다. 비트는 0과 1(두 개. 2)의 값을 의미하고 0과 1이 표현할 수 있는 개수를 뜻한다.

Ex. uint8이라고 한다면, 2x2x2x2x2x2x2x2 = 256
즉, 256개의 숫자를 표현할 수 있다는 뜻

그런데 uint(양수)와 int(음수*양수)는 차이가 존재한다.

uint8 : 256까지의 수
int8 : -128~127까지의 수

"아니 그럼 int256으로만 쓰면 안돼?"
답은 안된다. 솔리디티는 저장소(블록체인)를 아끼기위해 굳이 이러한 정수 타입 방식을 사용한다.



다시 크립토좀비로 돌아가서

우리의 좀비 DNA는 16자리 숫자로 결정될 걸세.

dnaDigits라는 uint를 선언하고 16이라는 값을 배정해 보게.


이 챕터를 통해 느낀 점

내가 잘 알고있는 js의 경우. 변수에 값을 할당했을 때, 컴퓨터의 메모리 어딘가에 임시적으로 저장되는 것으로 알고있다.(틀리면 말씀주세요)
그에 반해 솔리디티는 이더리움 블록체인에 영구적으로 기록이 되는 특성이 신기했다.

또한, js에서 편하게만 쓰던 정수를 솔리디티에서는 타입별로 써야한다는 것이 새로웠다.
결론적으로 솔리디티는 수학을 잘해야한다..

0개의 댓글