diff --git a/onchain/src/Kraiken.sol b/onchain/src/Kraiken.sol index ea2362e..8a5efaf 100644 --- a/onchain/src/Kraiken.sol +++ b/onchain/src/Kraiken.sol @@ -69,6 +69,7 @@ contract Kraiken is ERC20, ERC20Permit { function setLiquidityManager(address liquidityManager_) external { require(msg.sender == deployer, "only deployer"); if (address(0) == liquidityManager_) revert ZeroAddressInSetter(); + if (liquidityManager_ == stakingPool) revert InvalidAddress(); if (liquidityManager != address(0)) revert AddressAlreadySet(); liquidityManager = liquidityManager_; } diff --git a/onchain/test/Kraiken.t.sol b/onchain/test/Kraiken.t.sol index 8dc7ac0..055a092 100644 --- a/onchain/test/Kraiken.t.sol +++ b/onchain/test/Kraiken.t.sol @@ -187,6 +187,14 @@ contract KraikenTest is Test { kraiken.setLiquidityManager(makeAddr("anotherLiquidityManager")); } + function testSetLiquidityManagerRejectsStakingPool() public { + Kraiken freshKraiken = new Kraiken("KRAIKEN", "KRK"); + address sp = makeAddr("stakingPool"); + freshKraiken.setStakingPool(sp); + vm.expectRevert(Kraiken.InvalidAddress.selector); + freshKraiken.setLiquidityManager(sp); + } + function testSetLiquidityManagerOnlyDeployer() public { Kraiken freshKraiken = new Kraiken("KRAIKEN", "KRK"); address nonDeployer = makeAddr("nonDeployer");