# PoolVoting

&#x20;This contract manages KLAYswap'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

* Cypress :[0x71b59e4bc2995b57aa03437ed645ada7dd5b1890](https://scope.klaytn.com/account/0x71b59e4bc2995b57aa03437ed645ada7dd5b1890?tabId=txList)

## 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 vKSP 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 vKSP 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 KSP paid reward pool

**MAX\_VOTING\_POOL\_COUNT**

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

**poolAmount**

* Total number of vKSP per LP

**poolCount**

* Total number of LP

**poolRanking**

* LP Ranking

**userVotingPoolCount**

* 투표자가 투표의 풀의 개

**validPoolCount**

* 투표 가능한 풀의 개

**boostingPowerKSP\_A**

* Voting Weights for KSP and grade A tokens

**boostingPowerKSP\_B**

* Voting Weights for KSP 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

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

* Voting Weights for target pool

#### prevPoolAmount

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

* Previous pool voting amount by epoch

#### prevValidPool

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

* Previous pool valid status by epoch

#### isBoostingToken

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

* Returns whether it is a grade A token

#### isValidToken

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

* Returns whether it is a grade A token

#### userVotingPoolAmount

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

* Number of user votes for each PoolIndex

#### userVotingPoolAddress

```solidity
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 vKSP for pool
* The amount can be entered in integer units &#x20;

removeVoting

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

* Method to remove voting vKSP 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 %}
