A smart contract is designed to manage roles for a decentralized application, including 'admin' and 'user'. The contract owner should be able to grant and revoke these roles. Following the Principle of Least Privilege, which access control design pattern is most appropriate for this scenario?
-
A
A single 'onlyOwner' modifier for all administrative functions.
-
B
Role-Based Access Control (RBAC) with distinct roles and permissions.
-
C
Making all role management functions 'public' for transparency.
-
D
A timelock mechanism delaying every function call.