Skip to content

Commit

Permalink
feat: rational flow
Browse files Browse the repository at this point in the history
  • Loading branch information
GalloDaSballo committed Oct 14, 2024
1 parent af5132f commit f118d1f
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/BribeInitiative.sol
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ contract BribeInitiative is IInitiative, IBribeInitiative {
function depositBribe(uint128 _boldAmount, uint128 _bribeTokenAmount, uint16 _epoch) external {

uint16 epoch = governance.epoch();
require(_epoch > epoch, "BribeInitiative: only-future-epochs");
require(_epoch >= epoch, "BribeInitiative: only-future-epochs");

Bribe memory bribe = bribeByEpoch[_epoch];
bribe.boldAmount += _boldAmount;
Expand Down
18 changes: 14 additions & 4 deletions test/BribeInitiative.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ contract BribeInitiativeTest is Test {
assertEq(totalLQTYAllocated, 0);
}

// forge test --match-test test_rationalFlow -vv
// forge test --match-test test_rationalFlow -vvvv
function test_rationalFlow() public {
vm.warp(block.timestamp + (EPOCH_DURATION)); // Initiative not active

Expand All @@ -359,12 +359,12 @@ contract BribeInitiativeTest is Test {
_allocateLQTY(user1, 5e17, 0); /// @audit Allocate b4 or after bribe should be irrelevant

/// @audit WTF
_depositBribe(1e18, 1e18, governance.epoch() + 1); /// @audit IMO this should also work
_depositBribe(1e18, 1e18, governance.epoch()); /// @audit IMO this should also work

_allocateLQTY(user1, 5e17, 0); /// @audit Allocate b4 or after bribe should be irrelevant

// deposit bribe for Epoch + 2
_depositBribe(1e18, 1e18, governance.epoch() + 2);
_depositBribe(1e18, 1e18, governance.epoch() + 1);


(uint88 totalLQTYAllocated,) =
Expand All @@ -378,10 +378,13 @@ contract BribeInitiativeTest is Test {
// We are now at epoch + 1 // Should be able to claim epoch - 1

// user should receive bribe from their allocated stake
(uint256 boldAmount, uint256 bribeTokenAmount) = _claimBribe(user1, governance.epoch(), governance.epoch() - 1, governance.epoch() - 1);
(uint256 boldAmount, uint256 bribeTokenAmount) = _claimBribe(user1, governance.epoch() - 1, governance.epoch() - 1, governance.epoch() - 1);
assertEq(boldAmount, 1e18, "bold amount");
assertEq(bribeTokenAmount, 1e18, "bribe amount");

// And they cannot claim the one that is being added currently
_claimBribe(user1, governance.epoch(), governance.epoch() - 1, governance.epoch() - 1, true);

// decrease user allocation for the initiative
_allocateLQTY(user1, -1e18, 0);

Expand Down Expand Up @@ -643,11 +646,18 @@ contract BribeInitiativeTest is Test {
}

function _claimBribe(address claimer, uint16 epoch, uint16 prevLQTYAllocationEpoch, uint16 prevTotalLQTYAllocationEpoch) public returns (uint256 boldAmount, uint256 bribeTokenAmount){
return _claimBribe(claimer, epoch, prevLQTYAllocationEpoch, prevTotalLQTYAllocationEpoch, false);
}

function _claimBribe(address claimer, uint16 epoch, uint16 prevLQTYAllocationEpoch, uint16 prevTotalLQTYAllocationEpoch, bool expectRevert) public returns (uint256 boldAmount, uint256 bribeTokenAmount){
vm.startPrank(claimer);
BribeInitiative.ClaimData[] memory epochs = new BribeInitiative.ClaimData[](1);
epochs[0].epoch = epoch;
epochs[0].prevLQTYAllocationEpoch = prevLQTYAllocationEpoch;
epochs[0].prevTotalLQTYAllocationEpoch = prevTotalLQTYAllocationEpoch;
if(expectRevert) {
vm.expectRevert();
}
(boldAmount, bribeTokenAmount) = bribeInitiative.claimBribes(epochs);
vm.stopPrank();
}
Expand Down

0 comments on commit f118d1f

Please sign in to comment.