# Lossless Controller

**Lossless Controller** is the core contract of the Lossless protocol. Every lossless protected token calls this contract before every ***transfer***, ***transferFrom***, ***approve***, or any other function. The controller determines if the function can proceed and in cases where it cannot proceed this call reverts in turn reverting the ERC20 function call.&#x20;

The controller is an upgradable smart contract that's using an **upgradable transparent proxy pattern**.&#x20;

The controller does only a minimal amount of validation and the rest of the logic of lossless protocol lives on other smart contracts (see [Vault and Treasury Protection](/protocol/technical-reference/vault-and-treasury-protection.md)). In the [deployments section](/protocol/technical-reference/lossless-controller/deployments.md), you will find lossless controller addresses for different blockchains.


---

# 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.lossless.io/protocol/technical-reference/lossless-controller.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.
