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)
- 마스터링 이더리움 (솔리디티 프로그래밍)
'블록체인 > 솔리디티' 카테고리의 다른 글
[솔리디티] 간단한 Smart Contract (코인 발행 예제) (0) | 2022.05.24 |
---|---|
[Solidity]Truffle, Ganache를 이용한 Smart Contract 작성 (0) | 2021.12.10 |
[Solidity] 함수 (0) | 2021.12.04 |
[Solidity] 구조체 & 배열 (0) | 2021.12.01 |
[Solidity] 솔리디티 쉽게 공부할만한 사이트 추천, 크립토 좀비 (0) | 2021.12.01 |