Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion packages/protocol/contracts-0.8/common/EpochManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,7 @@ contract EpochManager is
* @return Patch version of the contract.
*/
function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {
return (1, 1, 0, 3);
return (1, 1, 1, 0);
}

/**
Expand Down Expand Up @@ -761,6 +761,10 @@ contract EpochManager is
_setElectedSigners(_newlyElected);

ICeloUnreleasedTreasury celoUnreleasedTreasury = getCeloUnreleasedTreasury();
celoUnreleasedTreasury.release(
registry.getAddressForOrDie(LOCKED_GOLD_REGISTRY_ID),
_epochProcessing.totalRewardsVoter
Comment thread
pahor167 marked this conversation as resolved.
Outdated
);
celoUnreleasedTreasury.release(
registry.getAddressForOrDie(GOVERNANCE_REGISTRY_ID),
_epochProcessing.totalRewardsCommunity
Expand Down
65 changes: 65 additions & 0 deletions packages/protocol/test-sol/unit/common/EpochManager.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ contract EpochManagerTest is TestWithUtils08 {
address carbonOffsettingPartner;
address communityRewardFund;
address reserveAddress;
address lockedGoldAddress;
address scoreManagerAddress;

uint256 firstEpochNumber = 3;
Expand Down Expand Up @@ -90,6 +91,7 @@ contract EpochManagerTest is TestWithUtils08 {
scoreManagerAddress = actor("scoreManagerAddress");

reserveAddress = actor("reserve");
lockedGoldAddress = actor("lockedGold");

carbonOffsettingPartner = actor("carbonOffsettingPartner");
communityRewardFund = actor("communityRewardFund");
Expand All @@ -108,6 +110,7 @@ contract EpochManagerTest is TestWithUtils08 {
registry.setAddressFor(ScoreManagerContract, address(scoreManager));
registry.setAddressFor(StableTokenContract, address(stableToken));
registry.setAddressFor(ReserveContract, reserveAddress);
registry.setAddressFor(LockedGoldContract, lockedGoldAddress);
registry.setAddressFor(ElectionContract, address(election));

celoUnreleasedTreasury.setRegistry(REGISTRY_ADDRESS);
Expand Down Expand Up @@ -578,6 +581,53 @@ contract EpochManagerTest_finishNextEpochProcess is EpochManagerTest {
assertEq(celoToken.balanceOf(carbonOffsettingPartner), epochRewards.totalRewardsCarbonFund());
}

function test_TransfersVoterRewardsToLockedGold() public {
(
address[] memory groups,
address[] memory lessers,
address[] memory greaters
) = getGroupsWithLessersAndGreaters();

uint256 lockedGoldBalanceBefore = celoToken.balanceOf(lockedGoldAddress);

epochManagerContract.startNextEpochProcess();
epochManagerContract.finishNextEpochProcess(groups, lessers, greaters);

uint256 lockedGoldBalanceAfter = celoToken.balanceOf(lockedGoldAddress);
assertEq(
lockedGoldBalanceAfter - lockedGoldBalanceBefore,
epochRewards.totalRewardsVoter(),
"LockedGold should receive totalRewardsVoter CELO"
Comment thread
pahor167 marked this conversation as resolved.
Outdated
);
}

function test_TransfersAllEpochRewards() public {
Comment thread
pahor167 marked this conversation as resolved.
Outdated
(
address[] memory groups,
address[] memory lessers,
address[] memory greaters
) = getGroupsWithLessersAndGreaters();

epochManagerContract.startNextEpochProcess();
epochManagerContract.finishNextEpochProcess(groups, lessers, greaters);

assertEq(
celoToken.balanceOf(lockedGoldAddress),
epochRewards.totalRewardsVoter(),
"LockedGold should receive voter rewards"
);
assertEq(
celoToken.balanceOf(communityRewardFund),
epochRewards.totalRewardsCommunity(),
"Governance should receive community rewards"
);
assertEq(
celoToken.balanceOf(carbonOffsettingPartner),
epochRewards.totalRewardsCarbonFund(),
"Carbon fund should receive carbon rewards"
);
}

function test_TransfersToValidatorGroup() public {
(
address[] memory groups,
Expand Down Expand Up @@ -743,6 +793,21 @@ contract EpochManagerTest_processGroup is EpochManagerTest {
assertEq(celoToken.balanceOf(carbonOffsettingPartner), epochRewards.totalRewardsCarbonFund());
}

function test_TransfersVoterRewardsToLockedGold() public {
uint256 lockedGoldBalanceBefore = celoToken.balanceOf(lockedGoldAddress);

epochManagerContract.startNextEpochProcess();
epochManagerContract.setToProcessGroups();
epochManagerContract.processGroup(group, address(0), address(0));

uint256 lockedGoldBalanceAfter = celoToken.balanceOf(lockedGoldAddress);
assertEq(
lockedGoldBalanceAfter - lockedGoldBalanceBefore,
epochRewards.totalRewardsVoter(),
"LockedGold should receive totalRewardsVoter CELO via processGroup path"
);
}

Comment thread
pahor167 marked this conversation as resolved.
function test_TransfersToValidatorGroup() public {
epochManagerContract.startNextEpochProcess();
epochManagerContract.setToProcessGroups();
Expand Down
Loading