# Protocol parameters

### Hub

`liquidationFee`

* Protocol cut from the liquidation (a fraction of `LiquidationInput.assetReceiptAmounts`)

`liquidationCalculator`

* The `ILiquidationCalculator` smart contract is responsible for providing helpers and calculations for the Hub when handling liquidations

`priceUtilities`

* The `HubPriceUtilities` smart contract contains helper functions for assets' prices&#x20;

`assetRegistry`

* The `AssetRegistry` smart contract contains the list of assets supported by the protocol and their parameters in `AssetInfo` structs.

### HubPriceUtilities

`priceStandardDeviations`

* The number of standard deviations of the Laplacian distribution that is used to create a spread between the deposit price of an asset and the debt price of an asset. e.g. if the true price of an asset is $1000 per unit, the standard deviation returned from the price oracle is $5 and priceStandardDeviations is 4.0 then the asset will be priced at $980 per unit when used as deposit and at $1020 when used as debt. This is to further ensure that the protocol always has enough collateral.

`priceOracle`

* The `SynonymPriceOracle` smart contract is an abstraction layer allowing the protocol to switch  between Chainlink and Pyth oracles.

### SynonymPriceOracle

`maxPriceAge`

* In seconds
* If we get the price from Pyth / Chainlink, which is older than that, we'll revert

### LiquidationCalculator

`maxHealthFactor`

* A global parameter
* Is >= 1
* By health we understand collateralization ratio = deposited/borrowed
  * by deposited we understand a sum of the $ values of deposits divided by their corresponding `collateralizationRatioDeposit`. The `collateralizationRatioDeposit` value decreases the effective value of the deposits.
  * by borrowed we understand a sum of the $ values of deposits multiplied by their corresponding `collateralizationRatioBorrow`. The `collateralizationRatioBorrow` increases the effective value of the loans.
* When collateralization ratio is < 1, some of the debt can be liquidated
* When liquidating debt, a liquidator can bring the collateralization ratio up to `maxHealthFactor` value
* It's up to the liquidator what debt they want to liquidate
* It's up to the liquidator what collateral they want in return
  * their bonus depennds on what collateral they choose

### AssetInfo

`collateralizationRatioDeposit`

* Must be > 1
* Precision: `assetRegistry.getCollateralizationRatioPrecision()`
* It decreases the effective value of your collateral

`collateralizationRatioBorrow`

* Must be > 1
* Precision: `assetRegistry.getCollateralizationRatioPrecision()`
* It increases the weight of your loans on your effective collateral

`borrowLimit`

* Maximum total amount of token units which can be borrowed by all users combined

`supplyLimit`

* Maximum total amount of token units which can be deposited by all users combined

`maxLiquidationPortion`

* The maximym portion of a loan which can be liquidated in a single transaction, set per asset
* Precision: `assetRegistry.getMaxLiquidationPortionPrecision()`

`maxLiquidationBonus`

* 130e4 = 130% = 1.3
* 1.3 means the liquidator gets 30% over what he repays
* The liquidation bonus is paid form the collateral and it's value is derived from the chosen collateral asset

`interestRateCalculator`

#### LinearInterestRate > InterestRateModel

`rateIntercept` - linear function "b" intercept

`rateCoefficient` - linear function "a" coefficient

`reserveFactor` - the protocol cut (% of the borrow interest)

#### PiecewiseInterestRate > PiecewiseInterestRateModel

`kinks`, `rates`:

* generally:
  * rate\[0] applies when borrowed/deposited <= kink\[0]
  * rate\[1] applies when borrowed/deposited <= kink\[1]
  * etc. until we run out of kinks and use the last rate
* actually we use a linear functions between kinks

`reserveFactor` - the protocol cut (% of the deposit interest paid to the protocol)


---

# 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.syno.finance/developer-docs/protocol-parameters.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.
