블록체인 학습
0 XP

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 매핑의 값을 그대로 반환합니다. 쓰기에는 권한을 걸고 읽기는 누구에게나 열어 두는 구성입니다.

해야 할 일:

  1. address public owner 와 mapping(address => bool) public members 를 선언하세요.
  2. event MemberAdded(address member) 이벤트를 선언하세요.
  3. constructor 에서 owner = msg.sender 로 설정하세요.
  4. onlyOwner modifier: require(msg.sender == owner, "only owner") 후 _;.
  5. onlyOwner 가 적용된 addMember(address user) 함수: members[user] = true 로 등록하고 MemberAdded(user) 이벤트를 발생시키세요.
  6. isMember(address user) view 함수: 해당 주소의 가입 여부(bool)를 반환하세요.

isMember 에는 onlyOwner 를 붙이지 마세요. 회원 여부 조회는 누구나 할 수 있어야 하므로 권한 검사 없이 view 로만 선언합니다.

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

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

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