mirror of
https://github.com/Instadapp/Gelato-automations.git
synced 2024-07-29 22:28:07 +00:00
fix one wei discrepency who appear during debt reading from insta maker resolver
This commit is contained in:
parent
d17a2acd97
commit
9fb2c4aaac
|
@ -20,22 +20,29 @@ interface GelatoGasPriceOracle {
|
||||||
function latestAnswer() external view returns (int256);
|
function latestAnswer() external view returns (int256);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IMakerResolver {
|
interface ManagerLike {
|
||||||
struct VaultData {
|
function ilks(uint256) external view returns (bytes32);
|
||||||
uint256 id;
|
|
||||||
address owner;
|
|
||||||
string colType;
|
|
||||||
uint256 collateral;
|
|
||||||
uint256 art;
|
|
||||||
uint256 debt;
|
|
||||||
uint256 liquidatedCol;
|
|
||||||
uint256 borrowRate;
|
|
||||||
uint256 colPrice;
|
|
||||||
uint256 liquidationRatio;
|
|
||||||
address vaultAddress;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getVaultById(uint256 id) external view returns (VaultData memory);
|
function urns(uint256) external view returns (address);
|
||||||
|
|
||||||
|
function vat() external view returns (address);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface VatLike {
|
||||||
|
function ilks(bytes32)
|
||||||
|
external
|
||||||
|
view
|
||||||
|
returns (
|
||||||
|
uint256,
|
||||||
|
uint256,
|
||||||
|
uint256,
|
||||||
|
uint256,
|
||||||
|
uint256
|
||||||
|
);
|
||||||
|
|
||||||
|
function dai(address) external view returns (uint256);
|
||||||
|
|
||||||
|
function urns(bytes32, address) external view returns (uint256, uint256);
|
||||||
}
|
}
|
||||||
|
|
||||||
library GelatoBytes {
|
library GelatoBytes {
|
||||||
|
@ -152,6 +159,13 @@ abstract contract DSMath {
|
||||||
abstract contract Helpers is ConnectorInterface, DSMath {
|
abstract contract Helpers is ConnectorInterface, DSMath {
|
||||||
uint256 internal __id;
|
uint256 internal __id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Return Maker MCD Manager Address.
|
||||||
|
*/
|
||||||
|
function getMcdManager() internal pure returns (address) {
|
||||||
|
return 0x5ef30b9986345249bc32d8928B7ee64DE9435E39;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Return ethereum address
|
* @dev Return ethereum address
|
||||||
*/
|
*/
|
||||||
|
@ -226,16 +240,36 @@ abstract contract GelatoHelpers is Helpers {
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract contract MakerResolver is GelatoHelpers {
|
abstract contract MakerResolver is GelatoHelpers {
|
||||||
function getMakerVault(uint256 _vaultId)
|
function _getVaultData(ManagerLike cdpManager, uint256 vault)
|
||||||
public
|
internal
|
||||||
view
|
view
|
||||||
returns (IMakerResolver.VaultData memory)
|
returns (bytes32 ilk, address urn)
|
||||||
{
|
{
|
||||||
return IMakerResolver(_getMakerResolver()).getVaultById(_vaultId);
|
ilk = cdpManager.ilks(vault);
|
||||||
|
urn = cdpManager.urns(vault);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMakerVaultDebt(uint256 _vaultId) public view returns (uint256) {
|
function _getManager() internal pure returns (ManagerLike) {
|
||||||
return getMakerVault(_vaultId).debt;
|
return ManagerLike(getMcdManager());
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMakerVaultDebt(uint256 _vaultId)
|
||||||
|
public
|
||||||
|
view
|
||||||
|
returns (uint256 wad)
|
||||||
|
{
|
||||||
|
ManagerLike cdpManager = _getManager();
|
||||||
|
|
||||||
|
(bytes32 ilk, address urn) = _getVaultData(cdpManager, _vaultId);
|
||||||
|
VatLike vat = VatLike(cdpManager.vat());
|
||||||
|
(, uint256 rate, , , ) = VatLike(vat).ilks(ilk);
|
||||||
|
(, uint256 art) = VatLike(vat).urns(ilk, urn);
|
||||||
|
uint256 dai = VatLike(vat).dai(urn);
|
||||||
|
|
||||||
|
uint256 rad = _sub(_mul(art, rate), dai);
|
||||||
|
wad = rad / RAY;
|
||||||
|
|
||||||
|
wad = _mul(wad, RAY) < rad ? wad + 1 : wad;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMakerVaultCollateralBalance(uint256 _vaultId)
|
function getMakerVaultCollateralBalance(uint256 _vaultId)
|
||||||
|
@ -243,19 +277,13 @@ abstract contract MakerResolver is GelatoHelpers {
|
||||||
view
|
view
|
||||||
returns (uint256)
|
returns (uint256)
|
||||||
{
|
{
|
||||||
return getMakerVault(_vaultId).collateral;
|
ManagerLike cdpManager = _getManager();
|
||||||
}
|
|
||||||
|
|
||||||
function getMakerVaultCollateralType(uint256 _vaultId)
|
VatLike vat = VatLike(cdpManager.vat());
|
||||||
public
|
(bytes32 ilk, address urn) = _getVaultData(cdpManager, _vaultId);
|
||||||
view
|
(uint256 ink, ) = vat.urns(ilk, urn);
|
||||||
returns (string memory)
|
|
||||||
{
|
|
||||||
return getMakerVault(_vaultId).colType;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _getMakerResolver() internal pure returns (address) {
|
return ink;
|
||||||
return 0x0A7008B38E7015F8C36A49eEbc32513ECA8801E5;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -263,10 +263,8 @@ describe("Full Debt Bridge refinancing loan from Maker to Compound", function ()
|
||||||
|
|
||||||
// DSA contain 1000 DAI
|
// DSA contain 1000 DAI
|
||||||
expect(
|
expect(
|
||||||
(await contracts.daiToken.balanceOf(contracts.dsa.address)).sub(
|
await contracts.daiToken.balanceOf(contracts.dsa.address)
|
||||||
constants.MAKER_INITIAL_DEBT
|
).to.be.equal(constants.MAKER_INITIAL_DEBT);
|
||||||
)
|
|
||||||
).to.be.lte(ethers.utils.parseUnits("1", 0));
|
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
});
|
});
|
||||||
|
|
|
@ -241,9 +241,7 @@ describe("Full Debt Bridge refinancing loan from ETH-A to ETH-B", function () {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Estimated amount to borrowed token should be equal to the actual one read on compound contracts
|
// Estimated amount to borrowed token should be equal to the actual one read on compound contracts
|
||||||
expect(debtOnMakerBefore.sub(debtOnMakerVaultB)).to.be.lte(
|
expect(debtOnMakerBefore).to.be.equal(debtOnMakerVaultB);
|
||||||
ethers.utils.parseUnits("1", 0)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Estimated amount of collateral should be equal to the actual one read on compound contracts
|
// Estimated amount of collateral should be equal to the actual one read on compound contracts
|
||||||
expect(pricedCollateral).to.be.equal(pricedCollateralOnVaultB);
|
expect(pricedCollateral).to.be.equal(pricedCollateralOnVaultB);
|
||||||
|
@ -261,10 +259,8 @@ describe("Full Debt Bridge refinancing loan from ETH-A to ETH-B", function () {
|
||||||
|
|
||||||
// DSA has maximum 2 wei DAI in it due to maths inaccuracies
|
// DSA has maximum 2 wei DAI in it due to maths inaccuracies
|
||||||
expect(
|
expect(
|
||||||
(await contracts.daiToken.balanceOf(contracts.dsa.address)).sub(
|
await contracts.daiToken.balanceOf(contracts.dsa.address)
|
||||||
constants.MAKER_INITIAL_DEBT
|
).to.be.equal(constants.MAKER_INITIAL_DEBT);
|
||||||
)
|
|
||||||
).to.be.lte(ethers.utils.parseUnits("1", 0));
|
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue
Block a user