> For the complete documentation index, see [llms.txt](https://docs.tydro.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tydro.com/developers/smart-contracts.md).

# Smart Contracts

Tydro is built on a modular set of smart contracts, all available on [<mark style="color:blue;">GitHub</mark>](https://github.com/aave-dao/aave-v3-origin).\
Developers can integrate contract addresses directly into Solidity or JavaScript projects using the [<mark style="color:blue;">Tydro Address Book</mark>.](/resources/addresses.md)

The repository is organized into the following categories:

* Pool
* Configuration
* Logic
* Tokenization
* Helpers
* Misc

### Pool

#### Pool

The [Pool](/developers/smart-contracts/pool.md) is the central entry point to Tydro. All core user interactions such as supplying, borrowing, and repaying flow through this contract. Ownership of the Pool is tracked by the PoolAddressesProvider, and admin-level actions (like changing parameters) are routed through the PoolConfigurator.

#### L2Pool

The [L2Pool](/developers/smart-contracts/l2-pool.md) is an optimized version of the Pool contract, designed specifically for rollups.\
It enables gas-efficient interactions by accepting compact, byte-encoded calldata. This reduces transaction costs while maintaining the same functionality as the Pool.

#### PoolConfigurator

The [PoolConfigurator](/developers/smart-contracts/pool-configurator.md) manages risk parameters and configuration for the Pool. Only addresses with the appropriate permissions, assigned through the ACLManager, can call its write functions.

### Configuration

ACLManager

The [ACLManager](/developers/smart-contracts/aclmanager.md) is the registry of protocol roles and permissions. It defines and enforces access control across the system.

#### PoolAddressesProvider

The [PoolAddressesProvider](/developers/smart-contracts/pool-addresses-provider.md) is a registry of various components of the protocol, including the ACLManager and Pool contracts. It has the ability to  update pointers and proxy implementations to support upgrades.

### Logic

[Libraries](https://github.com/aave-dao/aave-v3-origin/blob/main/src/contracts/protocol/libraries/logic/) that implement the underlying mechanics of protocol operations. These libraries ensure that Pool interactions execute reliably and securely.

### Tokenization

#### aToken

Supplying assets mints [aTokens](/developers/smart-contracts/tokenization.md) which represent the depositor’s balance and automatically accrue yield. aTokens are burned when assets are withdrawn from the Pool

#### VariableDebtToken

Borrowing at a variable rate issues [VariableDebtTokens](/developers/smart-contracts/tokenization.md). These non-transferable tokens track a borrower’s position and increase automatically as interest accrues.

### Helpers

#### L2Encoder

The [L2Encoder](https://github.com/aave-dao/aave-v3-origin/blob/main/src/contracts/helpers/L2Encoder.sol) is a helper contract to encode calldata that is passed to the L2Pool. It is used to optimize calldata size in L2Pool for transaction cost reduction. It is only intended to help generate calldata for users/frontends.

#### TydroProtocolDataProvider

The [TydroProtocolDataProvider](/developers/smart-contracts/view-contracts.md#view-contracts) and formats data from the Pool, making it easier for applications to access key protocol information.

### Misc

#### TydroOracle

The [TydroOracle](/developers/smart-contracts/oracles.md#aaveoracle) manages reserve oracles and provides reference prices for assets. It ensures accurate pricing and updates sources as needed.

#### DefaultReserveInterestRateStrategy

The [DefaultReserveInterestRateStrategy](/developers/smart-contracts/interest-rate-strategy.md) calculates borrowing costs and yields based on the state of each reserve. It defines the parameters and logic used to update interest rates dynamically.

#### PriceOracleSentinel

The [PriceOracleSentinel](/developers/smart-contracts/oracles.md) safeguards the protocol during oracle disruptions. If a price feed becomes unavailable, it restricts operations until recovery and provides users with a grace period to restore healthy positions.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.tydro.com/developers/smart-contracts.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
