Skip to content

Commit

Permalink
Approve tokens to mkrNgt in the constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
oldchili committed Dec 20, 2023
1 parent 013d119 commit ecb993c
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 7 deletions.
8 changes: 2 additions & 6 deletions src/LockstakeEngine.sol
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ contract LockstakeEngine is Multicall {
vat.hope(nstJoin_);
mkrNgt = MkrNgtLike(mkrNgt_);
ngt = GemLike(mkrNgt.ngt());
ngt.approve(address(mkrNgt), type(uint256).max);
gov.approve(address(mkrNgt), type(uint256).max);
mkrNgtRate = mkrNgt.rate();

wards[msg.sender] = 1;
Expand Down Expand Up @@ -231,17 +233,14 @@ contract LockstakeEngine is Multicall {

function lockNgt(address urn, uint256 ngtWad) external urnAuth(urn) {
ngt.transferFrom(msg.sender, address(this), ngtWad);
ngt.approve(address(mkrNgt), ngtWad);
mkrNgt.ngtToMkr(address(this), ngtWad);
_lock(urn, ngtWad / mkrNgtRate);

emit LockNgt(urn, ngtWad);
}

function lock(address urn, uint256 wad) external urnAuth(urn) {
gov.transferFrom(msg.sender, address(this), wad);
_lock(urn, wad);

emit Lock(urn, wad);
}

Expand All @@ -262,16 +261,13 @@ contract LockstakeEngine is Multicall {
function freeNgt(address urn, address to, uint256 ngtWad) external urnAuth(urn) {
uint256 wad = ngtWad / mkrNgtRate;
uint256 freed = _free(urn, wad);
gov.approve(address(mkrNgt), freed);
mkrNgt.mkrToNgt(to, freed);

emit FreeNgt(urn, to, ngtWad, wad - freed);
}

function free(address urn, address to, uint256 wad) external urnAuth(urn) {
uint256 freed = _free(urn, wad);
gov.transfer(to, freed);

emit Free(urn, to, wad, wad - freed);
}

Expand Down
4 changes: 3 additions & 1 deletion test/LockstakeEngine.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ contract AllocatorVaultTest is DssTest {
GemMock public rTok;
StakingRewardsMock public farm;
MkrNgtMock public mkrNgt;
GemMock public ngt;
bytes32 public ilk = "LSE";
address public voter;
address public voterDelegate;
Expand Down Expand Up @@ -116,7 +117,8 @@ contract AllocatorVaultTest is DssTest {
stkGov = new GemMock(0);
rTok = new GemMock(0);
farm = new StakingRewardsMock(address(rTok), address(stkGov));
mkrNgt = new MkrNgtMock(address(0), address(0), 0); // TODO: set real values
ngt = new GemMock(0);
mkrNgt = new MkrNgtMock(address(gov), address(ngt), 25_000);

pip = new PipMock();
delFactory = new DelegateFactoryMock(address(gov));
Expand Down

0 comments on commit ecb993c

Please sign in to comment.