# Changelog

## Overview

The changes in this contract are related to moving the minting of MOR tokens and migrating new liquidity from the Arbitrum network to the Base network.

This contract in v2 uses two bridges: the Arbitrum Bridge for transferring liquidity, and LayerZero for sending messages to mint tokens on L2.

Moving from Arbitrum to Base using LayerZero will not be a problem and only requires changing contract configuration. On the other hand, it is not possible to use the Arbitrum Bridge to transfer liquidity to Base. Therefore, to meet the new requirements, the bridge used for transferring liquidity must be replaced with Lido's bridge.

## Storage changes

* `arbitrumBridgeConfig` renamed to `tokenBridgeConfig`. Remove the binding to a specific bridge and make it more abstract. The function that sets these parameters has been renamed accordingly.
* `layerZeroConfig` renamed to `messageBridgeConfig`. Remove the binding to a specific bridge and make it more abstractThe function that sets these parameters has been renamed accordingly.

## Functions changes

#### setTokenBridgeConfig

We've also added handling for the case when we reconfigure from the Arbitrum bridge to the Lido bridge. The Arbitrum bridge uses a gateway via an additional call, which must be handled in new version. Lido deployments: <https://docs.lido.fi/deployed-contracts/#base>

```solidity
if (oldConfig_.wstETH != address(0)) {
  IERC20(stETH).approve(oldConfig_.wstETH, 0);

  address oldGateway_;
  try IGatewayRouter(oldConfig_.gateway).getGateway(oldConfig_.wstETH) returns (address gateway_) {
    oldGateway_ = gateway_;
  } catch {
    oldGateway_ = oldConfig_.gateway;
  }
  IERC20(oldConfig_.wstETH).approve(oldGateway_, 0);
}
```

#### sendWstETH

This function has been changed — it now works with the Lido bridge. `l2Gas_` is the gas fee for L2 and can be taken from the Lido gateway contract. `data_` is additional information for the transfer (optional field).

```solidity
function sendWstETH(
  uint32 l2Gas_, 
  bytes calldata data_
) external onlyOwner;
```

## Test enviroment

Note that in the test environment anyone can call `sendMintMessage`. The `sendWstETH` call, as before, can only be made by the contract owner. The environment is configured so that `wstETH` transfers and MOR minting work.

#### Ethereum

<table><thead><tr><th width="203.89453125">Name</th><th>Address</th></tr></thead><tbody><tr><td><code>L1SenderV3</code></td><td><kbd>0x6Fd2674E13a42E588f83Ae74e5F22a4EE24eD75A</kbd></td></tr></tbody></table>

#### Base

<table><thead><tr><th width="203.89453125">Name</th><th>Address</th></tr></thead><tbody><tr><td><code>L2MessageReceiver</code></td><td><kbd>0xB69DbF7C9aB4597D3b3BC284Cc8771D580299baD</kbd></td></tr><tr><td><code>MOR</code></td><td><kbd>0x98e3CFBdB9707dF6107Cb1A7BD03036052EAa20e</kbd></td></tr></tbody></table>


---

# 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://gitbook.mor.org/smart-contracts/documentation/distribution-protocol/v7-protocol/contracts/l1senderv2/changelog.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.
