mirror of
https://github.com/Instadapp/dsa-resolvers-deprecated.git
synced 2024-07-29 22:38:16 +00:00
Revert "Add uniswap v2 path finder algo"
This reverts commit 191b0d0931
.
This commit is contained in:
parent
3f72634daa
commit
b97a1ade1d
|
@ -85,22 +85,6 @@ contract UniswapHelpers is Helpers {
|
||||||
_sell = sell == getEthAddr() ? TokenInterface(getAddressWETH()) : TokenInterface(sell);
|
_sell = sell == getEthAddr() ? TokenInterface(getAddressWETH()) : TokenInterface(sell);
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkPaths(
|
|
||||||
IUniswapV2Router02 router,
|
|
||||||
address[] memory paths
|
|
||||||
) internal view returns(bool isValid) {
|
|
||||||
isValid = true;
|
|
||||||
for (uint i; i < paths.length - 1; i++) {
|
|
||||||
if (paths[i] == paths[i + 1]) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
address pair = IUniswapV2Factory(router.factory()).getPair(paths[i], paths[i + 1]);
|
|
||||||
if (pair == address(0)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getExpectedBuyAmt(
|
function getExpectedBuyAmt(
|
||||||
address buyAddr,
|
address buyAddr,
|
||||||
address sellAddr,
|
address sellAddr,
|
||||||
|
@ -189,40 +173,6 @@ contract UniswapHelpers is Helpers {
|
||||||
amtA = wmul(_tokenA.balanceOf(exchangeAddr), share);
|
amtA = wmul(_tokenA.balanceOf(exchangeAddr), share);
|
||||||
amtB = wmul(_tokenB.balanceOf(exchangeAddr), share);
|
amtB = wmul(_tokenB.balanceOf(exchangeAddr), share);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getExpectedBuyAmtByPath(
|
|
||||||
address[] memory paths,
|
|
||||||
uint sellAmt
|
|
||||||
) internal view returns(uint buyAmt) {
|
|
||||||
IUniswapV2Router02 router = IUniswapV2Router02(getUniswapAddr());
|
|
||||||
|
|
||||||
if (checkPaths(router, paths)) {
|
|
||||||
uint[] memory amts = router.getAmountsOut(
|
|
||||||
sellAmt,
|
|
||||||
paths
|
|
||||||
);
|
|
||||||
buyAmt = amts[amts.length - 1];
|
|
||||||
} else {
|
|
||||||
buyAmt = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function _getExpectedSellAmtByPath(
|
|
||||||
address[] memory paths,
|
|
||||||
uint buyAmt
|
|
||||||
) internal view returns(uint sellAmt) {
|
|
||||||
IUniswapV2Router02 router = IUniswapV2Router02(getUniswapAddr());
|
|
||||||
|
|
||||||
if (checkPaths(router, paths)) {
|
|
||||||
uint[] memory amts = router.getAmountsIn(
|
|
||||||
buyAmt,
|
|
||||||
paths
|
|
||||||
);
|
|
||||||
sellAmt = amts[0];
|
|
||||||
} else {
|
|
||||||
sellAmt = uint(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -343,134 +293,6 @@ contract Resolver is UniswapHelpers {
|
||||||
}
|
}
|
||||||
return poolData;
|
return poolData;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOptimalSellPath(
|
|
||||||
address buyAddr,
|
|
||||||
address sellAddr,
|
|
||||||
address[] memory tokens,
|
|
||||||
uint sellAmt,
|
|
||||||
uint slippage
|
|
||||||
) public view returns (address[] memory paths, uint buyAmt, uint unitAmt)
|
|
||||||
{
|
|
||||||
(TokenInterface _buyAddr, TokenInterface _sellAddr) = changeEthAddress(buyAddr, sellAddr);
|
|
||||||
|
|
||||||
address[] memory _path = new address[](2);
|
|
||||||
_path[0] = address(_sellAddr);
|
|
||||||
_path[1] = address(_buyAddr);
|
|
||||||
|
|
||||||
paths = _path;
|
|
||||||
buyAmt = _getExpectedBuyAmtByPath(_path, sellAmt);
|
|
||||||
|
|
||||||
_path = new address[](3);
|
|
||||||
_path[0] = address(_sellAddr);
|
|
||||||
_path[2] = address(_buyAddr);
|
|
||||||
|
|
||||||
uint i;
|
|
||||||
uint j;
|
|
||||||
uint _buyAmt;
|
|
||||||
|
|
||||||
for(i = 0; i < tokens.length; i++) {
|
|
||||||
_path[1] = tokens[i];
|
|
||||||
|
|
||||||
_buyAmt = _getExpectedBuyAmtByPath(_path, sellAmt);
|
|
||||||
|
|
||||||
if (_buyAmt > buyAmt) {
|
|
||||||
buyAmt = _buyAmt;
|
|
||||||
paths = new address[](3);
|
|
||||||
paths[0] = _path[0];
|
|
||||||
paths[1] = _path[1];
|
|
||||||
paths[2] = _path[2];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_path = new address[](4);
|
|
||||||
_path[0] = address(_sellAddr);
|
|
||||||
_path[3] = address(_buyAddr);
|
|
||||||
|
|
||||||
for(i = 0; i < tokens.length; i++) {
|
|
||||||
for(j = 0; j < tokens.length; j++) {
|
|
||||||
_path[1] = tokens[i];
|
|
||||||
_path[2] = tokens[j];
|
|
||||||
|
|
||||||
_buyAmt = _getExpectedBuyAmtByPath(_path, sellAmt);
|
|
||||||
|
|
||||||
if (_buyAmt > buyAmt) {
|
|
||||||
buyAmt = _buyAmt;
|
|
||||||
paths = new address[](4);
|
|
||||||
paths[0] = _path[0];
|
|
||||||
paths[1] = _path[1];
|
|
||||||
paths[2] = _path[2];
|
|
||||||
paths[3] = _path[3];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unitAmt = getBuyUnitAmt(_buyAddr, buyAmt, _sellAddr, sellAmt, slippage);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getOptimalBuyPath(
|
|
||||||
address buyAddr,
|
|
||||||
address sellAddr,
|
|
||||||
address[] memory tokens,
|
|
||||||
uint buyAmt,
|
|
||||||
uint slippage
|
|
||||||
) public view returns (address[] memory paths, uint sellAmt, uint unitAmt)
|
|
||||||
{
|
|
||||||
(TokenInterface _buyAddr, TokenInterface _sellAddr) = changeEthAddress(buyAddr, sellAddr);
|
|
||||||
|
|
||||||
address[] memory _path = new address[](2);
|
|
||||||
_path[0] = address(_sellAddr);
|
|
||||||
_path[1] = address(_buyAddr);
|
|
||||||
|
|
||||||
paths = _path;
|
|
||||||
sellAmt = _getExpectedSellAmtByPath(_path, buyAmt);
|
|
||||||
|
|
||||||
_path = new address[](3);
|
|
||||||
_path[0] = address(_sellAddr);
|
|
||||||
_path[2] = address(_buyAddr);
|
|
||||||
|
|
||||||
uint i;
|
|
||||||
uint j;
|
|
||||||
uint _sellAmt;
|
|
||||||
|
|
||||||
for(i = 0; i < tokens.length; i++) {
|
|
||||||
_path[1] = tokens[i];
|
|
||||||
|
|
||||||
_sellAmt = _getExpectedSellAmtByPath(_path, buyAmt);
|
|
||||||
|
|
||||||
if (_sellAmt < sellAmt) {
|
|
||||||
sellAmt = _sellAmt;
|
|
||||||
paths = new address[](3);
|
|
||||||
paths[0] = _path[0];
|
|
||||||
paths[1] = _path[1];
|
|
||||||
paths[2] = _path[2];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_path = new address[](4);
|
|
||||||
_path[0] = address(_sellAddr);
|
|
||||||
_path[3] = address(_buyAddr);
|
|
||||||
|
|
||||||
for(i = 0; i < tokens.length; i++) {
|
|
||||||
for(j = 0; j < tokens.length; j++) {
|
|
||||||
_path[1] = tokens[i];
|
|
||||||
_path[2] = tokens[j];
|
|
||||||
|
|
||||||
_sellAmt = _getExpectedSellAmtByPath(_path, buyAmt);
|
|
||||||
|
|
||||||
if (_sellAmt < sellAmt) {
|
|
||||||
sellAmt = _sellAmt;
|
|
||||||
paths = new address[](4);
|
|
||||||
paths[0] = _path[0];
|
|
||||||
paths[1] = _path[1];
|
|
||||||
paths[2] = _path[2];
|
|
||||||
paths[3] = _path[3];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unitAmt = getSellUnitAmt(_sellAddr, sellAmt, _buyAddr, buyAmt, slippage);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user