InstaMaker code cleanup.

This commit is contained in:
Sowmayjain 2019-03-29 04:11:43 +05:30
parent d457d3ae8f
commit e5ab0596de

View File

@ -72,7 +72,6 @@ contract TubInterface {
function gov() public view returns (TokenInterface); function gov() public view returns (TokenInterface);
function skr() public view returns (TokenInterface); function skr() public view returns (TokenInterface);
function sai() public view returns (TokenInterface); function sai() public view returns (TokenInterface);
function mat() public view returns (uint);
function ink(bytes32) public view returns (uint); function ink(bytes32) public view returns (uint);
function tab(bytes32) public view returns (uint); function tab(bytes32) public view returns (uint);
function rap(bytes32) public view returns (uint); function rap(bytes32) public view returns (uint);
@ -144,6 +143,16 @@ contract Helpers is DSMath {
return uint(ethrate); return uint(ethrate);
} }
/**
* @dev get stability fees in DAI
* @param wad is the DAI to wipe
*/
function getStabilityFees(uint cdpNum, uint wad) public view returns (uint saiDebtFee) {
bytes32 cup = bytes32(cdpNum);
TubInterface tub = TubInterface(getSaiTubAddress());
saiDebtFee = rmul(wad, rdiv(tub.rap(cup), tub.tab(cup)));
}
/** /**
* @dev handling stability fees payment * @dev handling stability fees payment
*/ */
@ -170,6 +179,9 @@ contract CDPResolver is Helpers {
return TubInterface(getSaiTubAddress()).open(); return TubInterface(getSaiTubAddress()).open();
} }
/**
* @dev transfer CDP ownership
*/
function give(uint cdpNum, address nextOwner) public { function give(uint cdpNum, address nextOwner) public {
TubInterface(getSaiTubAddress()).give(bytes32(cdpNum), nextOwner); TubInterface(getSaiTubAddress()).give(bytes32(cdpNum), nextOwner);
} }
@ -200,10 +212,32 @@ contract CDPResolver is Helpers {
} }
} }
function free(uint cdpNum, uint jam) public {
bytes32 cup = bytes32(cdpNum);
address tubAddr = getSaiTubAddress();
if (jam > 0) {
TubInterface tub = TubInterface(tubAddr);
uint ink = rdiv(jam, tub.per());
ink = rmul(ink, tub.per()) <= jam ? ink : ink - 1;
tub.free(cup, ink);
if (tub.skr().allowance(address(this), tubAddr) != uint(-1)) {
tub.skr().approve(tubAddr, uint(-1));
}
tub.exit(ink);
uint freeJam = tub.gem().balanceOf(address(this)); // Withdraw possible previous stuck WETH as well
tub.gem().withdraw(freeJam);
address(msg.sender).transfer(freeJam);
}
}
function draw(uint cdpNum, uint wad) public { function draw(uint cdpNum, uint wad) public {
bytes32 cup = bytes32(cdpNum); bytes32 cup = bytes32(cdpNum);
if (wad > 0) { if (wad > 0) {
TubInterface tub = TubInterface(getSaiTubAddress()); TubInterface tub = TubInterface(getSaiTubAddress());
(address lad,,,) = tub.cups(cup);
require(lad == address(this), "cup-not-owned");
tub.draw(cup, wad); tub.draw(cup, wad);
tub.sai().transfer(msg.sender, wad); tub.sai().transfer(msg.sender, wad);
} }
@ -228,24 +262,6 @@ contract CDPResolver is Helpers {
} }
} }
function free(uint cdpNum, uint jam) public {
bytes32 cup = bytes32(cdpNum);
address tubAddr = getSaiTubAddress();
if (jam > 0) {
TubInterface tub = TubInterface(tubAddr);
uint ink = rdiv(jam, tub.per());
ink = rmul(ink, tub.per()) <= jam ? ink : ink - 1;
tub.free(cup, ink);
if (tub.skr().allowance(address(this), tubAddr) != uint(-1)) {
tub.skr().approve(tubAddr, uint(-1));
}
tub.exit(ink);
uint freeJam = tub.gem().balanceOf(address(this)); // Withdraw possible previous stuck WETH as well
tub.gem().withdraw(freeJam);
address(msg.sender).transfer(freeJam);
}
}
} }
@ -256,6 +272,9 @@ contract CDPCluster is CDPResolver {
free(cdpNum, jam); free(cdpNum, jam);
} }
/**
* @dev close CDP
*/
function shut(uint cdpNum) public { function shut(uint cdpNum) public {
bytes32 cup = bytes32(cdpNum); bytes32 cup = bytes32(cdpNum);
TubInterface tub = TubInterface(getSaiTubAddress()); TubInterface tub = TubInterface(getSaiTubAddress());
@ -263,6 +282,9 @@ contract CDPCluster is CDPResolver {
tub.shut(cup); tub.shut(cup);
} }
/**
* @dev open a new CDP and lock ETH
*/
function openAndLock() public payable returns (bytes32 cup) { function openAndLock() public payable returns (bytes32 cup) {
cup = open(); cup = open();
lock(uint(cup)); lock(uint(cup));