Skip to content

Commit

Permalink
❌ Revoke DEV_FUND permissions (fixes #13)
Browse files Browse the repository at this point in the history
  • Loading branch information
oemerfurkan authored Apr 3, 2024
1 parent f09182e commit d485af2
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 49 deletions.
8 changes: 4 additions & 4 deletions contracts/KDAO.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pragma solidity ^0.8.0;

import {LockedKDAO} from "./LockedKDAO.sol";
import {KDAOL} from "interfaces/Addresses.sol";
import {DEV_FUND, KDAOL, PROTOCOL_FUND, VOTING} from "interfaces/Addresses.sol";
import {KDAOL, PROTOCOL_FUND, VOTING} from "interfaces/Addresses.sol";
import {DistroStage, IDistroStage} from "interfaces/IDistroStage.sol";
import {IERC20, IERC20Permit} from "interfaces/IERC20Permit.sol";
import {IERC20Snapshot3} from "interfaces/IERC20Snapshot3.sol";
Expand Down Expand Up @@ -346,7 +346,7 @@ contract KDAO is IERC20Permit, IERC20Snapshot3, IDistroStage {
* @param newStage value to double check to prevent user error.
*/
function incrementDistroStage(DistroStage newStage) external {
require(msg.sender == DEV_FUND);
require(msg.sender == VOTING);
// Ensure the user provided round number matches, to prevent user error.
require(uint256(distroStage) + 1 == uint256(newStage));
// Make sure all minting has been done for the current stage
Expand Down Expand Up @@ -386,7 +386,7 @@ contract KDAO is IERC20Permit, IERC20Snapshot3, IDistroStage {
* followed by a 160-bits address.
*/
function mintTo(uint256 amountAccount) public {
require(msg.sender == DEV_FUND || (distroStage == DistroStage.Presale2 && msg.sender == presale2Contract));
require(msg.sender == VOTING || (distroStage == DistroStage.Presale2 && msg.sender == presale2Contract));
mint(amountAccount);
}

Expand Down Expand Up @@ -454,7 +454,7 @@ contract KDAO is IERC20Permit, IERC20Snapshot3, IDistroStage {
}

function setPresale2Contract(address addr) external {
require(msg.sender == DEV_FUND);
require(msg.sender == VOTING);
presale2Contract = addr;
}

Expand Down
6 changes: 2 additions & 4 deletions test/KDAOGasTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ pragma solidity ^0.8.0;

import {KDAO, LockedKDAO} from "contracts/KDAO.sol";
import {Test} from "forge-std/Test.sol";
import {
DEV_FUND, KDAOL_DEPLOYER, KDAO_DEPLOYER, PROTOCOL_FUND, PROTOCOL_FUND_DEPLOYER
} from "interfaces/Addresses.sol";
import {KDAOL_DEPLOYER, KDAO_DEPLOYER, PROTOCOL_FUND, PROTOCOL_FUND_DEPLOYER, VOTING} from "interfaces/Addresses.sol";
import {IProtocolFund} from "interfaces/IProtocolFund.sol";
import {MockProtocolFundV1} from "interfaces/testing/MockProtocolFundV1.sol";
import {MockERC20Permit} from "interfaces/testing/MockTokens.sol";
Expand All @@ -32,7 +30,7 @@ contract KDAOGasTest is Test {
}

function mintAll(uint256 amount) public {
vm.startPrank(DEV_FUND);
vm.startPrank(VOTING);
for (uint256 i = 1; i <= 20; ++i) {
kdao.mintTo((amount << 160) | uint160(vm.addr(i)));
}
Expand Down
11 changes: 2 additions & 9 deletions test/KDAOSnapshotTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,7 @@ pragma solidity ^0.8.0;

import {KDAO, LockedKDAO} from "contracts/KDAO.sol";
import {Test} from "forge-std/Test.sol";
import {
DEV_FUND,
KDAOL_DEPLOYER,
KDAO_DEPLOYER,
PROTOCOL_FUND,
PROTOCOL_FUND_DEPLOYER,
VOTING
} from "interfaces/Addresses.sol";
import {KDAOL_DEPLOYER, KDAO_DEPLOYER, PROTOCOL_FUND, PROTOCOL_FUND_DEPLOYER, VOTING} from "interfaces/Addresses.sol";
import {IProtocolFund} from "interfaces/IProtocolFund.sol";
import {MockProtocolFund} from "interfaces/testing/MockProtocolFund.sol";

Expand All @@ -21,7 +14,7 @@ contract KDAOSnapshotTest is Test {
IProtocolFund private protocolFund;

function mintAll(uint256 amount) public {
vm.startPrank(DEV_FUND);
vm.startPrank(VOTING);
for (uint256 i = 1; i <= 20; ++i) {
kdao.mintTo((amount << 160) | uint160(vm.addr(i)));
}
Expand Down
57 changes: 28 additions & 29 deletions test/KDAOTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {KDAO} from "contracts/KDAO.sol";
import {LockedKDAO} from "contracts/LockedKDAO.sol";
import {Test, stdError} from "forge-std/Test.sol";
import {
DEV_FUND,
KDAOL,
KDAOL_DEPLOYER,
KDAO_ADDR,
Expand Down Expand Up @@ -42,7 +41,7 @@ contract KDAOTest is Test {
}

function mintAll(uint256 amount) public {
vm.startPrank(DEV_FUND);
vm.startPrank(VOTING);
for (uint256 i = 1; i <= 20; ++i) {
kdao.mintTo((amount << 160) | uint160(vm.addr(i)));
}
Expand Down Expand Up @@ -106,21 +105,21 @@ contract KDAOTest is Test {
assertEq(kdao.balanceOf(vm.addr(1)), 0);
assertEq(kdao.balanceOf(vm.addr(2)), 500_000e6);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.Presale2);
mintAll(1e12);

assertEq(kdao.totalSupply(), 40e12);
assertEq(kdaol.totalSupply(), 30e12);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOSaleStart);

assertEq(kdao.totalSupply(), 60e12);
assertEq(kdaol.totalSupply(), 30e12);
assertEq(kdao.balanceOf(PROTOCOL_FUND), 20e12);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOSaleEnd);

kdaol.unlock(vm.addr(1));
Expand All @@ -134,18 +133,18 @@ contract KDAOTest is Test {
assertEq(kdaol.balanceOf(vm.addr(1)), 750e9);
assertEq(kdaol.balanceOf(vm.addr(2)), 750e9);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOAMMStart);

assertEq(kdao.totalSupply(), 80e12);
assertEq(kdaol.totalSupply(), 15e12);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.Presale2Unlock);

kdaol.unlockAllOdd();

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.FinalMint);
mintAll(1e12);

Expand All @@ -154,7 +153,7 @@ contract KDAOTest is Test {
assertEq(kdaol.balanceOf(vm.addr(1)), 750e9);

vm.warp(1925097600);
vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.FinalUnlock);
kdaol.unlock(vm.addr(1));

Expand All @@ -180,7 +179,7 @@ contract KDAOTest is Test {
assertEq(kdao.balanceOf(vm.addr(10)), 250e9);
assertEq(kdaol.balanceOf(vm.addr(10)), 750e9);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.Presale2);

vm.expectRevert("KDAO-l: Not matured");
Expand All @@ -195,15 +194,15 @@ contract KDAOTest is Test {
vm.expectRevert("KDAO-l: Not matured");
kdaol.unlockAllOdd();

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOSaleStart);

vm.expectRevert("KDAO-l: Not matured");
kdaol.unlockAllEven();
vm.expectRevert("KDAO-l: Not matured");
kdaol.unlockAllOdd();

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOSaleEnd);

vm.expectRevert("KDAO-l: Not matured");
Expand All @@ -212,20 +211,20 @@ contract KDAOTest is Test {

assertEq(kdao.balanceOf(vm.addr(2)), 1250e9);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOAMMStart);
kdaol.unlock(vm.addr(1));

assertEq(kdao.balanceOf(vm.addr(1)), 1250e9);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.Presale2Unlock);
kdaol.unlock(vm.addr(1));
assertEq(kdao.balanceOf(vm.addr(1)), 2e12);

kdaol.unlockAllOdd();

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.FinalMint);

assertEq(kdao.totalSupply(), 80e12);
Expand All @@ -240,7 +239,7 @@ contract KDAOTest is Test {

vm.warp(1835470800000);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.FinalUnlock);
kdaol.unlockAllEven();

Expand All @@ -260,7 +259,7 @@ contract KDAOTest is Test {
assertEq(kdaol.totalSupply(), 15e12);
assertEq(kdao.totalMinted(), 20e12);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.Presale2);
mintAll(1e12);

Expand Down Expand Up @@ -710,7 +709,7 @@ contract KDAOTest is Test {

vm.stopPrank();

vm.startPrank(DEV_FUND);
vm.startPrank(VOTING);
vm.expectRevert();
kdao.incrementDistroStage(DistroStage.Presale1);

Expand All @@ -720,7 +719,7 @@ contract KDAOTest is Test {

assertEq(kdao.totalSupply() + 500_000e6, kdao.supplyCap());

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOSaleStart);

assertEq(kdao.supplyCap(), 60_000_000e6);
Expand Down Expand Up @@ -783,7 +782,7 @@ contract KDAOTest is Test {
vm.expectRevert();
kdao.setPresale2Contract(vm.addr(0x94E008A7E2));

vm.startPrank(DEV_FUND);
vm.startPrank(VOTING);
kdao.setPresale2Contract(vm.addr(0x94E008A7E2));
kdao.incrementDistroStage(DistroStage.Presale2);
vm.stopPrank();
Expand Down Expand Up @@ -835,7 +834,7 @@ contract KDAOTest is Test {
// kdaol.selfDestruct();
vm.stopPrank();

vm.startPrank(DEV_FUND);
vm.startPrank(VOTING);
vm.expectRevert();
// kdaol.selfDestruct();
vm.stopPrank();
Expand All @@ -846,21 +845,21 @@ contract KDAOTest is Test {
assertEq(kdao.balanceOf(vm.addr(1)), 0);
assertEq(kdao.balanceOf(vm.addr(2)), 500_000e6);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.Presale2);
mintAll(1e12);

assertEq(kdao.totalSupply(), 40e12);
assertEq(kdaol.totalSupply(), 30e12);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOSaleStart);

assertEq(kdao.totalSupply(), 60e12);
assertEq(kdaol.totalSupply(), 30e12);
assertEq(kdao.balanceOf(PROTOCOL_FUND), 20e12);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOSaleEnd);

kdaol.unlock(vm.addr(1));
Expand All @@ -874,18 +873,18 @@ contract KDAOTest is Test {
assertEq(kdaol.balanceOf(vm.addr(1)), 750e9);
assertEq(kdaol.balanceOf(vm.addr(2)), 750e9);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.DAOAMMStart);

assertEq(kdao.totalSupply(), 80e12);
assertEq(kdaol.totalSupply(), 15e12);

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.Presale2Unlock);

kdaol.unlockAllOdd();

vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.FinalMint);
mintAll(1e12);

Expand All @@ -894,11 +893,11 @@ contract KDAOTest is Test {
assertEq(kdaol.balanceOf(vm.addr(1)), 750e9);

vm.warp(1925097600);
vm.prank(DEV_FUND);
vm.prank(VOTING);
kdao.incrementDistroStage(DistroStage.FinalUnlock);

kdaol.unlockAllEven();

vm.prank(DEV_FUND);
vm.prank(VOTING);
}
}
6 changes: 3 additions & 3 deletions test/RedeemIntegrationTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ pragma solidity ^0.8.0;
import {KDAO, LockedKDAO} from "contracts/KDAO.sol";
import {Test} from "forge-std/Test.sol";
import {
DEV_FUND,
KDAOL,
KDAOL_DEPLOYER,
KDAO_ADDR,
KDAO_DEPLOYER,
PROTOCOL_FUND,
PROTOCOL_FUND_DEPLOYER
PROTOCOL_FUND_DEPLOYER,
VOTING
} from "interfaces/Addresses.sol";
import {IERC20} from "interfaces/IERC20.sol";
import {IProtocolFund} from "interfaces/IProtocolFund.sol";
Expand Down Expand Up @@ -88,7 +88,7 @@ contract RedeemIngegrationTest is Test {
}

function mintAll(uint256 amount) public {
vm.startPrank(DEV_FUND);
vm.startPrank(VOTING);
for (uint256 i = 1; i <= 20; ++i) {
kdao.mintTo((amount << 160) | uint160(vm.addr(i)));
}
Expand Down

0 comments on commit d485af2

Please sign in to comment.