chore: cleanup

This commit is contained in:
gitpusha 2020-11-03 14:56:56 +01:00 committed by Twin Fish
parent b8e1aef64f
commit 3bff63707d
4 changed files with 147 additions and 167 deletions

View File

@ -57,7 +57,7 @@ contract ConnectGelatoDataForFullRefinance is ConnectorInterface {
/// @dev Connector Details
function connectorID()
public
external
view
override
returns (uint256 _type, uint256 id)
@ -65,11 +65,16 @@ contract ConnectGelatoDataForFullRefinance is ConnectorInterface {
(_type, id) = (1, _id); // Should put specific value.
}
/// @notice Entry Point for DSA.cast DebtBridge from e.g ETH-A to ETH-B
/// @dev payable to be compatible in conjunction with DSA.cast payable target
/// @param _vaultId Id of the unsafe vault of the client.
/// @param _token vault's col token address .
/// @param _colType colType of the new vault. example : ETH-B, ETH-A.
function getDataAndCastForFromMakerToMaker(
uint256 _vaultId,
address _token,
string calldata _colType
) public payable {
) external payable {
(
address[] memory targets,
bytes[] memory datas
@ -82,10 +87,14 @@ contract ConnectGelatoDataForFullRefinance is ConnectorInterface {
_cast(targets, datas);
}
/// @notice Entry Point for DSA.cast DebtBridge from Maker to Compound
/// @dev payable to be compatible in conjunction with DSA.cast payable target
/// @param _vaultId Id of the unsafe vault of the client.
/// @param _token vault's col token address .
function getDataAndCastForFromMakerToCompound(
uint256 _vaultId,
address _token
) public payable {
) external payable {
(
address[] memory targets,
bytes[] memory datas
@ -114,61 +123,6 @@ contract ConnectGelatoDataForFullRefinance is ConnectorInterface {
/* solhint-disable function-max-lines */
/// @notice Generate Task for a full refinancing between Maker to Compound.
/// @param _vaultId Id of the unsafe vault of the client.
/// @param _token vault's col token address .
/// @return targets : flashloan contract address
/// @return datas : calldata for flashloan
function _execPayloadForFullRefinanceFromMakerToCompound(
uint256 _vaultId,
address _token
) internal view returns (address[] memory targets, bytes[] memory datas) {
targets = new address[](1);
targets[0] = INSTA_POOL_V2;
uint256 wDaiDebtToMove = _getMakerVaultDebt(_vaultId);
uint256 wColToWithdrawFromMaker = _getMakerVaultCollateralBalance(
_vaultId
);
uint256 gasFeesPaidFromCol = _getGelatoProviderFees(GAS_COST);
address[] memory _targets = new address[](6);
_targets[0] = CONNECT_MAKER; // payback
_targets[1] = CONNECT_MAKER; // withdraw
_targets[2] = CONNECT_COMPOUND; // deposit
_targets[3] = CONNECT_COMPOUND; // borrow
_targets[4] = _connectGelatoProviderPayment;
_targets[5] = INSTA_POOL_V2;
bytes[] memory _datas = new bytes[](6);
_datas[0] = _encodePaybackMakerVault(_vaultId, uint256(-1), 0, 0);
_datas[1] = _encodedWithdrawMakerVault(_vaultId, uint256(-1), 0, 0);
_datas[2] = _encodeDepositCompound(
_token,
sub(wColToWithdrawFromMaker, gasFeesPaidFromCol),
0,
0
);
_datas[3] = _encodeBorrowCompound(DAI, wDaiDebtToMove, 0, 0);
_datas[4] = _encodePayGelatoProvider(_token, gasFeesPaidFromCol, 0, 0);
_datas[5] = _encodeFlashPayback(DAI, wDaiDebtToMove, 0, 0);
datas = new bytes[](1);
datas[0] = abi.encodeWithSelector(
IConnectInstaPoolV2.flashBorrowAndCast.selector,
DAI,
wDaiDebtToMove,
0,
abi.encode(_targets, _datas)
);
}
/// @notice Generate Task for a full refinancing between Maker e.g. ETH-A to ETH-B.
/// @param _vaultId Id of the unsafe vault of the client.
/// @param _token vault's col token address .
/// @param _colType colType of the new vault, exemple : ETH-B, ETH-A.
/// @return targets : flashloan contract address
/// @return datas : calldata for flashloan
function _execPayloadForFullRefinanceFromMakerToMaker(
uint256 _vaultId,
address _token,
@ -216,5 +170,49 @@ contract ConnectGelatoDataForFullRefinance is ConnectorInterface {
);
}
function _execPayloadForFullRefinanceFromMakerToCompound(
uint256 _vaultId,
address _token
) internal view returns (address[] memory targets, bytes[] memory datas) {
targets = new address[](1);
targets[0] = INSTA_POOL_V2;
uint256 wDaiDebtToMove = _getMakerVaultDebt(_vaultId);
uint256 wColToWithdrawFromMaker = _getMakerVaultCollateralBalance(
_vaultId
);
uint256 gasFeesPaidFromCol = _getGelatoProviderFees(GAS_COST);
address[] memory _targets = new address[](6);
_targets[0] = CONNECT_MAKER; // payback
_targets[1] = CONNECT_MAKER; // withdraw
_targets[2] = CONNECT_COMPOUND; // deposit
_targets[3] = CONNECT_COMPOUND; // borrow
_targets[4] = _connectGelatoProviderPayment;
_targets[5] = INSTA_POOL_V2;
bytes[] memory _datas = new bytes[](6);
_datas[0] = _encodePaybackMakerVault(_vaultId, uint256(-1), 0, 0);
_datas[1] = _encodedWithdrawMakerVault(_vaultId, uint256(-1), 0, 0);
_datas[2] = _encodeDepositCompound(
_token,
sub(wColToWithdrawFromMaker, gasFeesPaidFromCol),
0,
0
);
_datas[3] = _encodeBorrowCompound(DAI, wDaiDebtToMove, 0, 0);
_datas[4] = _encodePayGelatoProvider(_token, gasFeesPaidFromCol, 0, 0);
_datas[5] = _encodeFlashPayback(DAI, wDaiDebtToMove, 0, 0);
datas = new bytes[](1);
datas[0] = abi.encodeWithSelector(
IConnectInstaPoolV2.flashBorrowAndCast.selector,
DAI,
wDaiDebtToMove,
0,
abi.encode(_targets, _datas)
);
}
/* solhint-enable function-max-lines */
}

View File

@ -45,6 +45,16 @@ import {
} from "../../functions/gelato/FGelatoDebtBridge.sol";
contract ConnectGelatoDataForPartialRefinance is ConnectorInterface {
using GelatoBytes for bytes;
// vaultId: Id of the unsafe vault of the client.
// token: vault's col token address .
// wMinColRatioMaker: Min col ratio (wad) on Maker debt position
// wMinColRatioB: Min col ratio (wad) on debt position B (e.g. Compound, Maker, ...)
// priceOracle: The price oracle contract to supply the collateral price
// e.g. Maker's ETH/USD oracle for ETH collateral pricing.
// oraclePayload: The data for making the staticcall to the oracle's read
// method e.g. the function selector of MakerOracle's read function.
struct PartialDebtBridgePayload {
uint256 vaultId;
address token;
@ -54,8 +64,6 @@ contract ConnectGelatoDataForPartialRefinance is ConnectorInterface {
bytes oraclePayload;
}
using GelatoBytes for bytes;
// solhint-disable-next-line const-name-snakecase
string public constant override name = "ConnectGelatoData-v1.0";
uint256 internal immutable _id;
@ -70,7 +78,7 @@ contract ConnectGelatoDataForPartialRefinance is ConnectorInterface {
/// @dev Connector Details
function connectorID()
public
external
view
override
returns (uint256 _type, uint256 id)
@ -78,10 +86,14 @@ contract ConnectGelatoDataForPartialRefinance is ConnectorInterface {
(_type, id) = (1, _id); // Should put specific value.
}
/// @notice Entry Point for DSA.cast DebtBridge from e.g ETH-A to ETH-B
/// @dev payable to be compatible in conjunction with DSA.cast payable target
/// @param _payload See PartialDebtBridgePayload struct
/// @param _colType colType of the new vault. example : ETH-B, ETH-A.
function getDataAndCastForFromMakerToMaker(
PartialDebtBridgePayload calldata _payload,
string calldata _colType
) public payable {
) external payable {
(
address[] memory targets,
bytes[] memory datas
@ -90,9 +102,12 @@ contract ConnectGelatoDataForPartialRefinance is ConnectorInterface {
_cast(targets, datas);
}
/// @notice Entry Point for DSA.cast DebtBridge from Maker to Compound
/// @dev payable to be compatible in conjunction with DSA.cast payable target
/// @param _payload See PartialDebtBridgePayload struct
function getDataAndCastForFromMakerToCompound(
PartialDebtBridgePayload calldata _payload
) public payable {
) external payable {
(
address[] memory targets,
bytes[] memory datas
@ -121,97 +136,6 @@ contract ConnectGelatoDataForPartialRefinance is ConnectorInterface {
/* solhint-disable function-max-lines */
/// @notice Generate Task for a full refinancing between Maker to Compound.
/// @param _payload contain :
// @param _vaultId Id of the unsafe vault of the client.
// @param _token vault's col token address .
// @param _wMinColRatioMaker Min col ratio (wad) on Maker debt position
// @param _wMinColRatioB Min col ratio (wad) on debt position B (e.g. Compound, Maker, ...)
// @param _priceOracle The price oracle contract to supply the collateral price
// e.g. Maker's ETH/USD oracle for ETH collateral pricing.
// @param _oraclePayload The data for making the staticcall to the oracle's read
// method e.g. the function selector of MakerOracle's read function.
// @param _provider address of the paying provider.
/// @return targets : flashloan contract address
/// @return datas : calldata for flashloan
function _execPayloadForPartialRefinanceFromMakerToCompound(
PartialDebtBridgePayload calldata _payload
) internal view returns (address[] memory targets, bytes[] memory datas) {
targets = new address[](1);
targets[0] = INSTA_POOL_V2;
(
uint256 wDaiDebtToMove,
uint256 wColToWithdrawFromMaker,
uint256 gasFeesPaidFromCol
) = computeDebtBridge(
_payload.vaultId,
_payload.wMinColRatioMaker,
_payload.wMinColRatioB,
_payload.priceOracle,
_payload.oraclePayload
);
address[] memory _targets = new address[](6);
_targets[0] = CONNECT_MAKER; // payback
_targets[1] = CONNECT_MAKER; // withdraw
_targets[2] = CONNECT_COMPOUND; // deposit
_targets[3] = CONNECT_COMPOUND; // borrow
_targets[4] = _connectGelatoProviderPayment;
_targets[5] = INSTA_POOL_V2;
bytes[] memory _datas = new bytes[](6);
_datas[0] = _encodePaybackMakerVault(
_payload.vaultId,
uint256(-1),
0,
0
);
_datas[1] = _encodedWithdrawMakerVault(
_payload.vaultId,
uint256(-1),
0,
0
);
_datas[2] = _encodeDepositCompound(
_payload.token,
sub(wColToWithdrawFromMaker, gasFeesPaidFromCol),
0,
0
);
_datas[3] = _encodeBorrowCompound(DAI, wDaiDebtToMove, 0, 0);
_datas[4] = _encodePayGelatoProvider(
_payload.token,
gasFeesPaidFromCol,
0,
0
);
_datas[5] = _encodeFlashPayback(DAI, wDaiDebtToMove, 0, 0);
datas = new bytes[](1);
datas[0] = abi.encodeWithSelector(
IConnectInstaPoolV2.flashBorrowAndCast.selector,
DAI,
wDaiDebtToMove,
0,
abi.encode(_targets, _datas)
);
}
/// @notice Generate Task for a full refinancing between Maker e.g. ETH-A and ETH-B.
/// @param _payload contain :
// @param _vaultId Id of the unsafe vault of the client.
// @param _token vault's col token address .
// @param _wMinColRatioMaker Min col ratio (wad) on Maker debt position
// @param _wMinColRatioB Min col ratio (wad) on debt position B (e.g. Compound, Maker, ...)
// @param _priceOracle The price oracle contract to supply the collateral price
// e.g. Maker's ETH/USD oracle for ETH collateral pricing.
// @param _oraclePayload The data for making the staticcall to the oracle's read
// method e.g. the function selector of MakerOracle's read function.
// @param _provider address of the paying provider.
/// @param _colType colType of the new vault, exemple : ETH-B, ETH-A.
/// @return targets : flashloan contract address
/// @return datas : calldata for flashloan
function _execPayloadForPartialRefinanceFromMakerToMaker(
PartialDebtBridgePayload calldata _payload,
string calldata _colType
@ -279,6 +203,70 @@ contract ConnectGelatoDataForPartialRefinance is ConnectorInterface {
);
}
function _execPayloadForPartialRefinanceFromMakerToCompound(
PartialDebtBridgePayload calldata _payload
) internal view returns (address[] memory targets, bytes[] memory datas) {
targets = new address[](1);
targets[0] = INSTA_POOL_V2;
(
uint256 wDaiDebtToMove,
uint256 wColToWithdrawFromMaker,
uint256 gasFeesPaidFromCol
) = computeDebtBridge(
_payload.vaultId,
_payload.wMinColRatioMaker,
_payload.wMinColRatioB,
_payload.priceOracle,
_payload.oraclePayload
);
address[] memory _targets = new address[](6);
_targets[0] = CONNECT_MAKER; // payback
_targets[1] = CONNECT_MAKER; // withdraw
_targets[2] = CONNECT_COMPOUND; // deposit
_targets[3] = CONNECT_COMPOUND; // borrow
_targets[4] = _connectGelatoProviderPayment;
_targets[5] = INSTA_POOL_V2;
bytes[] memory _datas = new bytes[](6);
_datas[0] = _encodePaybackMakerVault(
_payload.vaultId,
uint256(-1),
0,
0
);
_datas[1] = _encodedWithdrawMakerVault(
_payload.vaultId,
uint256(-1),
0,
0
);
_datas[2] = _encodeDepositCompound(
_payload.token,
sub(wColToWithdrawFromMaker, gasFeesPaidFromCol),
0,
0
);
_datas[3] = _encodeBorrowCompound(DAI, wDaiDebtToMove, 0, 0);
_datas[4] = _encodePayGelatoProvider(
_payload.token,
gasFeesPaidFromCol,
0,
0
);
_datas[5] = _encodeFlashPayback(DAI, wDaiDebtToMove, 0, 0);
datas = new bytes[](1);
datas[0] = abi.encodeWithSelector(
IConnectInstaPoolV2.flashBorrowAndCast.selector,
DAI,
wDaiDebtToMove,
0,
abi.encode(_targets, _datas)
);
}
/// @notice Computes values needed for DebtBridge Maker->ProtocolB
/// @dev Use wad for colRatios.
/// @param _vaultId The id of the makerDAO vault.
@ -292,7 +280,6 @@ contract ConnectGelatoDataForPartialRefinance is ConnectorInterface {
/// flashBorrow->repay Maker->withdraw from B->flashPayback.
/// @return wColToWithdrawFromMaker (wad) to: withdraw from Maker and deposit on B.
/// @return gasFeesPaidFromCol Gelato automation-gas-fees paid from user's collateral
// solhint-disable function-max-lines
function computeDebtBridge(
uint256 _vaultId,
uint256 _wMinColRatioMaker,

View File

@ -31,8 +31,8 @@ contract ConnectGelatoProviderPayment is
constructor(uint256 id, address _gelatoProvider) {
_id = id;
gelatoProvider = _gelatoProvider;
_this = address(this);
gelatoProvider = _gelatoProvider;
}
/// @dev Connector Details
@ -55,9 +55,6 @@ contract ConnectGelatoProviderPayment is
/// - _getId does not match actual InstaMemory gelatoProvider payment slot
/// - _token balance not in DSA
/// - worthless _token risk
/// @param _gelatoProvider The Provider who pays the Gelato network for automation.
// This param should be verified / replaced by the ProviderModule in Gelato on-chain.
// In the latter case, it does not matter what address is passed off-chain.
/// @param _token The token used to pay the Provider.
/// @param _amt The amount of _token to pay the Gelato Provider.
/// @param _getId The InstaMemory slot at which the payment amount was stored.
@ -68,16 +65,16 @@ contract ConnectGelatoProviderPayment is
uint256 _getId,
uint256 _setId
) external payable override {
address _gelatoProvider = IConnectGelatoProviderPayment(_this)
address provider = IConnectGelatoProviderPayment(_this)
.gelatoProvider();
require(
_gelatoProvider != address(0x0),
"ConnectGelatoProviderPayment.payProvider:!_gelatoProvider"
provider != address(0x0),
"ConnectGelatoProviderPayment.payProvider:!provider"
);
uint256 amt = _getUint(_getId, _amt);
_setUint(_setId, amt);
_token == ETH
? payable(_gelatoProvider).sendValue(amt)
: IERC20(_token).safeTransfer(_gelatoProvider, amt);
? payable(provider).sendValue(amt)
: IERC20(_token).safeTransfer(provider, amt);
}
}

View File

@ -168,9 +168,7 @@ describe("ConnectGelatoProviderPayment Unit Test", function () {
value: ethers.utils.parseEther("1"),
}
)
).to.be.revertedWith(
"ConnectGelatoProviderPayment.payProvider:!_gelatoProvider"
);
).to.be.revertedWith("ConnectGelatoProviderPayment.payProvider:!provider");
});
it("#2: setProvider should change the provider address", async function () {