# WEbdEXNetworkPoolV3

{% hint style="success" %}
The `WEbdEXNetworkPoolV3` is a key smart contract within the Botmoney platform, developed in Solidity for managing liquidity pools and related financial functions.
{% endhint %}

### Overview

The `WEbdEXNetworkPoolV3` is a key smart contract within the WEbdEX platform, developed in Solidity for managing liquidity pools and related financial functions.

#### Imports and Interfaces

The contract employs the OpenZeppelin library for `Ownable` functionality, ensuring secure management of ownership. It also interacts with the `IWEbdEXStrategiesV3` interface for specific LP token-related operations.

```solidity
solidityCopy code// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

interface IWEbdEXStrategiesV3 {
    function lpBurnFrom(address to, address coin, uint256 amount) external;
}

contract WEbdEXNetworkPoolV3 is Ownable {
    // ... (continuation of the code)
```

#### Contract Structure and Key Components

**Public Variables and LPToken Structure**

```solidity
solidityCopy code    address public webDexPaymentsV3;
    address public webDexPass;
    uint16 public fee_withdraw;
    mapping(address => mapping(address => LPToken)) internal balances;

    struct LPToken {
        address coin;
        uint256 balance;
    }
    // ... (continuation of the code)
```

**Events for Activity Logging**

```solidity
solidityCopy code    event ExtractLogs(
        address indexed from,
        address indexed to,
        string method,
        uint256 timeStamp,
        uint256 value,
        uint256 fee,
        address user
    );
    // ... (continuation of the code)
```

#### Constructor and Modifiers

```solidity
solidityCopy code    constructor(address webDexPaymentsV3_, address webDexPass_) {
        webDexPaymentsV3 = webDexPaymentsV3_;
        webDexPass = webDexPass_;
        fee_withdraw = 5;
    }

    modifier onlyWebDexPaymentsOrWebDexPass() {
        require(msg.sender == webDexPaymentsV3 || msg.sender == webDexPass, "You must be the WebDexPayments or the webDexPass");
        _;
    }
    // ... (continuation of the code)
```

#### Main Contract Functions

**Fee Management and Balance Operations**

```solidity
solidityCopy code    function changeFeeWithdraw(uint16 amount) public onlyOwner {
        // Adjusts the withdrawal fee
    }

    function addBalance(
        address to,
        address coin,
        uint256 amount,
        address lpToken,
        address user,
        string memory method
    ) external onlyWebDexPaymentsOrWebDexPass {
        // Adds balance to the pool
    }

    function withdraw(
        address lpToken,
        uint256 amount,
        IWEbdEXStrategiesV3 webDexStrategiesV3
    ) public {
        // Allows withdrawals from the pool
    }
    // ... (continuation of the code)
```

**Balance Queries**

```solidity
solidityCopy code    function getBalance(address lpToken) public view returns (uint256) {
        return _getBalance(msg.sender, lpToken);
    }

    function getBalanceByWallet(
        address to,
        address lpToken
    ) public view onlyOwner returns (uint256) {
        return _getBalance(to, lpToken);
    }

    function _getBalance(
        address to,
        address lpToken
    ) internal view returns (uint256) {
        // Returns the balance of a specific address
    }
    // ... (continuation of the code)
```

#### Conclusion

The WEbdEXNetworkPoolV3 contract plays a vital role in managing liquidity pools and financial operations on the Botmoney platform.
