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

[솔리디티] 2. 변수, 상수, 불변, 상태변수 읽고 쓰기

by Danny_Kim 2022. 6. 6.

 

[NEW] 누구나 쉽게 따라하는 솔리디티 강의(솔리디티 버전 0.8.13)

1. Helloworld, 카운터컨트랙트, 데이터타입

2. 변수, 상수, 불변, 상태변수 읽고 쓰기

3. 이더 단위, 가스와 가스가격

4. 조건문, 반복문, 맵핑(mapping)

5. 배열, 열거형(enum), 구조체(calldata,memory) 

6. 데이터 저장공간, 함수(view,pure 속성)

7. 에러(error), 함수수정자(modifier)

8. 이벤트(events), 생성자(constructor), 상속

9. 상속, 섀도잉,super키워드 함수 속성들

10. 인터페이스(interface), payable, 이더전송,받기 관련

11. Fallback, Call, Delegate(솔리디티 업그레이드 기법)

12. 함수 선택자(function selector), 다른 컨트랙트 사용 및 생성기법

13. Try Catch, Import(임포트), Library(라이브러리)

14. ABI 디코드, hash 함수, 서명검증, 가스최적화

* 블록체인 전문가들도 놓치기 쉬운 비트코인, 이더리움의 핵심가치 강의

 

블록체인 전문가들도 놓치기 쉬운 비트코인, 이더리움의 핵심 가치 - 인프런 | 강의

블록체인 기획자,개발자,회사 대표라면 반드시 한번은 봐야 하는 강의입니다. 따로 공부할 시간이 없었다면, 이 요약본 강의를 통해서 비트코인,이더리움 백서의 핵심을 이해할 수 있습니다., -

www.inflearn.com

 

1. Variable (변수)

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

 1) local (지역변수)

    - 함수 안에 선언됨

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

 2) state (상태변수)

    - 함수 밖에 선언됨

    - 블록체인에 기록됨(저장됨)

 3) global (전역변수)

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

 

소스파일

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Variables {
    // State variables are stored on the blockchain.
    string public text = "Hello";
    uint public num = 123;

    function doSomething() public {
        // Local variables are not saved to the blockchain.
        uint i = 456;

        // Here are some global variables
        uint timestamp = block.timestamp; // Current block timestamp
        address sender = msg.sender; // address of the caller
    }
}

 

2. Constants(상수)

- constants(상수)는 수정될 수 없는 변수.

- constants로 하드 코딩된 값(value)은 가스 비용을 절약해 줌.

- 대문자로 코딩하는걸 추천.

 

소스파일

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Constants {
    // coding convention to uppercase constant variables
    address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;
    uint public constant MY_UINT = 123;
}

 

3. Immutable (불변)

 - constants와 유사함.

 - immutable 변수는 생성자(constructor) 안에 선언될 수 있으나 값이 수정될 순 없음.

4. 상태변수를 읽고 쓰기

 - 상태변수(state variable)을 write(쓰거나) update(업데이트) 하기 위해서는 트랜잭션(transaction)을 보내야 함. (가스비 발생)

 - 트랜잭션(transaction) 비용 (가스비) 없이 상태변수를 읽을 수 있음.

 - 아래 예제의 마지막 함수 get()에서 view 속성을 부여하여(트랜잭션요청없이) num의 상태변수를 가스비 없이 읽을 수 있음.

소스파일

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract SimpleStorage {
    // State variable to store a number
    uint public num;

    // You need to send a transaction to write to a state variable.
    function set(uint _num) public {
        num = _num;
    }

    // You can read from a state variable without sending a transaction.
    function get() public view returns (uint) {
        return num;
    }
}

 

예제파일 소스 : https://solidity-by-example.org/

 

블록체인 교육 문의는 아래 링크 참고 바랍니다. 

https://kimsfamily.kr/414

 

블록체인 교육 커리큘럼 및 프로필

안녕하세요 제 프로필을 간략하게 정리하였습니다. 비즈니스 문의는 dannykim@kakao.com 으로 연락주시기 바랍니다. 감사합니다. 프로필) 블록체인 강의 경력) 1. 블록체인 강의 (20년~현재) 2022년  -

kimsfamily.kr

 

반응형

댓글0