STUDYING/Blockchain, Alt-coin

[Solidity] CryptoZombies로 Solidity 공부하기(1-3~4) | 상태변수 & 정수, 지수연산

지니리 2022. 4. 9. 15:30

앞에 글에서 컨트랙트를 위한 뼈대를 정리했다. 이번 글에서는 상태변수, 정수, 지수연산에 대해 정리할 것이다.

 

상태변수

 값이 contracts 저장소에 영구적으로 저장되는 변수이다. 즉 데이터베이스에 데이터를 쓰는 것과 동일하게 이더리움 블록체인에 영구적으로 기록된다. 

pragma solidity ^0.4.19;

contract ZombieFactory {

    uint dnaDigits = 16;

}

 Crypto Zombies 레슨 1 챕터 3에서 ZombieFactory 컨트랙트에서는 dnaDigits라는 uint를 생성해서 16이라는 값을 배정했다. 이로서 좀비DNA는 16 자릿수로 결정됐다는 의미이다.

 

부호 없는 정수: uint

 uint 자료형은 부호 없는 정수로, 값이 음수가 아니어야 한다. 부호가 있는 정수로는 int가 있다.

솔리디티에서 uint는 실제로 uint256, 즉 256비트 부호 없는 정수의 다른 표현이다. uint8, uint16, uint 32 등과 같이 8비트 단위로 키워드가 존재한다. 하지만 크립토좀비를 하면서 특수한 경우가 아니라면 일반적으로 단순히 uint를 사용한다고 한다.

 

지수연산

 솔리디티는 지수 연산도 가능하다. (즉, "x의 y승", x^y이다)

pragma solidity ^0.4.19;

contract ZombieFactory {

    uint dnaDigits = 16;
    uint dnaModulus = 10 ** dnaDigits;

}

 

: CryptoZombies에서 좀비 DNA가 16자리 숫자가 되도록 하기 위해 dnaModulus라는 또 다른 uint형 변수를 생성하고 10^16(10의 dnaDigits승) 값을 배정했다. 이후 다른 챕터에서 이 값을 모듈로 연산자 %와 함께 이용하여 16자리보다 큰 수를 16자리 숫자로 줄일 수 있게 된다.