remove some todo

This commit is contained in:
owen05
2020-11-23 10:43:12 +08:00
parent 9a4480208c
commit 8458022a3c
12 changed files with 109 additions and 107 deletions

View File

@@ -7,8 +7,8 @@
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
//TODO:讨论 是否应使用FeeRateModel
import {IConstFeeRateModel} from "../../lib/ConstFeeRateModel.sol";
import {IFeeRateModel} from "../../lib/FeeRateModel.sol";
import {IPermissionManager} from "../../lib/PermissionManager.sol";
import {IExternalValue} from "../../lib/ExternalValue.sol";
import {IERC20} from "../../intf/IERC20.sol";
@@ -32,8 +32,8 @@ contract DVM is DVMTrader, DVMFunding {
initOwner(owner);
_BASE_TOKEN_ = IERC20(baseTokenAddress);
_QUOTE_TOKEN_ = IERC20(quoteTokenAddress);
_LP_FEE_RATE_MODEL_ = IConstFeeRateModel(lpFeeRateModel);
_MT_FEE_RATE_MODEL_ = IConstFeeRateModel(mtFeeRateModel);
_LP_FEE_RATE_MODEL_ = IFeeRateModel(lpFeeRateModel);
_MT_FEE_RATE_MODEL_ = IFeeRateModel(mtFeeRateModel);
_TRADE_PERMISSION_ = IPermissionManager(tradePermissionManager);
_GAS_PRICE_LIMIT_ = IExternalValue(gasPriceSource);
_MAINTAINER_ = maintainer;

View File

@@ -17,7 +17,7 @@ contract DVMFunding is DVMVault {
uint256 baseInput = getBaseInput();
uint256 quoteInput = getQuoteInput();
require(baseInput > 0, "NO_BASE_INPUT");
uint256 baseReserve = _BASE_RESERVE_; // may save gas? 待确认
uint256 baseReserve = _BASE_RESERVE_;
uint256 quoteReserve = _QUOTE_RESERVE_;
uint256 mintAmount;
// case 1. initial supply
@@ -31,7 +31,6 @@ 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;
@@ -48,27 +47,30 @@ contract DVMFunding is DVMVault {
_sync();
}
//TODO:Router unwrap WETH
function sellShares(
address to,
uint256 shareAmount,
bytes calldata data
address to
// uint256 shareAmount,
// bytes calldata data
) external preventReentrant returns (uint256) {
require(_SHARES_[msg.sender] >= shareAmount, "SHARES_NOT_ENOUGH");
// require(_SHARES_[msg.sender] >= shareAmount, "SHARES_NOT_ENOUGH");
(uint256 baseBalance, uint256 quoteBalance) = getVaultBalance();
uint256 totalShares = totalSupply;
_burn(msg.sender, shareAmount);
uint256 shareAmount = _SHARES_[address(this)];
uint256 baseAmount = baseBalance.mul(shareAmount).div(totalShares);
uint256 quoteAmount = quoteBalance.mul(shareAmount).div(totalShares);
require(baseAmount > 0 && quoteAmount > 0, 'NO_DLP_INPUT');
_burn(address(this), shareAmount);
_transferBaseOut(to, baseAmount);
_transferQuoteOut(to, quoteAmount);
_sync();
if (data.length > 0)
IDODOCallee(msg.sender).DVMSellShareCall(
to,
shareAmount,
baseAmount,
quoteAmount,
data
);
// if (data.length > 0)
// IDODOCallee(msg.sender).DVMSellShareCall(
// to,
// shareAmount,
// baseAmount,
// quoteAmount,
// data
// );
}
}

View File

@@ -15,7 +15,7 @@ import {DODOMath} from "../../lib/DODOMath.sol";
import {DecimalMath} from "../../lib/DecimalMath.sol";
import {IPermissionManager} from "../../lib/PermissionManager.sol";
import {IExternalValue} from "../../lib/ExternalValue.sol";
import {IConstFeeRateModel} from "../../lib/ConstFeeRateModel.sol";
import {IFeeRateModel} from "../../lib/FeeRateModel.sol";
import {IERC20} from "../../intf/IERC20.sol";
contract DVMStorage is InitializableOwnable, ReentrancyGuard {
@@ -54,8 +54,8 @@ contract DVMStorage is InitializableOwnable, ReentrancyGuard {
// ============ Variables for Pricing ============
IConstFeeRateModel public _LP_FEE_RATE_MODEL_;
IConstFeeRateModel public _MT_FEE_RATE_MODEL_;
IFeeRateModel public _LP_FEE_RATE_MODEL_;
IFeeRateModel public _MT_FEE_RATE_MODEL_;
uint256 public _K_;
uint256 public _I_;
@@ -63,11 +63,11 @@ contract DVMStorage is InitializableOwnable, ReentrancyGuard {
//TODO: owner权限问题论证
function setLpFeeRateModel(address newLpFeeRateModel) external onlyOwner {
_LP_FEE_RATE_MODEL_ = IConstFeeRateModel(newLpFeeRateModel);
_LP_FEE_RATE_MODEL_ = IFeeRateModel(newLpFeeRateModel);
}
function setMtFeeRateModel(address newMtFeeRateModel) external onlyOwner {
_MT_FEE_RATE_MODEL_ = IConstFeeRateModel(newMtFeeRateModel);
_MT_FEE_RATE_MODEL_ = IFeeRateModel(newMtFeeRateModel);
}
function setTradePermissionManager(address newTradePermissionManager) external onlyOwner {

View File

@@ -48,8 +48,8 @@ contract DVMTrader is DVMVault {
returns (uint256 receiveQuoteAmount)
{
uint256 baseInput = getBaseInput();
require(baseInput > 0, 'INSUFFICIENT_BASE_INPUT');
uint256 mtFee;
//TODO:tx.origin 的潜在风险,直接写to
(receiveQuoteAmount, mtFee) = querySellBase(tx.origin, baseInput);
_transferQuoteOut(to, receiveQuoteAmount);
_transferQuoteOut(_MAINTAINER_, mtFee);
@@ -65,6 +65,7 @@ contract DVMTrader is DVMVault {
returns (uint256 receiveBaseAmount)
{
uint256 quoteInput = getQuoteInput();
require(quoteInput > 0, 'INSUFFICIENT_QUOTE_INPUT');
uint256 mtFee;
(receiveBaseAmount, mtFee) = querySellQuote(tx.origin, quoteInput);
_transferBaseOut(to, receiveBaseAmount);
@@ -98,7 +99,7 @@ contract DVMTrader is DVMVault {
DecimalMath.ONE.sub(mtFeeRate).sub(lpFeeRate)
);
baseBalance = baseReserve.sub(validBaseOut);
_transferBaseOut(_MAINTAINER_, DecimalMath.mulCeil(validBaseOut, mtFeeRate));
_transferBaseOut(_MAINTAINER_, DecimalMath.mulFloor(validBaseOut, mtFeeRate));
}
if (quoteBalance < quoteReserve) {
uint256 validQuoteOut = DecimalMath.divCeil(
@@ -106,7 +107,7 @@ contract DVMTrader is DVMVault {
DecimalMath.ONE.sub(mtFeeRate).sub(lpFeeRate)
);
quoteBalance = quoteReserve.sub(validQuoteOut);
_transferQuoteOut(_MAINTAINER_, DecimalMath.mulCeil(validQuoteOut, mtFeeRate));
_transferQuoteOut(_MAINTAINER_, DecimalMath.mulFloor(validQuoteOut, mtFeeRate));
}
require(