# Governance

Ensuro leverages Multisig and Timelock contracts to provide transparency and security for the protocol.

No major changes to the protocol will ever be made without first going through an internal vetting process that requires sign-off from several senior staff members and a public announcement with an appropriate warning period enforced by a [TimelockController smart contract](https://docs.openzeppelin.com/contracts/4.x/api/governance#TimelockController).

### Timelocks

Timelocks require a change to be published on the blockchain in advance. The timelock enforces a minimum waiting period for execution once the change has been proposed, and only authorized accounts or contracts can propose changes.

The Timelock contracts currently in use in Ensuro are these:

<table><thead><tr><th width="156">Name</th><th width="324">Delegated roles</th><th width="77">Min. Delay</th><th>Authorized proposers</th></tr></thead><tbody><tr><td><a href="https://polygonscan.com/address/0xc0D3EcAcEBE2A8f2268D3FAE616f9DD1B94e81a2">ADMIN_TL</a></td><td><ul><li>DEFAULT_ADMIN_ROLE</li><li>LEVEL1_ROLE</li><li>LEVEL2_ROLE</li></ul></td><td>4 days</td><td>ADMINS_MULTISIG</td></tr><tr><td><a href="https://polygonscan.com/address/0x371d67Ee31f6bfcDF13C7fa0CC9cC2C7080Ac666">LEVEL2_TL</a></td><td><ul><li>LEVEL2_ROLE</li><li>LP_WHITELIST_ADMIN_ROLE_ADMIN</li></ul></td><td>18 hours</td><td>ADMINS_MULTISIG</td></tr><tr><td><a href="https://polygonscan.com/address/0x76934cd2648594488a1378AC769D639933623D2a">OPERATIONAL_TL</a></td><td><ul><li>WITHDRAW_WON_PREMIUMS_ROLE</li><li>RESOLVER_ROLE_ADMIN</li><li>POLICY_CREATOR_ROLE_ADMIN</li></ul></td><td>6 hours</td><td>ADMINS_MULTISIG</td></tr></tbody></table>

Each timelock acts as its own admin, and proposals can be executed by one of several company EOAs once they've been scheduled and the lock time has elapsed.

No accounts, besides the Timelock contracts enumerated here, are granted the `DEFAULT_ADMIN`, `LEVEL1` or `LEVEL2` roles at the protocol level.&#x20;

Some of the RiskModules have the `LEVEL1` and `LEVEL2` component-specific roles delegated directly to a Multisig in some cases to allow for faster product repricing. This exception depends on the agreement with the risk partner that the RiskModule belongs to and the maturity of the product.

### Multisigs

<table><thead><tr><th width="203">Name</th><th>Description</th><th>Members</th></tr></thead><tbody><tr><td><a href="https://app.safe.global/settings/setup?safe=matic:0xCfcd29CD20B6c64A4C0EB56e29E5ce3CD69336D2">ADMINS_MULTISIG</a></td><td><p>Main admin multisig.<br></p><p>Requires at least 3 signatures from senior staff.<br></p><p>Permissions:</p><ul><li>Propose transactions on <a href="#timelocks">timelocks</a></li><li><a href="/pages/DhWlElutmMS8ZfqfVCPY">LEVEL3_ROLE</a> at protocol level</li><li><a href="/pages/DhWlElutmMS8ZfqfVCPY">LEVEL2_ROLE</a> on some RiskModules</li><li>Role admin on <a href="/pages/4hKaMHBJJZhWxFFYmncP#note-on-risk-module-roles">PRICER_ROLE</a></li><li>DEFAULT_ADMIN_ROLE and GUARDIAN_ROLE on some <a href="/pages/q7oOtngIQz1zLMUQQ9jN#peripheral-contracts">Peripheral contracts</a> (mainly <a href="/pages/5mbFTsIEay13Je0AplC4">CashflowLenders</a>)</li></ul></td><td><ul><li><a href="https://www.linkedin.com/in/colin-mcqueen-55454b13/">Colin McQueen (CFO)</a></li><li><a href="https://www.linkedin.com/in/gnpar/">Gabriel Parrondo (CISO)</a></li><li><a href="https://www.linkedin.com/in/gian-giacomo-della-torre/">Gian Giacomo della Torre (CRO)</a></li><li><a href="https://www.linkedin.com/in/guillermonarvaja/">Guillermo Narvaja (CTO)</a></li><li><a href="https://www.linkedin.com/in/luca-mungo-a26278103/">Luca Mungo (CSO)</a></li><li><a href="https://www.linkedin.com/in/marco-mirabella/">Marco Mirabella (CEO)</a></li></ul></td></tr><tr><td><a href="https://app.safe.global/settings/setup?safe=matic:0x2f8CD0Dc0393139E1AFAED51F629F77A7dfB955d">GUARDIAN_TEAM_1</a></td><td><p>Emergency operations multisig 1. <br><br>Requires approval from all members.<br><br>Used for emergency protocol pausing or unpausing.<br><br>Permissions:</p><ul><li><a href="/pages/DhWlElutmMS8ZfqfVCPY">GUARDIAN_ROLE</a> at protocol level</li></ul></td><td><ul><li><a href="https://www.linkedin.com/in/gnpar/">Gabriel Parrondo (CISO)</a></li><li><a href="https://www.linkedin.com/in/marco-mirabella/">Marco Mirabella (CEO)</a></li></ul></td></tr><tr><td><a href="https://app.safe.global/settings/setup?safe=matic:0x89735E8f678Fe72A31402d04595d36044b80909B">GUARDIAN_TEAM_2</a></td><td><p></p><p>Emergency operations multisig 2. <br><br>Requires approval from all members.<br><br>Used for emergency protocol pausing or unpausing.<br><br>Permissions:</p><ul><li><a href="/pages/DhWlElutmMS8ZfqfVCPY">GUARDIAN_ROLE</a> at protocol level</li></ul></td><td><ul><li><a href="https://www.linkedin.com/in/colin-mcqueen-55454b13/">Colin McQueen (CFO)</a></li><li><a href="https://www.linkedin.com/in/guillermonarvaja/">Guillermo Narvaja (CTO)</a></li></ul></td></tr></tbody></table>

### Transaction signing

All members of the multisigs must use secure hardware wallets or isolated environments for signing transactions. This is audited internally as part of our compliance program with the Bermuda Monetary Authority.

Transactions are signed using [Safe Wallet Multisigs](https://safe.global/) as documented above.

All critical transactions, such as upgrades or major parameter changes, must require at least 3 different senior staff members to sign.

### Restricted Executor

In some cases, we have integrated our monitoring system (Ensuro Forta Bot, Forta feeds, Openzeppelin Defender sentinels and internal transaction monitoring) into our automated incident response.

This requires a service account to have the ability to instantly pause the protocol in reaction to some alerts.

Given that our GUARDIAN\_ROLE, which is the one used for pausing, can also unpause and upgrade contracts, we have created an intermediate contract called [Restricted Executor ](https://github.com/ensuro/restricted-executor?tab=readme-ov-file)that allows us to delegate a single operation instead of a full role.

| Name                                                                                               | Permissions                                                                                                                                                | Authorized operations                                                                                                                                |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| [RESTRICTED\_EXECUTOR](https://polygonscan.com/address/0x174F4498aF0a5102234Ad24d16Ed6E698E48Fa65) | <ul><li><a href="/pages/DhWlElutmMS8ZfqfVCPY">GUARDIAN\_ROLE</a> on specific <a href="/pages/z9KRyaffiD2VbTESXXzT">PremiumsAccount</a> contracts</li></ul> | <ul><li>pause() authorized to an <a href="https://polygonscan.com/address/0x11Ca23Ef7d05fF86EECd8FE8324f35693bd27Cc9">operational EOA</a>.</li></ul> |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ensuro.co/ensuro-docs/smart-contracts/governance.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
