Chapter 11 마무리 테스트
이 차시에서 배운 접근 제어 도구를 모두 활용해 회원 관리 컨트랙트를 완성하세요.
owner 권한, modifier, require, msg.sender, 이벤트를 종합적으로 사용합니다.
권한 검사와 이벤트
constructor 에서 msg.sender 를 owner 로 저장하고, onlyOwner modifier 가
require(msg.sender == owner, ...) 로 권한을 검사합니다. 회원을 추가하는 addMember 는 owner 만
호출할 수 있어야 하며, 등록이 성공하면 emit MemberAdded(user); 로 이벤트를 발생시켜
오프체인에서 추적할 수 있게 합니다.
조회용 isMember 는 상태를 바꾸지 않으므로 view 함수로 선언해 members 매핑의 값을 그대로
반환합니다. 쓰기에는 권한을 걸고 읽기는 누구에게나 열어 두는 구성입니다.
해야 할 일:
address public owner와mapping(address => bool) public members를 선언하세요.event MemberAdded(address member)이벤트를 선언하세요.constructor에서owner = msg.sender로 설정하세요.onlyOwnermodifier:require(msg.sender == owner, "only owner")후_;.onlyOwner가 적용된addMember(address user)함수:members[user] = true로 등록하고MemberAdded(user)이벤트를 발생시키세요.isMember(address user)view 함수: 해당 주소의 가입 여부(bool)를 반환하세요.
isMember 에는 onlyOwner 를 붙이지 마세요. 회원 여부 조회는 누구나 할 수 있어야 하므로 권한
검사 없이 view 로만 선언합니다.
완성 후 Run 을 눌러 모든 조건을 통과하는지 확인하세요.