# Ownership and Roles

Although you - and only you - are the Owner of your CryptoLegacy personal contract, there are other contracts within the protocol.

We use a flexible yet reliable role-based approach to manage these contracts. Various DAO multisigs include signers from the Core team, Protocol partners, and Top Security Firms.

Role names are simplified as:

* Msig 1.
* Msig 2.
* Msig 3.&#x20;

Detailed information about their associated multisig wallets can be found in separate articles.

The table below lists the contracts, their functions, and the roles assigned to each. Every function is protected by a **personal timelock for execution**.

<table><thead><tr><th width="239.64453125">Contract</th><th width="376.015625">Function</th><th width="304.703125">Purpose</th><th width="86.5703125">Role</th><th width="112.9453125">Timelock</th></tr></thead><tbody><tr><td>BuildManagerOwnable</td><td>setBuildManager()</td><td>Adds or removes a build manager address. Only the owner can call.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>CryptoLegacyBuildManager</td><td>setRegistries()</td><td>Sets references to the fee registry, plugins registry, and beneficiary registry.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>CryptoLegacyBuildManager</td><td>setFactory()</td><td>Sets the factory contract.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>CryptoLegacyBuildManager</td><td>setSupplyLimit()</td><td>Sets the supply limit for lifetime NFTs, after which multiple mints without a lock become possible.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>CryptoLegacyBuildManager</td><td>setExternalLens()</td><td>Sets the external lens contract address.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>CryptoLegacyBuildManager</td><td>withdrawFee()</td><td>Withdraws fee from the contract to a recipient.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>CryptoLegacyFactory</td><td>setBuildOperator()</td><td>Adds or removes an allowed operator to build CryptoLegacy contracts.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>FeeRegistry</td><td>setCodeOperator()</td><td>Sets a operator address, that can manage referral codes.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>FeeRegistry</td><td>setSupportedRefCodeInChains()</td><td>Adds or removes supported chain IDs for referral codes.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>FeeRegistry</td><td>setFeeBeneficiaries()</td><td>Sets the custom fee beneficiaries for the registry.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>FeeRegistry</td><td>setDefaultPct()</td><td>Sets the default discount and share percentages.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>FeeRegistry</td><td>setRefererSpecificPct()</td><td>Sets referral-specific discount and share percentages.</td><td>Msig 2</td><td>0 days</td></tr><tr><td>FeeRegistry</td><td>setContractCaseFee()</td><td>Sets the fee for a particular contract case.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>LifetimeNft</td><td>setBaseUri()</td><td>Sets a new base URI for the tokens.</td><td>Msig 2</td><td>0 days</td></tr><tr><td>LifetimeNft</td><td>setMinterOperator()</td><td>Grants or revokes permission to mint new tokens.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>LockChainGate</td><td>setDebridgeGate()</td><td>Sets the deBridgeGate contract.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>LockChainGate</td><td>setDebridgeNativeFee()</td><td>Sets the native fee for a specific chain.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>LockChainGate</td><td>setDestinationChainContract()</td><td>Sets the destination chain contract.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>LockChainGate</td><td>setSourceChainContract()</td><td>Sets the source chain contract.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>LockChainGate</td><td>setSourceAndDestinationChainContract()</td><td>Sets both the source and destination chain contracts to the same address.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>LockChainGate</td><td>setLockPeriod()</td><td>Sets the NFT lock period.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>LockChainGate</td><td>setReferralCode()</td><td>Sets the referral code for deBridge.</td><td>Msig 2</td><td>0 days</td></tr><tr><td>LockChainGate</td><td>setCustomChainId()</td><td>Sets a custom chain ID.</td><td>Msig 2</td><td>5 days</td></tr><tr><td>PluginsRegistry</td><td>addPlugin()</td><td>Registers a plugin and logs a description block number.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>PluginsRegistry</td><td>addPluginDescription()</td><td>Adds a new descriptive note for an already-registered plugin.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>PluginsRegistry</td><td>removePlugin()</td><td>Deregisters a plugin.</td><td>Msig 3</td><td>5 days</td></tr><tr><td>SignatureRoleTimelock</td><td>setMaxExecutionPeriod()</td><td>Sets the maximum allowable execution period for scheduled calls.</td><td>Msig 1.</td><td>0 days</td></tr><tr><td>SignatureRoleTimelock</td><td>setRoleAccounts()</td><td>Manages role-account associations by adding, removing, or updating accounts for specified roles.</td><td>Msig 1.</td><td>0 days</td></tr><tr><td>SignatureRoleTimelock</td><td>cancelCallList()</td><td>Cancels scheduled contract calls.</td><td>Msig 1.</td><td>0 days</td></tr></tbody></table>


---

# 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.cryptolegacy.app/dao-rights-architecture/ownership-and-roles.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.
