# 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](https://docs.lossless.io/protocol/technical-reference/vault-and-treasury-protection)). In the [deployments section](https://docs.lossless.io/protocol/technical-reference/lossless-controller/deployments), you will find lossless controller addresses for different blockchains.
