# PoolVoting

&#x20;This contract manages meshswap's liquidity pool voting, pool-wide voting information, and pool voting rankings. As a reward for pool voters, 50% of pool transaction fees are distributed according to their voting stake.

## Code

Github Link: (Will be updated after official launch)

## Address

* Polygon Mainnet : [0x705b40af8cecd59406cf630ab7750055c9b137b9](https://polygonscan.com/address/0x705b40af8cecd59406cf630ab7750055c9b137b9)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**AddVoting**

```solidity
event AddVoting(address user, address exchange, uint amount);
```

* Event log of voting vMESH for pool
* The amount can be entered in integer units&#x20;

**RemoveVoting**

```solidity
event RemoveVoting(address user, address exchange, uint amount);
```

* Event log of remove voting vMESH for pool&#x20;
* The amount can be entered in integer units within the voting limit.

**GiveReward**

```solidity
event GiveReward(address user, address exchange, address token, uint amount, uint lastIndex, uint rewardSum);
```

* Event that occurs when a transaction fee reward is paid to voters

**SetValidToken**

```solidity
event SetValidToken(address token, bool valid);
```

* Event that occurs when the token level is set to B through voting

**SetBoostingToken**

```solidity
event SetBoostingToken(address token, bool valid);
```

* Event that occurs when the token level is set to A through voting or through contract owner
  {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

**isValidPool**

* Returns if the pool is MESH paid reward pool

**MAX\_VOTING\_POOL\_COUNT**

* Maximum number of pools where users can vote&#x20;

**poolAmount**

* Total number of vMESH per LP

**poolCount**

* Total number of LP

**poolRanking**

* LP Ranking

**userVotingPoolCount**

* Total number of pools voted by user

**validPoolCount**

* Number of voting pools

**boostingPowerMESH\_A**

* Voting Weights for MESH and grade A tokens

**boostingPowerMESH\_B**

* Voting Weights for MESH and grade B tokens

**boostingPowerA\_A**

* Voting Weights for grade A and grade A tokens

**boostingPowerA\_B**

* Voting Weights for grade A and grade B tokens

#### getPoolBoosting

```
function getPoolBosting(address pool) public view returns (uint)
```

* Voting Weights for target pool

#### prevPoolAmount

```
function prevPoolAmount(uint256 epoch, address pool) public view returns (uint)
```

* Previous pool voting amount by epoch

#### prevValidPool

```
function prevValidPool(uint256 epoch, address pool) public view returns (bool)
```

* Previous pool valid status by epoch

#### isBoostingToken

```
function isBoostingToken(address token) public view returns (bool)
```

* Returns whether it is a grade A token

#### isValidToken

```
function isValidToken(address token) public view returns (bool)
```

* Returns whether it is a grade A token

#### userVotingPoolAmount

```
function userVotingPoolAmount(address user, uint256 poolIndex) public view returns (uint256)
```

* Number of user votes for each PoolIndex

#### userVotingPoolAddress

```
function userVotingPoolAddress(address user, uint256 poolIndex) public view returns (address)
```

* Address of user votes for each PoolIndex
  {% endtab %}

{% tab title="State-Changing Functions" %}

## **State-Changing Functions**

**addVoting**

```solidity
function addVoting(address exchange, uint amount) public
```

* Method to voting vMESH for pool
* The amount can be entered in integer units &#x20;

**removeVoting**

```solidity
function removeVoting(address exchange, uint amount) public
```

* Method to remove voting vMESH for pool
* The amount can be entered in integer units within the voting limit

**claimReward**

```solidity
function claimReward(address exchange) public 
```

* Method of vote pool’s transaction fee reward&#x20;

**claimRewardAll**

```solidity
function claimRewardAll() public
```

* Method of all vote pool’s transaction fee reward&#x20;

**removeAllVoting**

```solidity
function removeAllVoting() public
```

* Method of remove vote pool’s

**delisting**

```solidity
function delisting(address token) public
```

* Method of converts a grade B token to a grade C token
* Automatically registered as a voting agenda after a set period of governance

**setBoostingToken**

```solidity
function setBoostingToken(address token, bool valid) public
```

* Method of token level set to A grade
* Only governance

**setValidToken**

```solidity
function setValidToken(address token, bool valid) public
```

* Method of token level set to B grade
* Only governance
  {% endtab %}
  {% endtabs %}
