# Lossless Wrapped ERC20

### Overview <a href="#overview" id="overview"></a>

The smart contract is one of the types of wrapping protections a protocol is able to choose.By default it has all the related protection for the Lossless Core Protocol, allowing any protocol to protect their tokens without the need of relaunching. Once the contract is deployed any user has the ability to swap and lock the original token for a wrapped version of it.Over the wrapped tokens, any user is able to generate reports, stake on said reports, and the report be voted by Lossless, the Committee and the UMA oracle.The base version of the Lossless Wrapped ERC20 does not have any of the admin related functions so their behavior is static as when it was deployed.For an Ownable version please refer to ​

### Workflow <a href="#workflow" id="workflow"></a>

<figure><img src="/files/8PQs6RtQqrOTwfdT9yuy" alt=""><figcaption></figcaption></figure>

### Variables <a href="#variables" id="variables"></a>

**`isLosslessOn`**

| Type        | `bool`                                   |
| ----------- | ---------------------------------------- |
| Visibility  | `public`                                 |
| Description | Determines if lossless protection is on. |

**`lossless`**

| Type        | `ILssController`                    |
| ----------- | ----------------------------------- |
| Visibility  | `public`                            |
| Description | Address of the lossless controller. |

### Functions <a href="#functions" id="functions"></a>

**`transferOutBlacklistedFunds`**

| Type         | external                                                                                                                                                                                                                                            |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Restrictions | Only called by Lossless Controller                                                                                                                                                                                                                  |
| Parameters   | address\[]                                                                                                                                                                                                                                          |
| Returns      | -                                                                                                                                                                                                                                                   |
| Description  | This function gets called only by the Lossless Controller when a report gets solved. The main objective is to transfer the stolen funds from a list of addresses back to the Lossless Contracts to be distributed once again to the rightful owner. |

**`requestWithdraw`**

| Type         | public                                                                                                                                                                              |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Restrictions | Must have wrapped tokens                                                                                                                                                            |
| Parameters   | uint256                                                                                                                                                                             |
| Returns      | -                                                                                                                                                                                   |
| Description  | This function can be called by any holder of the corresponding wrapped token. It will place an unwrapping request in order to leave the wrapping and retrieve the underlying token. |

**`withdrawTo`**

| Type         | public override(ERC20Wrapper)                                           |
| ------------ | ----------------------------------------------------------------------- |
| Restrictions | Must have placed a withdraw requestThe unwrapping delay must have pased |
| Parameters   | addressuint256                                                          |
| Returns      | -                                                                       |
| Description  |                                                                         |


---

# 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/wrapped-tokens/lossless-wrapped-protection/lossless-wrapped-erc20.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.
