본문 바로가기
블록체인/솔리디티

[Solidity] 변수 및 데이터 타입

by 발담그는블로그 2021. 12. 1.

Solidity에는 크게 상태변수(State Variable), 지역변수(Local Variable), 전역변수(Global Variable) 총 3가지 변수가 있다.

 

변수

상태변수 (State Variable)

상태 변수는 DB안에 있는 데이터처럼, 컨트랙트 저장소(이더리움 블록체인)에 영구적으로 저장되는 변수를 의미한다. 

pragma solidity ^0.4.19;

contract ZombieFactory {

	uint a = 1;
}

 

지역변수 (Local Variable)

지역변수는 함수가 실행될때까지만 존재하는 변수다.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData; // State variable
   constructor() public {
      storedData = 10;   
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return result; //access the local variable
   }
}

 

전역변수 (Global Variable)

솔리디티에서 전역변수는 다른 언어의 전역변수와는 약간 느낌이 다르다. 전역변수는 글로벌한 블록체인안에 있는 변수며, 블록체인 및 트랜잭션에 대한 속성을 가져올 수 있는 변수다. 

NameReturns Returns
blockhash(uint blockNumber) returns (bytes32) Hash of the given block - only works for 256 most recent, excluding current, blocks
block.coinbase (address payable) Current block miner's address
block.difficulty (uint) Current block difficulty
block.gaslimit (uint) Current block gaslimit
block.number (uint) Current block number
block.timestamp (uint) Current block timestamp as seconds since unix epoch
gasleft() returns (uint256) Remaining gas
msg.data (bytes calldata) Complete calldata
msg.sender (address payable) Sender of the message (current caller)
msg.sig (bytes4) First four bytes of the calldata (function identifier)
msg.value (uint) Number of wei sent with the message
now (uint) Current block timestamp
tx.gasprice (uint) Gas price of the transaction
tx.origin (address payable) Sender of the transaction

 

데이터 타입

- 부울(bool): true or false

- 정수(int, uint): int는 부호 있는 정수, uint는 부호 없는 정수. int8에서 uint256까지 8비트씩 증가함. 

- 고정소수점: (u)fixedMxN으로 선언된 고정소수점 숫자. M은 비트 단위의 크기(8부터 256)이고, N은 소수점 이사 하릿수(최대 18)

- 주소: 20바이트 이더리움 주소. address 객체에는 유용한 멤버 함수가 많이 있으며, 주요 함수는 balance(계정 잔액 반환)와 transfer(이더 계정으로 전송)

- 바이트 배열 (고정 크기): bytes1에서 bytes32

- 바이트 배열 (가변 크기): bytes 또는 string

- 열거형: enum 등

- 배열: 모든 유형의 고정 또는 동적 배열 []. ex uint32[][5] => 부호 없는 정수의 동적 배열 5개로 이루어진 고정 크기 배열

- 구조체: 변수 그룹화를 위한 사용자 정의 데이터 컨테이너. ex) struct.

- 매핑: 키 => 값 쌍에 대한 해시 조회 테이블. ex) mapping

- 시간 단위: seconds, minutes, hours, days

- 이더 단위: wei, finney, szabo, ether

 

레퍼런스

- 크립토좀비 (https://cryptozombies.io/ko)

- 튜터리얼 포인트 (https://www.tutorialspoint.com/solidity/solidity_variables.htm)

- 마스터링 이더리움 (솔리디티 프로그래밍)

반응형