Access Control

  1. Ownable

  2. Role-based

    왜: 역할 분산 -> 최소 권한 원칙

    1. DEFAULT_ADMIN_ROLE은 constructor에서 직접 해야함. 안 하면, 컨트랙트 사용 못 함.
    2. 모든 role의 admin은 0x00으로 시작.
    3. role의 admin도 바꿀 수 있음. (처음 배포자가 하고, 나중에는 변경된 계정이 함)
    4. grantRole, revokeRole은 role의 admin만 실행할 수 있음.

    revoke: 관리자가 다른 사람의 권한을 뺏는 것

    renounce: 자신이 권한을 포기. 신뢰하던 기기를 분실 or 계정 해킹했을 때 같은 상황을 위한 것.