Skip to content

Commit

Permalink
Rename ngt to more general gov wording
Browse files Browse the repository at this point in the history
  • Loading branch information
sunbreak1211 committed Nov 22, 2023
1 parent 38a06e2 commit c2d9b4f
Show file tree
Hide file tree
Showing 4 changed files with 164 additions and 164 deletions.
46 changes: 23 additions & 23 deletions src/LockstakeEngine.sol
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ contract LockstakeEngine {
NstJoinLike immutable public nstJoin;
GemLike immutable public nst;
bytes32 immutable public ilk;
GemLike immutable public ngt;
GemLike immutable public stkNgt;
GemLike immutable public gov;
GemLike immutable public stkGov;
uint256 immutable public fee;

// --- events ---
Expand Down Expand Up @@ -118,14 +118,14 @@ contract LockstakeEngine {

// --- constructor ---

constructor(address delegateFactory_, address nstJoin_, bytes32 ilk_, address stkNgt_, uint256 fee_) {
constructor(address delegateFactory_, address nstJoin_, bytes32 ilk_, address stkGov_, uint256 fee_) {
delegateFactory = DelegateFactoryLike(delegateFactory_);
nstJoin = NstJoinLike(nstJoin_);
vat = nstJoin.vat();
nst = nstJoin.nst();
ilk = ilk_;
ngt = delegateFactory.gov();
stkNgt = GemLike(stkNgt_);
gov = delegateFactory.gov();
stkGov = GemLike(stkGov_);
fee = fee_;
nst.approve(nstJoin_, type(uint256).max);
vat.hope(nstJoin_);
Expand Down Expand Up @@ -177,7 +177,7 @@ contract LockstakeEngine {
uint256 index
) external view returns (address urn) {
uint256 salt = uint256(keccak256(abi.encode(owner, index)));
bytes32 codeHash = keccak256(abi.encodePacked(type(LockstakeUrn).creationCode, abi.encode(vat, stkNgt)));
bytes32 codeHash = keccak256(abi.encodePacked(type(LockstakeUrn).creationCode, abi.encode(vat, stkGov)));
urn = address(uint160(uint256(
keccak256(
abi.encodePacked(bytes1(0xff), address(this), salt, codeHash)
Expand All @@ -190,7 +190,7 @@ contract LockstakeEngine {
function open(address delegate) external returns (address urn) {
require(delegateFactory.isDelegate(delegate) == 1, "LockstateEngine/not-valid-delegate");
uint256 salt = uint256(keccak256(abi.encode(msg.sender, urnsAmt[msg.sender]++)));
bytes memory code = abi.encodePacked(type(LockstakeUrn).creationCode, abi.encode(vat, stkNgt));
bytes memory code = abi.encodePacked(type(LockstakeUrn).creationCode, abi.encode(vat, stkGov));
assembly {
urn := create2(0, add(code, 0x20), mload(code), salt)
}
Expand All @@ -202,28 +202,28 @@ contract LockstakeEngine {

function lock(address urn, uint256 wad) external urnOwner(urn) {
require(wad <= uint256(type(int256).max), "LockstateEngine/wad-overflow");
ngt.transferFrom(msg.sender, address(this), wad);
gov.transferFrom(msg.sender, address(this), wad);
address delegate = urnDelegates[urn];
ngt.approve(address(delegate), wad);
gov.approve(address(delegate), wad);
DelegateLike(delegate).lock(wad);
// TODO: define if we want an internal registry to register how much is locked per user,
// the vat.slip and stkNgt balance act already as a registry so probably not needed an extra one
// the vat.slip and stkGov balance act already as a registry so probably not needed an extra one
vat.slip(ilk, urn, int256(wad));
vat.frob(ilk, urn, urn, address(0), int256(wad), 0);
stkNgt.mint(urn, wad);
stkGov.mint(urn, wad);
emit Lock(urn, wad);
}

function free(address urn, uint256 wad) external urnOwner(urn) {
require(wad <= uint256(type(int256).max), "LockstateEngine/wad-overflow");
vat.frob(ilk, urn, urn, address(0), -int256(wad), 0);
vat.slip(ilk, urn, -int256(wad));
stkNgt.burn(urn, wad);
stkGov.burn(urn, wad);
address delegate = urnDelegates[urn];
DelegateLike(delegate).free(wad);
uint256 burn = wad * fee / WAD;
ngt.burn(address(this), burn);
ngt.transfer(msg.sender, wad - burn);
gov.burn(address(this), burn);
gov.transfer(msg.sender, wad - burn);
emit Free(urn, wad, burn);
}

Expand All @@ -233,7 +233,7 @@ contract LockstakeEngine {
require(prevDelegate != delegate, "LockstateEngine/same-delegate");
(uint256 wad,) = vat.urns(ilk, urn);
DelegateLike(prevDelegate).free(wad);
ngt.approve(address(delegate), wad);
gov.approve(address(delegate), wad);
DelegateLike(delegate).lock(wad);
urnDelegates[urn] = delegate;
emit Move(urn, delegate);
Expand Down Expand Up @@ -294,19 +294,19 @@ contract LockstakeEngine {
function onKick(address urn, uint256 wad) external auth {
address selectedFarmUrn = selectedFarm[urn];
if (selectedFarmUrn != address(0)){
uint256 freed = GemLike(stkNgt).balanceOf(address(urn));
uint256 freed = GemLike(stkGov).balanceOf(address(urn));
if (wad > freed) {
LockstakeUrn(urn).withdraw(selectedFarmUrn, wad - freed);
}
}
stkNgt.burn(urn, wad); // Burn the whole liquidated amount of staking token
DelegateLike(urnDelegates[urn]).free(wad); // Undelegate liquidated amount and retain NGT
stkGov.burn(urn, wad); // Burn the whole liquidated amount of staking token
DelegateLike(urnDelegates[urn]).free(wad); // Undelegate liquidated amount and retain GOV
// Urn confiscation happens in Dog contract where ilk vat.gem is sent to the LockstakeClipper
emit OnKick(urn, wad);
}

function onTake(address urn, address who, uint256 wad) external auth {
ngt.transfer(who, wad); // Free NGT to the auction buyer
gov.transfer(who, wad); // Free GOV to the auction buyer
emit OnTake(urn, who, wad);
}

Expand All @@ -318,20 +318,20 @@ contract LockstakeEngine {
} else {
unchecked { left = left - burn; }
}
ngt.burn(address(this), burn); // Burn NGT
gov.burn(address(this), burn); // Burn GOV
if (left > 0) {
address delegate = urnDelegates[urn];
ngt.approve(address(delegate), left);
gov.approve(address(delegate), left);
DelegateLike(delegate).lock(left);
vat.slip(ilk, urn, int256(left));
vat.frob(ilk, urn, urn, address(0), int256(left), 0);
stkNgt.mint(urn, left);
stkGov.mint(urn, left);
}
emit OnTakeLeftovers(urn, tot, left, burn);
}

function onYank(address urn, uint256 wad) external auth {
ngt.burn(address(this), wad);
gov.burn(address(this), wad);
emit OnYank(urn, wad);
}
}
10 changes: 5 additions & 5 deletions src/LockstakeUrn.sol
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ contract LockstakeUrn {
// --- immutables ---

address immutable public engine;
GemLike immutable public stkNgt;
GemLike immutable public stkGov;

// --- modifiers ---

Expand All @@ -48,17 +48,17 @@ contract LockstakeUrn {

// --- constructor ---

constructor(address vat_, address stkNgt_) {
constructor(address vat_, address stkGov_) {
engine = msg.sender;
stkNgt = GemLike(stkNgt_);
stkGov = GemLike(stkGov_);
VatLike(vat_).hope(msg.sender);
stkNgt.approve(msg.sender, type(uint256).max);
stkGov.approve(msg.sender, type(uint256).max);
}

// --- staking functions ---

function stake(address farm, uint256 wad, uint16 ref) external isEngine {
stkNgt.approve(farm, wad);
stkGov.approve(farm, wad);
StakingRewardsLike(farm).stake(wad, ref);
}

Expand Down
Loading

0 comments on commit c2d9b4f

Please sign in to comment.