# Migrating V2.1 Positions

This section outlines the process to migrate Bancor V2.1 positions to Bancor V3.

{% hint style="warning" %}
This process calculates all your available rewards and might be expensive
{% endhint %}

### 1. Identify your position(s)

This step explains how to identify your position IDs.&#x20;

* Visit the *`LiquidityProtectionStore`* contract [on etherscan](https://etherscan.io/address/0xf5fab5dbd2f3bf675de4cb76517d4767013cfb55#readContract)
* Execute the *`protectedLiquidityIds`* function (this is a Read function)

![](/files/qlCkWslzSCITpSoIszp7)

`Input variable`

| Name       | Type    | Description         |
| ---------- | ------- | ------------------- |
| \_provider | address | Your wallet address |

`Output response`

<table><thead><tr><th width="250.33333333333331">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>id(s)</td><td>uint256</td><td>1 or more unique IDs that indicate the protected positions for the specified address</td></tr></tbody></table>

### 2. Identify position data

This section explains how to identify the relevant data based on the unique position ID.

* Visit the *`LiquidityProtectionStore`* contract [on etherscan](https://etherscan.io/address/0xf5fab5dbd2f3bf675de4cb76517d4767013cfb55#readContract)
* Execute the *`protectedLiquidity`* function (this is a Read function)

![](/files/HWJWy1Co34TC24upL5S4)

`Input variable`

| Name | Type    | Description          |
| ---- | ------- | -------------------- |
| \_id | uint256 | A unique position ID |

`Output response`

<table><thead><tr><th width="257.92824192721685">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>provider</td><td>address</td><td>The wallet address of the position owner</td></tr><tr><td>poolToken</td><td>token</td><td>The pool token address <mark style="color:red;">*</mark><br>(i.e. LINK/BNT pool token address)</td></tr><tr><td>reserveToken</td><td>token</td><td>The reserve token address <mark style="color:red;">*</mark><br>(i.e. LINK token address)</td></tr><tr><td>poolAmount</td><td>uint256</td><td>Pool token amount <mark style="color:red;">*</mark></td></tr><tr><td>reserveAmount</td><td>uint256</td><td>Reserve token amount</td></tr><tr><td>reserveRateN</td><td>uint256</td><td>Rate of 1 protected reserve token in units of the other reserve token (numerator)</td></tr><tr><td>reserveRateD</td><td>unit256</td><td>Rate of 1 protected reserve token in units of the other reserve token (denominator)</td></tr><tr><td>timestamp</td><td>unit256</td><td>Timestamp of the original deposit</td></tr></tbody></table>

&#x20;*<mark style="color:red;">\* These values are needed for the</mark> <mark style="color:red;"></mark><mark style="color:red;">`migratePositions`</mark> <mark style="color:red;"></mark><mark style="color:red;">function</mark>*

### 3. Migrate your protected positions

Now that you have your V2.1 protected position(s) data available, you can proceed in calling the migration function and move the funds to Bancor V3.

{% hint style="info" %}
This process will migrate the full position and update the protection to **100%** as a bonus
{% endhint %}

Visit the *`LiquidityProtection`* contract [on etherscan](https://etherscan.io/address/0x63308861249ad775a4B6cEb6544Ce30C952b311a#writeContract)

* Execute the *`migratePositions`* function (this is a Write function)

![](/files/RMIfzW6MPY6eGTwNiJ4F)

`Input variable`

| Name          | Type         | Description                                            |
| ------------- | ------------ | ------------------------------------------------------ |
| positionLists | PositionList | Array of data to define the pool, token and positions. |

```
Format example:
[["poolTokenAddress", "reserveTokenAddress", [ID1, ID2, ..]]]
[["0x5B38Da6a701c568545dCfcB03FcB875f56beddC4","0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",[1,2,3]]]

```

{% hint style="info" %}
You can group multiple IDs with the same `poolToken` and `reserveToken` combination\
i.e. all IDs for LINK from the LINK/BNT pool
{% endhint %}

Once executed successfully, the following will happen:

1. The v2.1 protected position(s) will no longer exist
2. The value of the protected tokens will be staked into Bancor V3
3. You would receive bnTokens that represent your migration

{% hint style="info" %}
If you wish to participate in Standard Rewards, proceed to [Joining Standard Rewards](/guides/bancor-etherscan-guide/rewards-joining-standard-rewards.md) guide
{% endhint %}


---

# 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.bancor.network/guides/bancor-etherscan-guide/migrating-v2.1-positions.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.
