# Architecture Overview

## Core Components

Nomial V1 has three main components:

1. **Smart Contracts:** Contain logic that controls collateral and pooled capital
2. **Validators:** Off-chain clients that control all on-chain operations in the protocol
3. **API:** Off-chain service that facilitates interactions with the protocol

## Smart Contracts

Core contracts:

* CollateralPool
  * Accepts collateral deposits of any ERC20 token from solvers
  * Implements a time-locked withdrawal mechanism to allow time for liquidations
  * Allows Validators to liquidate solver balances if necessary
* InventoryPool
  * Stores LP capital.
  * Borrowers (e.g., solvers) borrow from instances of InventoryPool
  * Each pool instance supports a single ERC20 token

## Validators

Validators are responsible for triggering collateral liquidations and granting borrow permissions for inventory access. A quorum of Validators can:

* Liquidate solver balances and pending withdrawals in the CollateralPool
* Grant permission to borrow from InventoryPools (based on collateral and outstanding positions)
* Update parameters such as withdrawal periods and interest rates

Learn more about validators: [Security Model](/security/security-model-overview.md).

## API

The API provides:

* An endpoint for solvers to request validator approval for a borrow transaction
* Transaction data for interactions with the smart contracts
* Read-only state info about validators, borrowers, and pools.


---

# 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.nomial.io/protocol/architecture-overview.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.
