I have a list of owners in a smart contract and would like to require a minimum number of their approvals in order to execute some administrative functions. What's the simplest way to implement it? I am between using Gnosis Safe + Ownable but I would rather find a simpler and cheaper (in terms of gas costs) solution (preferable already audited). Do you know of any examples? Thanks!
For the problem given, a simple governance contract would be the best, where there should be a function to propose (only by owners), vote (only by owners), and execute/cancel (only by owners). Execution of proposal itself should be very simple, checking if proposal is already executed, and execution of submitted target, value, method signature, and calldata.
For reference check:
Hord protocol implementation of a simple multisig: HordCongress.sol contract https://github.com/hord/smart-contracts/blob/master/contracts/governance/HordCongress.sol
Compound protocol implementation of governance contract: GovernorAlpha.sol contract https://github.com/compound-finance/compound-protocol/blob/master/contracts/Governance/GovernorAlpha.sol