> For the complete documentation index, see [llms.txt](https://igra-labs.gitbook.io/igralabs-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://igra-labs.gitbook.io/igralabs-docs/igra-token/governance-and-treasury-control.md).

# Governance and Treasury Control

DAO Governor: [`0xB3300fcC2F3EF3DeCdF8B1f710c21666f33Cbf18`](https://explorer.igralabs.com/address/0xB3300fcC2F3EF3DeCdF8B1f710c21666f33Cbf18) (OpenZeppelin Governor).

## Governed contracts

| Contract               | Address                                                                                          | Upgradeable  |
| ---------------------- | ------------------------------------------------------------------------------------------------ | ------------ |
| VestingPools           | [`0xc9c8…80b`](https://explorer.igralabs.com/address/0xc9c88C5b4a0E5ae4C0812F3bc04A5FeA9ffC580b) | no           |
| Attestation Diamond    | [`0xc24D…188`](https://explorer.igralabs.com/address/0xc24Df70E408739aeF6bF594fd41db4632dF49188) | `diamondCut` |
| KasExitBridge          | [`0x4bb8…d0`](https://explorer.igralabs.com/address/0x4bb88C213d3eD9dc4bae694f1bc1bF745903b2d0)  | UUPS         |
| StakeRewardsController | [`0xF4BF…2c`](https://explorer.igralabs.com/address/0xF4BF5afdCC70eD80737778625Ddb1c0Ce89EC42c)  | no           |
| Fee contract           | [`0x0000…FEE`](https://explorer.igralabs.com/address/0x0000000000000000000000000000000000000FEE) | UUPS         |

IGRA token has no `owner()`, no pause, no upgrade path.

## What cannot be changed

These calls revert when made by the Governor:

| Action                                   | Function                | Revert                                                                          |
| ---------------------------------------- | ----------------------- | ------------------------------------------------------------------------------- |
| Change vesting start or duration         | `updatePoolTime`        | `VPools: non-adjustable`                                                        |
| Change pool beneficiary                  | `updatePoolWallet`      | `VPools: unauthorized`                                                          |
| Release another party's tokens           | `release` / `releaseTo` | `VPools: unauthorized`                                                          |
| Withdraw IGRA from non-beneficiary pools | `claimErc20`            | `VPools: too big amount` (pools 0-1 excluded — Governance is their beneficiary) |
| Create a new allocation pool             | `addVestingPools`       | `VPools: supply exceeded`                                                       |
| Mint above 10,000,000,000                | `mint`                  | `ERC20ExceededCap`                                                              |

All ten pools have `isAdjustable = false`. Pool allocations sum to the 10B cap.

## What can be changed via DAO governance

### Attestation Diamond

Config facet [`0x50ef…79e`](https://explorer.igralabs.com/address/0x50efc828fe0d03e4fc1a9077aff1a7a5a1b5679e):

| Function                           | Parameter                                           | Current                  |
| ---------------------------------- | --------------------------------------------------- | ------------------------ |
| `updateMinStake`                   | minimum attester stake                              | 400,000 IGRA             |
| `updateTimingParams`               | exit cooldown / activation delay / penalty cooldown | 8,200 / 7,200 / — blocks |
| `updateSlashParams`                | slashing ratios                                     | —                        |
| `updateMissedPenaltyParams`        | missed-attestation penalties                        | —                        |
| `updateInvalidWindowPenaltyParams` | invalid-window penalties                            | —                        |
| `updateMinEffectiveBalanceParams`  | min effective balance ratio                         | —                        |
| `updateGasParams`                  | gas-refund buffers, max refundable gas              | —                        |
| `updateRestakeFeeRate`             | restake fee                                         | —                        |

### KasExitBridge

| Function                 | Parameter                                       | Current |
| ------------------------ | ----------------------------------------------- | ------- |
| `setFeePolicy`           | exit fee                                        | 0       |
| `setExitAmountPolicy`    | min / max exit amount                           | —       |
| `setThrottleParams`      | window blocks, max exits, max unlock per window | —       |
| `setFeeClaimer`          | fee recipient                                   | —       |
| `setKaspaBridgeEndpoint` | L1 endpoint                                     | —       |
| `claimFees`              | withdraw accrued fees                           | —       |
| `rescueExcessIKas`       | withdraw excess iKAS                            | —       |

### StakeRewardsController

| Function          | Parameter                     |
| ----------------- | ----------------------------- |
| `setEmissionRate` | attester reward emission rate |
| `releaseTo`       | transfer rewards              |
| `rescueToken`     | withdraw a token              |

### Fee contract

`updateReleaser`, `releaseTo`, `releaseToOrRevert`.

## Code upgrades

| Contract            | Mechanism                           | Scope                            |
| ------------------- | ----------------------------------- | -------------------------------- |
| Attestation Diamond | `diamondCut(tuple[],address,bytes)` | add, replace or remove any facet |
| KasExitBridge       | `upgradeToAndCall(address,bytes)`   | replace implementation           |
| Fee contract        | `upgradeToAndCall(address,bytes)`   | replace implementation           |

`LOCK_PERIOD_BLOCKS = 15,552,000` is an internal constant in `src/attestation/Constants.sol`. No setter modifies it. Replacing the Staking facet via `diamondCut` does.

VestingPools has no upgrade function.

## Governance parameters

| Parameter          | Value                                                                                           |
| ------------------ | ----------------------------------------------------------------------------------------------- |
| Voting token       | [`0x50BA…39`](https://explorer.igralabs.com/address/0x50BAc71D1B32Fa6030007b5E72dbBB4fF48c1B39) |
| Clock              | block number                                                                                    |
| Voting delay       | 43,200 blocks (\~12.5 h)                                                                        |
| Voting period      | 345,600 blocks (\~4.16 days)                                                                    |
| Proposal threshold | 400,000 votes                                                                                   |
| Quorum             | \~46,500,000 votes                                                                              |
| Timelock           | none                                                                                            |
| Execution delay    | none                                                                                            |

Proposal to executable: \~4.7 days. No post-vote delay.

## Treasury addresses

| Address                                                                                                                          | Label                   |
| -------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
| [`0xB3300fcC2F3EF3DeCdF8B1f710c21666f33Cbf18`](https://explorer.igralabs.com/address/0xB3300fcC2F3EF3DeCdF8B1f710c21666f33Cbf18) | DAO Governance          |
| [`0xC3409E999fF3E33Fe975E85dab7258F7fe28E1c2`](https://explorer.igralabs.com/address/0xC3409E999fF3E33Fe975E85dab7258F7fe28E1c2) | Association Pool Wallet |
| [`0x90870B1017f3FcbB11647BF563F3c2333EA8a2c2`](https://explorer.igralabs.com/address/0x90870B1017f3FcbB11647BF563F3c2333EA8a2c2) | Association Treasury    |
| For full governance mechanics (proposals, voting, delegation), see [Igra DAO](/igralabs-docs/igra-dao.md).                       |                         |
