실습: constant와 immutable 선언하기
변경 불가능한 값을 만드는 두 방식, constant와 immutable을 직접 선언해 보겠습니다.
언제 어느 것을 쓰는가
constant는 컴파일 시점에 이미 아는 고정값에 씁니다. 버전 번호처럼 코드에 미리 박아 둘 수 있는 값이 대표적입니다. 반드시 선언과 동시에 값을 지정해야 합니다.
반면 immutable은 배포 시점에 결정되는 값에 씁니다. 배포자 주소(msg.sender)처럼 배포해 봐야 아는 값을 생성자에서 한 번 설정하면, 이후로는 절대 바꿀 수 없습니다.
Solidity 0.8.21 부터는 immutable 변수도 선언과 동시에 초기화할 수 있습니다. 다만 msg.sender
처럼 배포해 봐야 아는 값은 여전히 생성자에서 대입해야 하므로, 이번 실습에서는 생성자 방식을
연습합니다.
생성자에서 immutable 설정
msg.sender처럼 배포해 봐야 아는 값은 constructor 안에서 대입하는 것이 일반적입니다. 이렇게 하면 컨트랙트를 배포한 계정의 주소가 그대로 고정되므로, 소유자를 정하는 패턴에 자주 쓰입니다.
해야 할 일:
Config컨트랙트 안에uint256타입의VERSION상태 변수를public constant로 선언하고 값을1로 설정하세요.address타입의deployer상태 변수를public immutable로 선언하세요.- 생성자(
constructor)에서deployer에msg.sender를 대입하세요.
constant 는 컴파일 시점에, immutable 은 배포 시점에 값이 고정됩니다. 이번 실습의 deployer 처럼
배포자 주소를 담아야 하는 값은 생성자에서 msg.sender 를 대입하세요.
완성 후 Run 을 눌러 컴파일하고, 모든 조건을 통과하는지 확인하세요.