> For the complete documentation index, see [llms.txt](https://docs.brila.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.brila.finance/brila-dat/reference/parameters.md).

# Protocol parameters

This page separates constructor defaults from mainnet values read on **2026-07-23**. Owner-mutable values can change later. Values are 1e18 fixed-point unless noted. Source of truth: `contracts/BrilaDATRebaser.sol`.

## Rebase policy

| Parameter                   | Constructor default | Live mainnet        | Cap / constraint                                    | Meaning                                                                              |
| --------------------------- | ------------------- | ------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------ |
| `targetRate`                | `1e18`              | `1e18`              | `> 0`; **immutable in USD mode** (= $1.00/DAT, F20) | The peg target.                                                                      |
| `deviationThreshold`        | `5e16` (5%)         | `5e16` (5%)         | `<= 5e17` (50%)                                     | No supply change when deviation is strictly below this; exactly 5% is actionable.    |
| `rebaseLag`                 | `10`                | `10`                | `> 0`                                               | Off-peg % is divided by this per rebase (damping).                                   |
| `rebaseMintPerc`            | `1e17` (10%)        | `1e17` (10%)        | `<= 1e18`                                           | Share of a positive rebase minted toward the treasury.                               |
| `maxSlippageFactor`         | `9e17` (90%)        | `9e17` (90%)        | `(0, 1e18]`                                         | Share of the positive-rebase mint budget sold; existing treasury DAT funds it first. |
| `minRebaseTimeIntervalSec`  | `12h`               | `43200` (`12h`)     | window must fit interval                            | Minimum spacing between rebases.                                                     |
| `rebaseWindowOffsetSec`     | `28800` (08:00 UTC) | `28800` (08:00 UTC) | `< minInterval`                                     | Start of the twice-daily rebase window (08:00 and 20:00 UTC at the 12h interval).    |
| `rebaseWindowLengthSec`     | `1h`                | `3600` (`1h`)       | `(0, minInterval]`                                  | Length of the rebase window.                                                         |
| `rebaseDelay` (TWAP warmup) | `12h`               | `3600` (`1h`)       | unbounded                                           | Delay after `init_twap` before `activate_rebasing`.                                  |

## Oracles

| Parameter                    | Constructor default                | Live mainnet  | Cap / constraint                                              | Meaning                                                                       |
| ---------------------------- | ---------------------------------- | ------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| `usdPegMode`                 | constructor                        | `true`        | **immutable**                                                 | True iff a reserve/USD oracle was set at deploy.                              |
| `reserveUsdOracle`           | constructor                        | Perp adapter  | USD mode: rotatable via 24h timelock; never unsettable        | Primary reserve→USD feed; see [addresses](/brila-dat/reference/addresses.md). |
| `secondaryReserveUsdOracle`  | constructor                        | Spot adapter  | USD mode: **required**, distinct from primary; 24h-timelocked | Independent reserve→USD feed; bracketed every rebase.                         |
| `maxReserveOracleAge`        | `1h`                               | `3600` (`1h`) | USD mode: `[1m, 2h]`                                          | Staleness bound for both reserve/USD feeds.                                   |
| `maxCommitRevealOracleDrift` | `2e16` (2%)                        | `2e16` (2%)   | USD mode: `[5e15, 1e17]` (0.5%–10%)                           | Max reserve/USD move tolerated between commit and reveal.                     |
| `secondaryOracleEnabled`     | `false`                            | `false`       | owner toggle; not required to activate                        | Optional Chainlink bracket on the **pool-TWAP** leg.                          |
| `secondaryOracle`            | `0` (set via `setSecondaryOracle`) | `0`           | —                                                             | The TWAP-leg sanity oracle (both modes).                                      |
| `maxOracleDeviation`         | `1e17` (10%)                       | `1e17` (10%)  | `[5e15, 2e17]` (0.5%–20%)                                     | Tolerance for the oracle brackets (TWAP-leg and the USD dual-feed bracket).   |
| `maxSecondaryOracleAge`      | `1h`                               | `3600` (`1h`) | `[1m, 2h]`                                                    | Staleness bound for the TWAP-leg oracle.                                      |

## Constants (not configurable)

| Constant                | Value   | Meaning                                                      |
| ----------------------- | ------- | ------------------------------------------------------------ |
| `MIN_TWAP_WINDOW`       | `1h`    | `_getTWAP()` reverts on a shorter sample window.             |
| `COMMIT_BLOCKS`         | `25`    | Min blocks between `commitRebase` and `revealAndRebase`.     |
| `REVEAL_BLOCKS`         | `50`    | Reveal may land through commit block + 50; it expires after. |
| `MAX_RATE`              | `10e18` | Off-peg percentage cap (1000%).                              |
| `ORACLE_ROTATION_DELAY` | `24h`   | Timelock on reserve/USD feed rotations.                      |

## Token constants (`DAT`)

| Constant                                             | Value                                                      |
| ---------------------------------------------------- | ---------------------------------------------------------- |
| `BASE` (fragment precision / genesis scaling factor) | `1e18`                                                     |
| `INTERNAL_DECIMALS` (underlying precision)           | `1e24`                                                     |
| `MIN_SCALING_FACTOR`                                 | `1e15` (0.001×)                                            |
| `maxScalingFactor()`                                 | `type(uint256).max / initSupply` (shrinks as supply grows) |
| storage gap                                          | `uint256[45] __gap`                                        |

## Reward contracts

| Parameter           | Contract          | Constraint / behavior                                                                  |
| ------------------- | ----------------- | -------------------------------------------------------------------------------------- |
| `DURATION`          | Both pools        | Immutable and nonzero.                                                                 |
| `START_TIME`        | Both pools        | Immutable and nonzero.                                                                 |
| `initreward`        | Incentivizer      | Starts nonzero, then halves when `stake` or `getReward` rolls an ended period forward. |
| `MIN_STAKED_BLOCKS` | Distribution pool | Immutable and nonzero; every stake resets the account's claim timer.                   |

`BrilaDATIncentivizer` is deployed. `BrilaDATDistributionPool` is present in source but has no recorded deployment, so it has no live parameter values.

### Live incentivizer

| Parameter      | Mainnet value                                         |
| -------------- | ----------------------------------------------------- |
| `DURATION`     | `7776000` seconds (90 days)                           |
| `START_TIME`   | `1781987792` (2026-06-20 20:36:32 UTC)                |
| `initreward`   | `1353256939035094796632` pre-scaling units            |
| `rewardRate`   | `174029956151632` pre-scaling units per second        |
| `periodFinish` | `1789763792` (2026-09-18 20:36:32 UTC, launch period) |

## Oracle adapter and zap constants

| Constant                          | Value  | Meaning                                              |
| --------------------------------- | ------ | ---------------------------------------------------- |
| `HyperCoreOracleAdapter.DECIMALS` | `8`    | Decimal precision returned through `IPriceOracle`.   |
| `BrilaDATZap.MIN_RESERVE`         | `1000` | Private per-side reserve floor used before zap math. |

### Mainnet oracle adapters

| Role | Precompile                                   | Index | Scale exponent | Inclusive answer band (8 decimals) |
| ---- | -------------------------------------------- | ----- | -------------- | ---------------------------------- |
| Perp | `0x0000000000000000000000000000000000000807` | `159` | `4`            | `8e8`–`480e8` ($8–$480)            |
| Spot | `0x0000000000000000000000000000000000000808` | `107` | `2`            | `8e8`–`480e8` ($8–$480)            |
