실습: 생성자로 초기화하기
생성자는 배포 시점에 단 한 번 실행되어 컨트랙트의 초기 상태를 정합니다. 이후에는 다시 호출할 수 없으므로, "처음 한 번만 정하고 싶은 값"을 설정하기에 알맞습니다. 대표적인 예가 소유자(owner) 와 생성 시각 입니다.
생성자 안에서 msg.sender 는 컨트랙트를 배포한 주소를 가리키고, block.timestamp 는 그 블록의 시각(초 단위 Unix time)을 가리킵니다. 두 전역 값을 읽어 상태 변수에 저장하면, 배포된 순간의 맥락을 영구히 기록할 수 있습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Example {
address public deployer;
constructor() {
deployer = msg.sender; // 배포자를 기록하는 전형적인 패턴
}
}이번 실습에서는 생성자를 사용해 소유자와 생성 시각을 기록하는 컨트랙트를 만듭니다.
해야 할 일:
Owned 컨트랙트를 다음 조건에 맞게 완성하세요.
owner:address타입의 public 상태 변수createdAt:uint256타입의 public 상태 변수- 생성자 안에서
owner를 배포자(msg.sender)로 설정createdAt을 현재 블록 시각(block.timestamp)으로 설정
msg.sender 는 생성자 안에서 컨트랙트를 배포한 주소를 가리킵니다. block.timestamp 는 현재
블록의 타임스탬프(초 단위 Unix time)입니다.
완성 후 Run 을 눌러 모든 조건을 통과하는지 확인하세요.