fix test
This commit is contained in:
@@ -12,7 +12,7 @@ import {DVMStorage} from "./DVMStorage.sol";
|
||||
import {DecimalMath} from "../../lib/DecimalMath.sol";
|
||||
|
||||
contract DVMFunding is DVMStorage {
|
||||
function buyShares(address account) external returns (uint256) {
|
||||
function buyShares(address to) external returns (uint256) {
|
||||
uint256 baseInput = _VAULT_.getBaseInput();
|
||||
uint256 quoteInput = _VAULT_.getQuoteInput();
|
||||
require(baseInput > 0, "NO_BASE_INPUT");
|
||||
@@ -42,22 +42,28 @@ contract DVMFunding is DVMStorage {
|
||||
mintAmount = baseInput;
|
||||
}
|
||||
}
|
||||
_VAULT_.mint(account, mintAmount);
|
||||
_VAULT_.mint(to, mintAmount);
|
||||
_VAULT_.sync();
|
||||
}
|
||||
|
||||
function sellShares(
|
||||
address account,
|
||||
address to,
|
||||
uint256 amount
|
||||
) external returns (uint256) {
|
||||
require(msg.sender == account, "PERMISSION_DENY");
|
||||
require(_VAULT_.balanceOf(account) >= amount, "SHARES_NOT_ENOUGH");
|
||||
function sellShares(address to, uint256 amount) external returns (uint256) {
|
||||
require(_VAULT_.balanceOf(msg.sender) >= amount, "SHARES_NOT_ENOUGH");
|
||||
(uint256 baseBalance, uint256 quoteBalance) = _VAULT_.getVaultBalance();
|
||||
uint256 totalShares = _VAULT_.totalSupply();
|
||||
_VAULT_.burn(account, amount);
|
||||
_VAULT_.burn(msg.sender, amount);
|
||||
_VAULT_.transferBaseOut(to, baseBalance.mul(amount).div(totalShares));
|
||||
_VAULT_.transferQuoteOut(to, quoteBalance.mul(amount).div(totalShares));
|
||||
_VAULT_.sync();
|
||||
}
|
||||
|
||||
function retrieve(address to) external {
|
||||
(uint256 baseBalance, uint256 quoteBalance) = _VAULT_.getVaultBalance();
|
||||
(uint256 baseReserve, uint256 quoteReserve) = _VAULT_.getVaultReserve();
|
||||
if (baseBalance.sub(baseReserve) > 0) {
|
||||
_VAULT_.transferBaseOut(to, baseBalance.sub(baseReserve));
|
||||
}
|
||||
if (quoteBalance.sub(quoteReserve) > 0) {
|
||||
_VAULT_.transferQuoteOut(to, quoteBalance.sub(quoteReserve));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,13 @@ contract DVMStorage is InitializableOwnable, ReentrancyGuard {
|
||||
|
||||
// ============ Helper Functions ============
|
||||
|
||||
function getBase0(uint256 baseAmount, uint256 quoteAmount) public view returns (uint256) {
|
||||
function calculateBase0(uint256 baseAmount, uint256 quoteAmount) public view returns (uint256) {
|
||||
uint256 fairAmount = DecimalMath.divFloor(quoteAmount, _I_);
|
||||
return DODOMath._SolveQuadraticFunctionForTarget(baseAmount, _K_, fairAmount);
|
||||
}
|
||||
|
||||
function getBase0() public view returns (uint256) {
|
||||
(uint256 baseAmount, uint256 quoteAmount) = _VAULT_.getVaultReserve();
|
||||
uint256 fairAmount = DecimalMath.divFloor(quoteAmount, _I_);
|
||||
return DODOMath._SolveQuadraticFunctionForTarget(baseAmount, _K_, fairAmount);
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ contract DVMTrader is DVMStorage {
|
||||
bytes calldata data
|
||||
) external {
|
||||
(uint256 baseReserve, uint256 quoteReserve) = _VAULT_.getVaultReserve();
|
||||
uint256 B0 = getBase0(baseReserve, quoteReserve);
|
||||
uint256 B0 = calculateBase0(baseReserve, quoteReserve);
|
||||
|
||||
uint256 mtFeeRate = _MT_FEE_RATE_MODEL_.getFeeRate(assetTo, quoteAmount);
|
||||
uint256 baseMtFee = DecimalMath.mulCeil(baseAmount, mtFeeRate);
|
||||
@@ -63,7 +63,7 @@ contract DVMTrader is DVMStorage {
|
||||
IExternalCall(call).DVMCall(data);
|
||||
|
||||
(uint256 baseBalance, uint256 quoteBalance) = _VAULT_.getVaultBalance();
|
||||
uint256 newB0 = getBase0(baseBalance, quoteBalance);
|
||||
uint256 newB0 = calculateBase0(baseBalance, quoteBalance);
|
||||
require(newB0 >= B0, "FLASH_LOAN_FAILED");
|
||||
_VAULT_.sync();
|
||||
}
|
||||
@@ -74,7 +74,7 @@ contract DVMTrader is DVMStorage {
|
||||
returns (uint256 receiveQuoteAmount, uint256 mtFee)
|
||||
{
|
||||
(uint256 baseReserve, uint256 quoteReserve) = _VAULT_.getVaultReserve();
|
||||
uint256 B0 = getBase0(baseReserve, quoteReserve);
|
||||
uint256 B0 = calculateBase0(baseReserve, quoteReserve);
|
||||
|
||||
uint256 B1 = baseReserve.add(payBaseAmount);
|
||||
require(B0 >= B1, "DODO_BASE_BALANCE_NOT_ENOUGH");
|
||||
@@ -94,7 +94,7 @@ contract DVMTrader is DVMStorage {
|
||||
returns (uint256 receiveBaseAmount, uint256 mtFee)
|
||||
{
|
||||
(uint256 baseReserve, uint256 quoteReserve) = _VAULT_.getVaultReserve();
|
||||
uint256 B0 = getBase0(baseReserve, quoteReserve);
|
||||
uint256 B0 = calculateBase0(baseReserve, quoteReserve);
|
||||
|
||||
uint256 fairAmount = DecimalMath.divFloor(payQuoteAmount, _I_);
|
||||
uint256 newBaseReserve = DODOMath._SolveQuadraticFunctionForTrade(
|
||||
@@ -114,7 +114,7 @@ contract DVMTrader is DVMStorage {
|
||||
|
||||
function getMidPrice() public view returns (uint256 midPrice) {
|
||||
(uint256 baseReserve, uint256 quoteReserve) = _VAULT_.getVaultReserve();
|
||||
uint256 B0 = getBase0(baseReserve, quoteReserve);
|
||||
uint256 B0 = calculateBase0(baseReserve, quoteReserve);
|
||||
|
||||
uint256 offsetRatio = DecimalMath.ONE.mul(B0).div(baseReserve).mul(B0).div(baseReserve);
|
||||
uint256 offset = DecimalMath.ONE.sub(_K_).add(DecimalMath.mulFloor(offsetRatio, _K_));
|
||||
|
||||
Reference in New Issue
Block a user