What is the purpose of the OpenZeppelin `Ownable` contract pattern?
-
A
To enable multi-signature governance for contract upgrades
-
B
To provide a standardized access control mechanism restricting certain functions to a designated owner address
-
C
To automatically distribute contract profits to token holders
-
D
To lock contract funds for a configurable time period