# 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)

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2FAu6LCfbEcFGnv89LTW5y%2Fimage.png?alt=media\&token=8e5631ef-3cd5-45fd-9bb8-1a2838b6d81d)

`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)

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2F0Iiqx9bXCXxkpZ20Iidf%2Fimage.png?alt=media\&token=aba5db8f-95bb-42c1-a840-6c38d7b35dab)

`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)

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2FsC2NpxzyuuX0BirKC5Kg%2Fimage.png?alt=media\&token=108b5e37-3731-4464-92c4-1f3c459f0395)

`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](https://docs.bancor.network/guides/bancor-etherscan-guide/rewards-joining-standard-rewards) guide
{% endhint %}
