# KYOTO security concern
## Problem description
To stop the trading, the existing solution is blacklisting the `LP pair` smart contract. This can cause problem.
The LP liquidity can not be removed until 07/Oct(3 weeks). When we need to remove the liquidity, we need to remove the `LP pair` smart contract from the blacklist(please correct me if my understanding is wrong). This approach will cause problems.
Reason: when `LP pair` is removed from the blacklist, KYOTO token holders can sell their tokens, even if some of them already sold through the OTC.
## Proposed solution
- Deploy a simple smart contract
- And then set the `pairContract` as this newly-deployed smart contract by `setLP`.
```solidity
contract SyncRevert {
function sync() pure external
{
require(false, "can not sync()");
}
}
```
```solidity
function setLP(address _address) external onlyOwner {
pairContract = IPancakeSwapPair(_address);
}
```
How does it work.
```solidity
function _transferFrom(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
require(!blacklist[sender] && !blacklist[recipient], "in_blacklist");
if (inSwap) {
return _basicTransfer(sender, recipient, amount);
}
if (shouldRebase()) {
rebase(); // Revert here
}
//...
}
function rebase() internal {
if (inSwap) return;
uint256 rebaseRate;
uint256 deltaTimeFromInit = block.timestamp - _initRebaseStartTime;
uint256 deltaTime = block.timestamp - _lastRebasedTime;
uint256 times = deltaTime.div(15 minutes);
uint256 epoch = times.mul(15);
if (deltaTimeFromInit < (365 days)) {
rebaseRate = 2604;
} else if (deltaTimeFromInit >= (7 * 365 days)) {
rebaseRate = 2;
} else if (deltaTimeFromInit >= ((15 * 365 days) / 10)) {
rebaseRate = 14;
} else {
rebaseRate = 211;
}
for (uint256 i = 0; i < times; i++) {
_totalSupply = _totalSupply
.mul((10**RATE_DECIMALS).add(rebaseRate))
.div(10**RATE_DECIMALS);
}
_gonsPerFragment = TOTAL_GONS.div(_totalSupply);
_lastRebasedTime = _lastRebasedTime.add(times.mul(15 minutes));
pairContract.sync(); // Revert here
emit LogRebase(epoch, _totalSupply);
}
```
- User can not transfer/sell because `rebase()` will revert.
- KYOTO team can `removeLiquidity` freely.