블록체인 학습
0 XP

실습: constant와 immutable 선언하기

변경 불가능한 값을 만드는 두 방식, constant와 immutable을 직접 선언해 보겠습니다.

언제 어느 것을 쓰는가

constant는 컴파일 시점에 이미 아는 고정값에 씁니다. 버전 번호처럼 코드에 미리 박아 둘 수 있는 값이 대표적입니다. 반드시 선언과 동시에 값을 지정해야 합니다.

반면 immutable은 배포 시점에 결정되는 값에 씁니다. 배포자 주소(msg.sender)처럼 배포해 봐야 아는 값을 생성자에서 한 번 설정하면, 이후로는 절대 바꿀 수 없습니다.

Solidity 0.8.21 부터는 immutable 변수도 선언과 동시에 초기화할 수 있습니다. 다만 msg.sender 처럼 배포해 봐야 아는 값은 여전히 생성자에서 대입해야 하므로, 이번 실습에서는 생성자 방식을 연습합니다.

생성자에서 immutable 설정

msg.sender처럼 배포해 봐야 아는 값은 constructor 안에서 대입하는 것이 일반적입니다. 이렇게 하면 컨트랙트를 배포한 계정의 주소가 그대로 고정되므로, 소유자를 정하는 패턴에 자주 쓰입니다.

해야 할 일:

  1. Config 컨트랙트 안에 uint256 타입의 VERSION 상태 변수를 public constant 로 선언하고 값을 1 로 설정하세요.
  2. address 타입의 deployer 상태 변수를 public immutable 로 선언하세요.
  3. 생성자(constructor)에서 deployer 에 msg.sender 를 대입하세요.

constant 는 컴파일 시점에, immutable 은 배포 시점에 값이 고정됩니다. 이번 실습의 deployer 처럼 배포자 주소를 담아야 하는 값은 생성자에서 msg.sender 를 대입하세요.

완성 후 Run 을 눌러 컴파일하고, 모든 조건을 통과하는지 확인하세요.

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

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