diff --git a/contracts/DODOPrivatePool/impl/DPPTrader.sol b/contracts/DODOPrivatePool/impl/DPPTrader.sol index 1d9b52a..14dc47e 100644 --- a/contracts/DODOPrivatePool/impl/DPPTrader.sol +++ b/contracts/DODOPrivatePool/impl/DPPTrader.sol @@ -179,7 +179,6 @@ contract DPPTrader is DPPVault { receiveQuoteAmount = receiveQuoteAmount .sub(DecimalMath.mulFloor(receiveQuoteAmount, lpFeeRate)) .sub(mtFee); - return (receiveQuoteAmount, mtFee, newRState, state.B0); } diff --git a/contracts/SmartRoute/DODOV1Proxy01.sol b/contracts/SmartRoute/DODOV1Proxy01.sol index a421842..200852e 100644 --- a/contracts/SmartRoute/DODOV1Proxy01.sol +++ b/contracts/SmartRoute/DODOV1Proxy01.sol @@ -9,9 +9,9 @@ pragma solidity 0.6.9; import {Ownable} from "../lib/Ownable.sol"; import {IERC20} from "../intf/IERC20.sol"; -import {UniversalERC20} from "./UniversalERC20.sol"; +import {UniversalERC20} from "./lib/UniversalERC20.sol"; import {SafeMath} from "../lib/SafeMath.sol"; -import {IDODOSellHelper} from "../intf/IDODOSellHelper.sol"; +import {IDODOSellHelper} from "./intf/IDODOSellHelper.sol"; import {IDODOApprove} from "../intf/IDODOApprove.sol"; import {IDODO} from "../intf/IDODO.sol"; import {IWETH} from "../intf/IWETH.sol"; @@ -59,7 +59,7 @@ contract DODOV1Proxy01 is Ownable { uint256 fromTokenAmount, uint256 minReturnAmount, address[] memory dodoPairs, - uint256[] memory directions, + uint8[] memory directions, uint256 deadline ) public payable judgeExpired(deadline) returns (uint256 returnAmount) { if (fromToken != ETH_ADDRESS) { diff --git a/contracts/SmartRoute/DODOV2Proxy01.sol b/contracts/SmartRoute/DODOV2Proxy01.sol index fca680b..55423da 100644 --- a/contracts/SmartRoute/DODOV2Proxy01.sol +++ b/contracts/SmartRoute/DODOV2Proxy01.sol @@ -7,12 +7,12 @@ pragma solidity 0.6.9; -import {IDODOV2Proxy01} from "../intf/IDODOV2Proxy01.sol"; -import {IDODOV2} from "../intf/IDODOV2.sol"; +import {IDODOV2Proxy01} from "./intf/IDODOV2Proxy01.sol"; +import {IDODOV2} from "./intf/IDODOV2.sol"; import {IERC20} from "../intf/IERC20.sol"; import {IWETH} from "../intf/IWETH.sol"; import {SafeMath} from "../lib/SafeMath.sol"; -import {UniversalERC20} from "./UniversalERC20.sol"; +import {UniversalERC20} from "./lib/UniversalERC20.sol"; import {SafeERC20} from "../lib/SafeERC20.sol"; import {DecimalMath} from "../lib/DecimalMath.sol"; @@ -266,7 +266,7 @@ contract DODOV2Proxy01 is IDODOV2Proxy01 { uint256 fromTokenAmount, uint256 minReturnAmount, address[] memory dodoPairs, - uint256[] memory directions, + uint8[] memory directions, uint256 deadline ) external virtual override payable judgeExpired(deadline) returns (uint256 returnAmount) { uint256 originToTokenBalance = IERC20(toToken).balanceOf(msg.sender); @@ -309,7 +309,7 @@ contract DODOV2Proxy01 is IDODOV2Proxy01 { uint256 fromTokenAmount, uint256 minReturnAmount, address[] memory dodoPairs, - uint256[] memory directions, + uint8[] memory directions, uint256 deadline ) external virtual override judgeExpired(deadline) returns (uint256 returnAmount) { IDODOV2(dodoApprove).claimTokens(fromToken, msg.sender, dodoPairs[0], fromTokenAmount); @@ -350,7 +350,7 @@ contract DODOV2Proxy01 is IDODOV2Proxy01 { uint256 fromTokenAmount, uint256 minReturnAmount, address[] memory dodoPairs, - uint256[] memory directions, + uint8[] memory directions, uint256 deadline ) external virtual override judgeExpired(deadline) returns (uint256 returnAmount) { uint256 originToTokenBalance = IERC20(toToken).balanceOf(msg.sender); diff --git a/contracts/intf/IDODOSellHelper.sol b/contracts/SmartRoute/intf/IDODOSellHelper.sol similarity index 100% rename from contracts/intf/IDODOSellHelper.sol rename to contracts/SmartRoute/intf/IDODOSellHelper.sol diff --git a/contracts/intf/IDODOV2.sol b/contracts/SmartRoute/intf/IDODOV2.sol similarity index 73% rename from contracts/intf/IDODOV2.sol rename to contracts/SmartRoute/intf/IDODOV2.sol index 260fe2c..9b720ea 100644 --- a/contracts/intf/IDODOV2.sol +++ b/contracts/SmartRoute/intf/IDODOV2.sol @@ -27,7 +27,7 @@ interface IDODOV2 { //========== DODOVendingMachine ======== function createDODOVendingMachine( - address from, + address creator, address baseToken, address quoteToken, uint256 lpFeeRate, @@ -46,7 +46,7 @@ interface IDODOV2 { function initDODOPrivatePool( address dppAddress, - address from, + address creator, address baseToken, address quoteToken, uint256 lpFeeRate, @@ -56,7 +56,7 @@ interface IDODOV2 { ) external; function reset( - address assetTo, + address operator, uint256 newLpFeeRate, uint256 newMtFeeRate, uint256 newI, @@ -65,23 +65,8 @@ interface IDODOV2 { uint256 quoteOutAmount ) external; - function resetETH( - address from, - uint256 newLpFeeRate, - uint256 newMtFeeRate, - uint256 newI, - uint256 newK, - uint256 baseOutAmount, - uint256 quoteOutAmount - ) external; - //========== DODOSellHelper ============ - - function querySellQuoteToken(address pair, uint256 quoteInAmount) external view returns (uint256 expectedReceiveBaseAmount); - - function querySellBaseToken(address pair, uint256 baseInAmount) external view returns (uint256 expectedReceiveQuoteAmount); - - //========== SmartApprove ============= + //========== IDODOApprove ============= function claimTokens(address token,address who,address dest,uint256 amount) external; diff --git a/contracts/intf/IDODOV2Proxy01.sol b/contracts/SmartRoute/intf/IDODOV2Proxy01.sol similarity index 95% rename from contracts/intf/IDODOV2Proxy01.sol rename to contracts/SmartRoute/intf/IDODOV2Proxy01.sol index 6c62168..250226c 100644 --- a/contracts/intf/IDODOV2Proxy01.sol +++ b/contracts/SmartRoute/intf/IDODOV2Proxy01.sol @@ -15,7 +15,7 @@ interface IDODOV2Proxy01 { uint256 fromTokenAmount, uint256 minReturnAmount, address[] memory dodoPairs, - uint256[] memory directions, + uint8[] memory directions, uint256 deadline ) external payable returns (uint256 returnAmount); @@ -25,7 +25,7 @@ interface IDODOV2Proxy01 { uint256 fromTokenAmount, uint256 minReturnAmount, address[] memory dodoPairs, - uint256[] memory directions, + uint8[] memory directions, uint256 deadline ) external returns (uint256 returnAmount); @@ -36,7 +36,7 @@ interface IDODOV2Proxy01 { uint256 fromTokenAmount, uint256 minReturnAmount, address[] memory dodoPairs, - uint256[] memory directions, + uint8[] memory directions, uint256 deadline ) external returns (uint256 returnAmount); @@ -111,4 +111,6 @@ interface IDODOV2Proxy01 { //TODO: addLiquidityToClassical //TODO: removeLiquidityToClassical + + //TODO: Compatible with classical swap } diff --git a/contracts/SmartRoute/UniversalERC20.sol b/contracts/SmartRoute/lib/UniversalERC20.sol similarity index 89% rename from contracts/SmartRoute/UniversalERC20.sol rename to contracts/SmartRoute/lib/UniversalERC20.sol index 33f9d27..bcd2ca8 100644 --- a/contracts/SmartRoute/UniversalERC20.sol +++ b/contracts/SmartRoute/lib/UniversalERC20.sol @@ -7,9 +7,9 @@ pragma solidity 0.6.9; -import {SafeMath} from "../lib/SafeMath.sol"; -import {IERC20} from "../intf/IERC20.sol"; -import {SafeERC20} from "../lib/SafeERC20.sol"; +import {SafeMath} from "../../lib/SafeMath.sol"; +import {IERC20} from "../../intf/IERC20.sol"; +import {SafeERC20} from "../../lib/SafeERC20.sol"; library UniversalERC20 { using SafeMath for uint256; diff --git a/test/Proxy/proxy.dpp.test.ts b/test/Proxy/proxy.dpp.test.ts index 91fd1f6..f8e53eb 100644 --- a/test/Proxy/proxy.dpp.test.ts +++ b/test/Proxy/proxy.dpp.test.ts @@ -109,11 +109,6 @@ describe("DODOProxyV2.0", () => { Math.floor(new Date().getTime()/1000 + 60 * 10) ),ctx.sendParam(project),"createDPP"); var addrs = await ctx.DPPFactory.methods.getPrivatePool(baseToken,quoteToken).call(); - var dppInfo = await ctx.DPPFactory.methods._DPP_INFO_(addrs[1]).call(); - assert.equal( - dppInfo[0], - project - ); assert.equal( await ctx.DODO.methods.balanceOf(addrs[1]).call(), baseAmount @@ -142,11 +137,6 @@ describe("DODOProxyV2.0", () => { Math.floor(new Date().getTime()/1000 + 60 * 10) ),ctx.sendParam(project, "5"),"createDPP - Wrap ETH"); var addrs = await ctx.DPPFactory.methods.getPrivatePool(ctx.WETH.options.address,quoteToken).call(); - var dppInfo = await ctx.DPPFactory.methods._DPP_INFO_(addrs[1]).call(); - assert.equal( - dppInfo[0], - project - ); assert.equal( await ctx.WETH.methods.balanceOf(addrs[1]).call(), baseAmount @@ -172,6 +162,7 @@ describe("DODOProxyV2.0", () => { mweiStr("1000"), decimalStr("0"), mweiStr("0"), + 0, Math.floor(new Date().getTime()/1000 + 60 * 10) ),ctx.sendParam(project),"resetDPP"); var afterState = await DPP_DODO_USDT.methods.getPMMState().call(); @@ -187,7 +178,7 @@ describe("DODOProxyV2.0", () => { assert.equal(beforeState.B0,decimalStr("5")); assert.equal(beforeState.Q0,mweiStr("30000")); var b_ETH = await ctx.Web3.eth.getBalance(project); - var tx = await logGas(await ctx.DODOProxy.methods.resetDODOPrivatePoolETH( + var tx = await logGas(await ctx.DODOProxy.methods.resetDODOPrivatePool( dpp_WETH_USDT, config.lpFeeRate, config.mtFeeRate, @@ -217,7 +208,7 @@ describe("DODOProxyV2.0", () => { assert.equal(beforeState.B0,decimalStr("5")); assert.equal(beforeState.Q0,mweiStr("30000")); var b_ETH = await ctx.Web3.eth.getBalance(project); - var tx = await logGas(await ctx.DODOProxy.methods.resetDODOPrivatePoolETH( + var tx = await logGas(await ctx.DODOProxy.methods.resetDODOPrivatePool( dpp_WETH_USDT, config.lpFeeRate, config.mtFeeRate, @@ -265,7 +256,7 @@ describe("DODOProxyV2.0", () => { console.log("b_DOOD:" + b_DOOD + " a_DODO:" + a_DOOD); console.log("b_USDT:" + b_USDT + " a_USDT:" + a_USDT); assert.equal(a_DOOD,decimalStr("500")); - assert.equal(a_USDT,"149474924"); + assert.equal(a_USDT,"149474926"); }); @@ -296,7 +287,7 @@ describe("DODOProxyV2.0", () => { console.log("b_DOOD:" + b_DOOD + " a_DODO:" + a_DOOD); console.log("b_WETH:" + b_WETH + " a_WETH:" + a_WETH); assert.equal(a_DOOD,decimalStr("500")); - assert.equal(a_WETH,"247088894507188480"); + assert.equal(a_WETH,"247088897795331236"); }); it("swap - two hop - inETH", async () => { @@ -326,7 +317,7 @@ describe("DODOProxyV2.0", () => { console.log("b_DOOD:" + b_DOOD + " a_DODO:" + a_DOOD); console.log("b_WETH:" + b_WETH + " a_WETH:" + a_WETH); console.log("b_ETH:" + b_ETH + " a_ETH:" + a_ETH); - assert.equal(a_DOOD,"1979965731049456633086"); + assert.equal(a_DOOD,"1979965734359241770226"); }); @@ -361,7 +352,7 @@ describe("DODOProxyV2.0", () => { assert.equal(a_DOOD,decimalStr("90000")); assert.equal( tx.events['OrderHistory'].returnValues['returnAmount'], - "3760778358599649282" + "3760778359898791539" ) }); diff --git a/test/Proxy/proxy.dvm.test.ts b/test/Proxy/proxy.dvm.test.ts index 33f5bfd..a3c30cf 100644 --- a/test/Proxy/proxy.dvm.test.ts +++ b/test/Proxy/proxy.dvm.test.ts @@ -111,11 +111,6 @@ describe("DODOProxyV2.0", () => { Math.floor(new Date().getTime()/1000 + 60 * 10) ),ctx.sendParam(project),"createDVM"); var addrs = await ctx.DVMFactory.methods.getVendingMachine(baseToken,quoteToken).call(); - var dvmInfo = await ctx.DVMFactory.methods._DVM_INFO_(addrs[1]).call(); - assert.equal( - dvmInfo[0], - project - ); assert.equal( await ctx.DODO.methods.balanceOf(addrs[1]).call(), baseAmount @@ -145,11 +140,6 @@ describe("DODOProxyV2.0", () => { Math.floor(new Date().getTime()/1000 + 60 * 10) ),ctx.sendParam(project, '5'),"createDVM - Wrap ETH"); var addrs = await ctx.DVMFactory.methods.getVendingMachine(ctx.WETH.options.address,quoteToken).call(); - var dvmInfo = await ctx.DVMFactory.methods._DVM_INFO_(addrs[1]).call(); - assert.equal( - dvmInfo[0], - project - ); assert.equal( await ctx.WETH.methods.balanceOf(addrs[1]).call(), baseAmount @@ -175,6 +165,7 @@ describe("DODOProxyV2.0", () => { mweiStr("300"), decimalStr("0"), mweiStr("0"), + 0, Math.floor(new Date().getTime()/1000 + 60 * 10) ),ctx.sendParam(lp),"addLiquidity"); var a_baseReserve = await DVM_DODO_USDT.methods._BASE_RESERVE_().call(); @@ -193,7 +184,7 @@ describe("DODOProxyV2.0", () => { assert.equal(b_baseReserve,decimalStr("5")); assert.equal(b_quoteReserve,mweiStr("30000")); assert.equal(b_dlp,decimalStr("0")); - await logGas(await ctx.DODOProxy.methods.addDVMLiquidityETH( + await logGas(await ctx.DODOProxy.methods.addDVMLiquidity( dvm_WETH_USDT, lp, decimalStr("1"), diff --git a/test/utils/ProxyContext.ts b/test/utils/ProxyContext.ts index 8f6102b..4238bd4 100644 --- a/test/utils/ProxyContext.ts +++ b/test/utils/ProxyContext.ts @@ -93,17 +93,12 @@ export class ProxyContext { ] ) - var dodoSellHelper = await contracts.newContract( - contracts.DODO_SELL_HELPER - ); - this.DODOProxy = await contracts.newContract(contracts.DODO_PROXY_NAME, [ this.DVMFactory.options.address, this.DPPFactory.options.address, this.WETH.options.address, - this.SmartApprove.options.address, - dodoSellHelper.options.address + this.SmartApprove.options.address ] );