블록체인 학습
0 XP

데이터를 저장하는 상태 변수

컨트랙트가 기억하는 데이터를 상태 변수(state variable)라고 합니다. 컨트랙트 안에 적어 두면 블록체인에 저장되어, 나중에 다시 읽어도 그대로 남아 있습니다. 방금 작성한 첫 컨트랙트의 greeting도 바로 이 상태 변수였습니다.

상태 변수의 모양

상태 변수는 보통 타입 + 가시성 + 이름 + 초기값 순서로 적습니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
contract Profile {
    string public name = "Satoshi";
    uint256 public age = 30;
}
  • string은 글자, uint256은 0 이상의 정수를 담는 타입입니다. (uint256은 매우 큰 양의 정수까지 저장할 수 있습니다.)
  • public을 붙이면 바깥에서 그 값을 읽을 수 있고, 조회용 통로가 자동으로 만들어집니다.

타입은 담을 값에 맞춰 고릅니다. 나이나 개수, 잔액처럼 음수가 될 수 없는 값에는 보통 uint256을 쓰고, 글자에는 string, 참/거짓에는 bool을 씁니다.

쓰기와 읽기의 비용 차이

상태 변수에 값을 저장하거나 바꾸는 것은 곧 블록체인의 상태를 바꾸는 일입니다. 앞에서 배웠듯, 상태를 바꾸는 동작은 트랜잭션이고 gas가 듭니다. 반대로 public 변수의 값을 그냥 읽기만 하는 조회는 거의 공짜입니다.

오른쪽 에디터에서 name이나 age 값을 바꿔 Run 해보세요. 저장된 값이 그대로 보일 것입니다.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.