Incognito Project

[Incognito Project] 솔리디티 문법 04 - 변수(Variable)

이유갬 2022. 9. 25. 17:33

1. Variable(변수)

1. local(지역변수)

- 함수 안에 선언됨.

- 블록체인에 기록되지 않음.

2. state(상태변수)

- 함수 밖에서 선언됨.

- 블록체인에 기록됨.

3. global(전역변수)

- 블록체인에 관한 정보를 제공함.

contract Lottery is VRFConsumerBase, Ownable {
//상태 변수 : 블록에 기록됨.
address payable[] public players;
address payable public recentWinner;
uint256 public randomness;
uint256 public usdEntryFee;
    function doSomething() public {
    //지역 변수 : 블록에 기록되지 않음.
    uint i = 456;

    //전역 변수
    uint timestamp = block.timestamp; // Current block timestamp
    address sender = msg.sender; // address of the caller
    }
}

 

2. Constants(상수)

- 수정될 수 없는 변수

- 상수로 하드코딩 된 값은 가스 비용을 절약해줌.

- 대문자로 코딩하는 것을 권장함.

contract Constants {
    address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;
    uint public constant MY_UINT = 123;
}

 

3. immutable(불변)

- 상수와 유사함.

- Immutable 변수는 생성자 안에서 선언될 수 있으나 값이 수정될 순 없음.

 

4. 상태 변수 읽고 쓰기

- 상태 변수를 쓰거나 업데이트 하기 위해서는 트랜잭션이 필요함. -> 가스 비용 발생

- 트랜잭션 없이 상태 변수를 읽을 수 있음.

function get() public view returns (uint) {
        return num;
    }

- view 속성을 이용하여 가스 비용 없이 num 의 값을 읽을 수 있음.