I have debated with myself about smart contract's admin keys and ownership and how this can occur in different ways. I will try to point some of the findings that I have found:
OpenZepellin community has developed ownership patterns and, as mentioned, one of the contracts - Ownable.sol - should be the most reused code for that purpose: https://hackernoon.com/ownership-and-access-control-in-solidity-nn7g3xo3
This blog entry mentioned three primary flavors of ownership driven by OpenZepellin contracts (Ownable.sol, Whitelist.sol and RBAC.sol): https://medium.com/coinmonks/guide-to-ownership-and-access-control-in-solidity-f2d99f63c6d4
In addition, I have seen that some contracts are linked with their proxies such as Paxos GOLD contract: https://etherscan.io/token/0x45804880De22913dAFE09f4980848ECE6EcbAf78#readProxyContract and again OpenZepellin has defined essentially three ways of proxying (Inherited, Eternal, and Unstructured Storages): https://blog.openzeppelin.com/proxy-patterns/
Considering this context, I have the following questions that we could discuss here:
It seems like we have orthogonal concepts here: contract ownerships and proxy contracts containing their owners. As a sanity checking, is it necessarily a proxy owner to be the same as the implementation contract's owner? (Assuming, e.g., the implementation contract inherited some of the mentioned interfaces from OpenZeppelin such as Ownable, etc.)
Have you seen any other interfaces other than OpenZepellin's that are also utilized by developers that need to deal with ownership relations?
If we wanted to track all ownership relations on the Ethereum blockchain, would there be more than enough parse calls of OpenZepellin contracts such as Ownable, etc., that tell about ownership assignment/revocation/transfer?
Is there any estimate on how broad in whole Ethereum history OpenZepellin's adoption versus something else on this aspect?