Merge pull request #38 from DODOEX/fix-first-deposit
lock some shares to zero address in first deposit
This commit is contained in:
@@ -50,6 +50,9 @@ contract DSPFunding is DSPVault {
|
|||||||
: baseBalance;
|
: baseBalance;
|
||||||
_BASE_TARGET_ = uint112(shares);
|
_BASE_TARGET_ = uint112(shares);
|
||||||
_QUOTE_TARGET_ = uint112(DecimalMath.mulFloor(shares, _I_));
|
_QUOTE_TARGET_ = uint112(DecimalMath.mulFloor(shares, _I_));
|
||||||
|
require(shares > 2001, "MINT_AMOUNT_NOT_ENOUGH");
|
||||||
|
_mint(address(0), 1001);
|
||||||
|
shares -= 1001;
|
||||||
} else if (baseReserve > 0 && quoteReserve > 0) {
|
} else if (baseReserve > 0 && quoteReserve > 0) {
|
||||||
// case 2. normal case
|
// case 2. normal case
|
||||||
uint256 baseInputRatio = DecimalMath.divFloor(baseInput, baseReserve);
|
uint256 baseInputRatio = DecimalMath.divFloor(baseInput, baseReserve);
|
||||||
@@ -76,6 +79,7 @@ contract DSPFunding is DSPVault {
|
|||||||
) external preventReentrant returns (uint256 baseAmount, uint256 quoteAmount) {
|
) external preventReentrant returns (uint256 baseAmount, uint256 quoteAmount) {
|
||||||
require(deadline >= block.timestamp, "TIME_EXPIRED");
|
require(deadline >= block.timestamp, "TIME_EXPIRED");
|
||||||
require(shareAmount <= _SHARES_[msg.sender], "DLP_NOT_ENOUGH");
|
require(shareAmount <= _SHARES_[msg.sender], "DLP_NOT_ENOUGH");
|
||||||
|
require(to != address(this), "SELL_BACK_NOT_ALLOWED");
|
||||||
|
|
||||||
uint256 baseBalance = _BASE_TOKEN_.balanceOf(address(this));
|
uint256 baseBalance = _BASE_TOKEN_.balanceOf(address(this));
|
||||||
uint256 quoteBalance = _QUOTE_TOKEN_.balanceOf(address(this));
|
uint256 quoteBalance = _QUOTE_TOKEN_.balanceOf(address(this));
|
||||||
|
|||||||
@@ -44,8 +44,10 @@ contract DVMFunding is DVMVault {
|
|||||||
// But May Happen,reserve >0 But totalSupply = 0
|
// But May Happen,reserve >0 But totalSupply = 0
|
||||||
if (totalSupply == 0) {
|
if (totalSupply == 0) {
|
||||||
// case 1. initial supply
|
// case 1. initial supply
|
||||||
require(baseBalance >= 10**3, "INSUFFICIENT_LIQUIDITY_MINED");
|
|
||||||
shares = baseBalance; // 以免出现balance很大但shares很小的情况
|
shares = baseBalance; // 以免出现balance很大但shares很小的情况
|
||||||
|
require(shares > 2001, "MINT_AMOUNT_NOT_ENOUGH");
|
||||||
|
_mint(address(0), 1001);
|
||||||
|
shares -= 1001;
|
||||||
} else if (baseReserve > 0 && quoteReserve == 0) {
|
} else if (baseReserve > 0 && quoteReserve == 0) {
|
||||||
// case 2. supply when quote reserve is 0
|
// case 2. supply when quote reserve is 0
|
||||||
shares = baseInput.mul(totalSupply).div(baseReserve);
|
shares = baseInput.mul(totalSupply).div(baseReserve);
|
||||||
@@ -72,6 +74,7 @@ contract DVMFunding is DVMVault {
|
|||||||
) external preventReentrant returns (uint256 baseAmount, uint256 quoteAmount) {
|
) external preventReentrant returns (uint256 baseAmount, uint256 quoteAmount) {
|
||||||
require(deadline >= block.timestamp, "TIME_EXPIRED");
|
require(deadline >= block.timestamp, "TIME_EXPIRED");
|
||||||
require(shareAmount <= _SHARES_[msg.sender], "DLP_NOT_ENOUGH");
|
require(shareAmount <= _SHARES_[msg.sender], "DLP_NOT_ENOUGH");
|
||||||
|
require(to != address(this), "SELL_BACK_NOT_ALLOWED");
|
||||||
uint256 baseBalance = _BASE_TOKEN_.balanceOf(address(this));
|
uint256 baseBalance = _BASE_TOKEN_.balanceOf(address(this));
|
||||||
uint256 quoteBalance = _QUOTE_TOKEN_.balanceOf(address(this));
|
uint256 quoteBalance = _QUOTE_TOKEN_.balanceOf(address(this));
|
||||||
uint256 totalShares = totalSupply;
|
uint256 totalShares = totalSupply;
|
||||||
|
|||||||
Reference in New Issue
Block a user