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

# 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)
