From 857e4fc01ab096a41bc1da8be5c980ec906e360a Mon Sep 17 00:00:00 2001 From: owen05 Date: Fri, 20 Nov 2020 11:05:41 +0800 Subject: [PATCH] add todo && smartSwap event update --- contracts/DODOPrivatePool/impl/DPPVault.sol | 3 +++ contracts/DODOVendingMachine/impl/DVMFunding.sol | 1 + contracts/DODOVendingMachine/impl/DVMStorage.sol | 1 + contracts/DODOVendingMachine/impl/DVMTrader.sol | 1 + contracts/Factory/DVMFactory.sol | 4 ++++ contracts/SmartRoute/SmartSwap.sol | 7 ++++--- deploy-detail.txt | 8 ++++++++ migrations/2_deploy.js | 5 ++--- truffle-config.js | 10 ++++++---- 9 files changed, 30 insertions(+), 10 deletions(-) diff --git a/contracts/DODOPrivatePool/impl/DPPVault.sol b/contracts/DODOPrivatePool/impl/DPPVault.sol index 6b7a852..ea6ac3f 100644 --- a/contracts/DODOPrivatePool/impl/DPPVault.sol +++ b/contracts/DODOPrivatePool/impl/DPPVault.sol @@ -50,7 +50,9 @@ contract DPPVault is DPPStorage { _checkStatus(); } + //TODO: Route queryfunc 以及 withdraw and reset // todo 这里需要考虑,怎么一个tx同时更新k i 和 fee并reset + //TODO: 修改feerate等 function reset() public onlyOwner { _BASE_TARGET_ = _BASE_TOKEN_.balanceOf(address(this)); _QUOTE_TARGET_ = _QUOTE_TOKEN_.balanceOf(address(this)); @@ -67,6 +69,7 @@ contract DPPVault is DPPStorage { // ============ Assets Transfer ============ + //TODO:确定Amount后,内部调用 function withdraw( address to, uint256 baseAmount, diff --git a/contracts/DODOVendingMachine/impl/DVMFunding.sol b/contracts/DODOVendingMachine/impl/DVMFunding.sol index 79d8406..d185d85 100644 --- a/contracts/DODOVendingMachine/impl/DVMFunding.sol +++ b/contracts/DODOVendingMachine/impl/DVMFunding.sol @@ -31,6 +31,7 @@ contract DVMFunding is DVMVault { } // case 3. normal case if (baseReserve > 0 && quoteReserve > 0) { + //TODO: (Route合约配合实现) uint256 baseInputRatio = DecimalMath.divFloor(baseInput, baseReserve); uint256 quoteInputRatio = DecimalMath.divFloor(quoteInput, quoteReserve); uint256 mintRatio = baseInputRatio > quoteInputRatio ? quoteInputRatio : baseInputRatio; diff --git a/contracts/DODOVendingMachine/impl/DVMStorage.sol b/contracts/DODOVendingMachine/impl/DVMStorage.sol index d938f28..0eddcaf 100644 --- a/contracts/DODOVendingMachine/impl/DVMStorage.sol +++ b/contracts/DODOVendingMachine/impl/DVMStorage.sol @@ -61,6 +61,7 @@ contract DVMStorage is InitializableOwnable, ReentrancyGuard { // ============ Setting Functions ============ + //TODO: owner权限问题论证 function setLpFeeRateModel(address newLpFeeRateModel) external onlyOwner { _LP_FEE_RATE_MODEL_ = IFeeRateModel(newLpFeeRateModel); } diff --git a/contracts/DODOVendingMachine/impl/DVMTrader.sol b/contracts/DODOVendingMachine/impl/DVMTrader.sol index 5885547..627df2c 100644 --- a/contracts/DODOVendingMachine/impl/DVMTrader.sol +++ b/contracts/DODOVendingMachine/impl/DVMTrader.sol @@ -49,6 +49,7 @@ contract DVMTrader is DVMVault { { uint256 baseInput = getBaseInput(); uint256 mtFee; + //TODO:tx.origin 的潜在风险,直接写to (receiveQuoteAmount, mtFee) = querySellBase(tx.origin, baseInput); _transferQuoteOut(to, receiveQuoteAmount); _transferQuoteOut(_MAINTAINER_, mtFee); diff --git a/contracts/Factory/DVMFactory.sol b/contracts/Factory/DVMFactory.sol index 029ea1a..312282e 100644 --- a/contracts/Factory/DVMFactory.sol +++ b/contracts/Factory/DVMFactory.sol @@ -39,6 +39,7 @@ contract DVMFactory is Ownable { _DEFAULT_GAS_PRICE_SOURCE_ = defaultGasPriceSource; } + function createStandardDODOVendingMachine( address baseToken, address quoteToken, @@ -62,6 +63,9 @@ contract DVMFactory is Ownable { k ); + //TODO: Create2 + //TODO: DVM作为Mapping的字段,维护自身属性 + //TODO: 创建者索引,便于my pool查询 _REGISTRY_[baseToken][quoteToken].push(newVendorMachine); return newVendorMachine; } diff --git a/contracts/SmartRoute/SmartSwap.sol b/contracts/SmartRoute/SmartSwap.sol index 27d4863..80b8185 100644 --- a/contracts/SmartRoute/SmartSwap.sol +++ b/contracts/SmartRoute/SmartSwap.sol @@ -36,7 +36,8 @@ contract SmartSwap is Ownable { IERC20 indexed toToken, address indexed sender, uint256 fromAmount, - uint256 returnAmount + uint256 returnAmount, + uint256 timeStamp ); event ExternalRecord(address indexed to, address indexed sender); @@ -104,7 +105,7 @@ contract SmartSwap is Ownable { require(returnAmount >= minReturnAmount, "DODO SmartSwap: Return amount is not enough"); toToken.universalTransfer(msg.sender, returnAmount); - emit OrderHistory(fromToken, toToken, msg.sender, fromTokenAmount, returnAmount); + emit OrderHistory(fromToken, toToken, msg.sender, fromTokenAmount, returnAmount, block.timestamp); } function externalSwap( @@ -137,7 +138,7 @@ contract SmartSwap is Ownable { require(returnAmount >= minReturnAmount, "DODO SmartSwap: Return amount is not enough"); toToken.universalTransfer(msg.sender, returnAmount); - emit OrderHistory(fromToken, toToken, msg.sender, fromTokenAmount, returnAmount); + emit OrderHistory(fromToken, toToken, msg.sender, fromTokenAmount, returnAmount, block.timestamp); emit ExternalRecord(to, msg.sender); } } diff --git a/deploy-detail.txt b/deploy-detail.txt index e69de29..3946e74 100644 --- a/deploy-detail.txt +++ b/deploy-detail.txt @@ -0,0 +1,8 @@ +==================================================== +network type: kovan +Deploy time: 2020/11/20 上午10:58:49 +Deploy type: Smart Route +SmartApprove Address: 0x0E5cf0e4658E371f93a6bDB7E72d6789Aff08666 +DODOSellHelper Address: 0xbdEae617F2616b45DCB69B287D52940a76035Fe3 +SmartSwap Address: 0x767A6FB2f5e908c4E573CaA2bc7f53D468ffd78E +SmartApprovce setSmartSwap tx: 0xc9efe8b60cba3a2d288d487a7e512a3cfcdd017a25a923477323067546fbbec2 diff --git a/migrations/2_deploy.js b/migrations/2_deploy.js index 89350a9..5b4af25 100644 --- a/migrations/2_deploy.js +++ b/migrations/2_deploy.js @@ -21,7 +21,7 @@ module.exports = async (deployer, network, accounts) => { DODOSellHelperAddress = "0xbdEae617F2616b45DCB69B287D52940a76035Fe3"; DODOZooAddress = "0x92230e929a2226b29ed3441ae5524886347c60c8"; WETHAddress = "0x5eca15b12d959dfcf9c71c59f8b467eb8c6efd0b"; - SmartApproveAddress = "0x5627b7DEb3055e1e899003FDca0716b32C382084"; + SmartApproveAddress = ""; } else if (network == "live") { DODOSellHelperAddress = "0x533da777aedce766ceae696bf90f8541a4ba80eb"; DODOZooAddress = "0x3a97247df274a17c59a3bd12735ea3fcdfb49950"; @@ -35,7 +35,7 @@ module.exports = async (deployer, network, accounts) => { if (DEPLOY_ROUTE) { logger.log("Deploy type: Smart Route"); - if (SmartApprove == "") { + if (SmartApproveAddress == "") { await deployer.deploy(SmartApprove); SmartApproveAddress = SmartApprove.address; } @@ -45,7 +45,6 @@ module.exports = async (deployer, network, accounts) => { } logger.log("SmartApprove Address: ", SmartApproveAddress); logger.log("DODOSellHelper Address: ", DODOSellHelperAddress); - await deployer.deploy( SmartSwap, SmartApproveAddress, diff --git a/truffle-config.js b/truffle-config.js index 79f4fb7..fbe8759 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -18,8 +18,9 @@ * */ -// const HDWalletProvider = require('@truffle/hdwallet-provider'); -// const infuraKey = "fj4jll3k....."; +var HDWalletProvider = require("truffle-hdwallet-provider"); +var privKey = process.env.privKey; +var infuraId = process.env.infuraId; // // const fs = require('fs'); // const mnemonic = fs.readFileSync(".secret").toString().trim(); @@ -52,6 +53,7 @@ module.exports = { gasPrice: 1, }, kovan: { + networkCheckTimeout: 100000, provider: function() { return new HDWalletProvider(privKey, "https://kovan.infura.io/v3/" + infuraId); }, @@ -65,8 +67,8 @@ module.exports = { provider: function() { return new HDWalletProvider(privKey, "https://mainnet.infura.io/v3/" + infuraId); }, - gas: 4000000, - gasPrice: 22000000000, + gas: 3000000, + gasPrice: 60000000000, network_id: 1, skipDryRun: true },