update get controller function

This commit is contained in:
q1q0 2023-09-07 16:29:30 -04:00
parent 4980c0c9a0
commit 12d86342ba
3 changed files with 34 additions and 22 deletions

View File

@ -17,7 +17,7 @@ abstract contract Helpers is DSMath, Basic {
/** /**
* @dev Get controller address by given collateral asset * @dev Get controller address by given collateral asset
*/ */
function getController(address collateral) internal view returns(IController controller) { function getController(address collateral, uint256 i) internal view returns(IController controller) {
controller = IController(ctrFactory.get_controller(collateral, 0)); controller = IController(ctrFactory.get_controller(collateral, i));
} }
} }

View File

@ -15,18 +15,20 @@ abstract contract MakerResolver is Helpers, Events {
/** /**
* @dev Create loan * @dev Create loan
* @param collateral collateral token address * @param collateral collateral token address
* @param version controller version
* @param amt Amount of collateral to use * @param amt Amount of collateral to use
* @param debt Stablecoin debt to take * @param debt Stablecoin debt to take
* @param N Number of bands to deposit into (to do autoliquidation-deliquidation), can be from MIN_TICKS(4) to MAX_TICKS(50) * @param N Number of bands to deposit into (to do autoliquidation-deliquidation), can be from MIN_TICKS(4) to MAX_TICKS(50)
*/ */
function createLoan( function createLoan(
address collateral, address collateral,
uint256 version,
uint256 amt, uint256 amt,
uint256 debt, uint256 debt,
uint256 N uint256 N
) external returns (string memory _eventName, bytes memory _eventParam) { ) external returns (string memory _eventName, bytes memory _eventParam) {
address _collateral = collateral == ethAddr ? wethAddr : collateral; address _collateral = collateral == ethAddr ? wethAddr : collateral;
IController controller = getController(_collateral); IController controller = getController(_collateral, version);
uint256 _amt = amt; uint256 _amt = amt;
uint256 ethAmt; uint256 ethAmt;
@ -50,18 +52,20 @@ abstract contract MakerResolver is Helpers, Events {
* @dev Add collateral * @dev Add collateral
* @notice Add extra collateral to avoid bad liqidations * @notice Add extra collateral to avoid bad liqidations
* @param collateral collateral asset address * @param collateral collateral asset address
* @param version controller version
* @param amt Amount of collateral to add * @param amt Amount of collateral to add
* @param getId ID to retrieve amt. * @param getId ID to retrieve amt.
* @param setId ID stores the collateral amount of tokens added. * @param setId ID stores the collateral amount of tokens added.
*/ */
function addCollateral( function addCollateral(
address collateral, address collateral,
uint256 version,
uint256 amt, uint256 amt,
uint256 getId, uint256 getId,
uint256 setId uint256 setId
) external returns (string memory _eventName, bytes memory _eventParam) { ) external returns (string memory _eventName, bytes memory _eventParam) {
address _collateral = collateral == ethAddr ? wethAddr : collateral; address _collateral = collateral == ethAddr ? wethAddr : collateral;
IController controller = getController(_collateral); IController controller = getController(_collateral, version);
uint _amt = getUint(getId, amt); uint _amt = getUint(getId, amt);
uint ethAmt; uint ethAmt;
@ -85,18 +89,20 @@ abstract contract MakerResolver is Helpers, Events {
* @dev Remove ETH/ERC20_Token Collateral. * @dev Remove ETH/ERC20_Token Collateral.
* @notice Remove some collateral without repaying the debt * @notice Remove some collateral without repaying the debt
* @param collateral collateral asset address * @param collateral collateral asset address
* @param version controller version
* @param amt Amount of collateral to add * @param amt Amount of collateral to add
* @param getId ID to retrieve amt. * @param getId ID to retrieve amt.
* @param setId ID stores the amount of tokens deposited. * @param setId ID stores the amount of tokens deposited.
*/ */
function removeCollateral( function removeCollateral(
address collateral, address collateral,
uint256 version,
uint256 amt, uint256 amt,
uint256 getId, uint256 getId,
uint256 setId uint256 setId
) external returns (string memory _eventName, bytes memory _eventParam) { ) external returns (string memory _eventName, bytes memory _eventParam) {
address _collateral = collateral == ethAddr ? wethAddr : collateral; address _collateral = collateral == ethAddr ? wethAddr : collateral;
IController controller = getController(_collateral); IController controller = getController(_collateral, version);
uint _amt = getUint(getId, amt); uint _amt = getUint(getId, amt);
controller.remove_collateral(_amt, collateral == ethAddr); controller.remove_collateral(_amt, collateral == ethAddr);
@ -110,16 +116,18 @@ abstract contract MakerResolver is Helpers, Events {
/** /**
* @dev Borrow more stablecoins while adding more collateral (not necessary) * @dev Borrow more stablecoins while adding more collateral (not necessary)
* @param collateral collateral token address * @param collateral collateral token address
* @param version controller version
* @param amt Amount of collateral to add * @param amt Amount of collateral to add
* @param debt Amount of stablecoin debt to take * @param debt Amount of stablecoin debt to take
*/ */
function borrowMore( function borrowMore(
address collateral, address collateral,
uint256 version,
uint256 amt, uint256 amt,
uint256 debt uint256 debt
) external returns (string memory _eventName, bytes memory _eventParam) { ) external returns (string memory _eventName, bytes memory _eventParam) {
address _collateral = collateral == ethAddr ? wethAddr : collateral; address _collateral = collateral == ethAddr ? wethAddr : collateral;
IController controller = getController(_collateral); IController controller = getController(_collateral, version);
uint _amt = amt; uint _amt = amt;
uint ethAmt; uint ethAmt;
@ -145,18 +153,20 @@ abstract contract MakerResolver is Helpers, Events {
* @dev Borrow DAI. * @dev Borrow DAI.
* @notice Borrow DAI using a MakerDAO vault * @notice Borrow DAI using a MakerDAO vault
* @param collateral collateral token address * @param collateral collateral token address
* @param version controller version
* @param amt The amount of debt to repay. If higher than the current debt - will do full repayment * @param amt The amount of debt to repay. If higher than the current debt - will do full repayment
* @param getId ID to retrieve amt. * @param getId ID to retrieve amt.
* @param setId ID stores the amount of DAI borrowed. * @param setId ID stores the amount of DAI borrowed.
*/ */
function repay( function repay(
address collateral, address collateral,
uint256 version,
uint256 amt, uint256 amt,
uint256 getId, uint256 getId,
uint256 setId uint256 setId
) external payable returns (string memory _eventName, bytes memory _eventParam) { ) external payable returns (string memory _eventName, bytes memory _eventParam) {
address _collateral = collateral == ethAddr ? wethAddr : collateral; address _collateral = collateral == ethAddr ? wethAddr : collateral;
IController controller = getController(_collateral); IController controller = getController(_collateral, version);
uint _amt = amt; uint _amt = amt;
TokenInterface stableCoin = TokenInterface(CRV_USD); TokenInterface stableCoin = TokenInterface(CRV_USD);
@ -173,14 +183,16 @@ abstract contract MakerResolver is Helpers, Events {
/** /**
* @dev Peform a bad liquidation (or self-liquidation) of user if health is not good * @dev Peform a bad liquidation (or self-liquidation) of user if health is not good
* @param collateral collateral token address * @param collateral collateral token address
* @param version controller version
* @param min_x Minimal amount of stablecoin to receive (to avoid liquidators being sandwiched) * @param min_x Minimal amount of stablecoin to receive (to avoid liquidators being sandwiched)
*/ */
function liquidate( function liquidate(
address collateral, address collateral,
uint256 version,
uint256 min_x uint256 min_x
) external payable returns (string memory _eventName, bytes memory _eventParam) { ) external payable returns (string memory _eventName, bytes memory _eventParam) {
address _collateral = collateral == ethAddr ? wethAddr : collateral; address _collateral = collateral == ethAddr ? wethAddr : collateral;
IController controller = getController(_collateral); IController controller = getController(_collateral, version);
controller.liquidate(address(this), min_x, collateral == ethAddr); controller.liquidate(address(this), min_x, collateral == ethAddr);

View File

@ -174,7 +174,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "createLoan", method: "createLoan",
args: [tokens.sfrxeth.address, ethers.utils.parseEther('1').toString(), ethers.utils.parseEther('1000'), 10] args: [tokens.sfrxeth.address, "0", ethers.utils.parseEther('1').toString(), ethers.utils.parseEther('1000'), 10]
} }
]; ];
@ -192,7 +192,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "addCollateral", method: "addCollateral",
args: [tokens.sfrxeth.address, ethers.utils.parseEther('1').toString(), 0, 0] args: [tokens.sfrxeth.address, "0", ethers.utils.parseEther('1').toString(), 0, 0]
} }
]; ];
@ -210,7 +210,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "removeCollateral", method: "removeCollateral",
args: [tokens.sfrxeth.address, ethers.utils.parseEther('1').toString(), 0, 0] args: [tokens.sfrxeth.address, "0", ethers.utils.parseEther('1').toString(), 0, 0]
} }
]; ];
@ -228,7 +228,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "borrowMore", method: "borrowMore",
args: [tokens.sfrxeth.address, '0', ethers.utils.parseEther('50')] args: [tokens.sfrxeth.address, "0", '0', ethers.utils.parseEther('50')]
} }
]; ];
@ -246,7 +246,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "borrowMore", method: "borrowMore",
args: [tokens.sfrxeth.address, ethers.utils.parseEther('2'), dsaMaxValue] args: [tokens.sfrxeth.address, "0", ethers.utils.parseEther('2'), dsaMaxValue]
} }
]; ];
@ -263,7 +263,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "createLoan", method: "createLoan",
args: [tokens.sfrxeth.address, ethers.utils.parseEther('1').toString(), dsaMaxValue, 10] args: [tokens.sfrxeth.address, "0", ethers.utils.parseEther('1').toString(), dsaMaxValue, 10]
} }
]; ];
@ -275,7 +275,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "createLoan", method: "createLoan",
args: [tokens.sfrxeth.address, ethers.utils.parseEther('1').toString(), dsaMaxValue, 10] args: [tokens.sfrxeth.address, "0", ethers.utils.parseEther('1').toString(), dsaMaxValue, 10]
} }
]; ];
@ -294,7 +294,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "createLoan", method: "createLoan",
args: [tokens.sfrxeth.address, dsaMaxValue, dsaMaxValue, 10] args: [tokens.sfrxeth.address, "0", dsaMaxValue, dsaMaxValue, 10]
} }
]; ];
@ -316,7 +316,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "createLoan", method: "createLoan",
args: [tokens.eth.address, ethers.utils.parseEther('2').toString(), dsaMaxValue, 10] args: [tokens.eth.address, "0", ethers.utils.parseEther('2').toString(), dsaMaxValue, 10]
} }
]; ];
@ -335,7 +335,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "addCollateral", method: "addCollateral",
args: [tokens.eth.address, ethers.utils.parseEther('3').toString(), 0, 0] args: [tokens.eth.address, "0", ethers.utils.parseEther('3').toString(), 0, 0]
} }
]; ];
@ -353,7 +353,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "removeCollateral", method: "removeCollateral",
args: [tokens.eth.address, ethers.utils.parseEther('1').toString(), 0, 0] args: [tokens.eth.address, "0", ethers.utils.parseEther('1').toString(), 0, 0]
} }
]; ];
@ -371,7 +371,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "borrowMore", method: "borrowMore",
args: [tokens.eth.address, '0', ethers.utils.parseEther('10')] args: [tokens.eth.address, "0", '0', ethers.utils.parseEther('10')]
} }
]; ];
@ -389,7 +389,7 @@ describe("CRV USD", function () {
{ {
connector: connectorName, connector: connectorName,
method: "borrowMore", method: "borrowMore",
args: [tokens.eth.address, '0', dsaMaxValue] args: [tokens.eth.address, "0", '0', dsaMaxValue]
} }
]; ];