nftPool out fix
This commit is contained in:
@@ -51,7 +51,7 @@ contract BaseFilterV1 is InitializableOwnable, ReentrancyGuard {
|
||||
// GS -> Geometric sequence
|
||||
// CR -> Common Ratio
|
||||
|
||||
//For Deposit NFT INto Pool
|
||||
//For Deposit NFT IN to Pool
|
||||
uint256 public _GS_START_IN_;
|
||||
uint256 public _CR_IN_;
|
||||
bool public _NFT_IN_TOGGLE_ = false;
|
||||
|
||||
@@ -81,7 +81,8 @@ contract FilterERC1155V1 is IERC1155Receiver, BaseFilterV1 {
|
||||
function ERC1155TargetOut(
|
||||
uint256[] memory tokenIds,
|
||||
uint256[] memory amounts,
|
||||
address to
|
||||
address to,
|
||||
uint256 maxBurnAmount
|
||||
) external preventReentrant returns (uint256 paid) {
|
||||
require(tokenIds.length == amounts.length, "PARAM_INVALID");
|
||||
uint256 avaliableNFTOutAmount = getAvaliableNFTOutAmount();
|
||||
@@ -95,18 +96,21 @@ contract FilterERC1155V1 is IERC1155Receiver, BaseFilterV1 {
|
||||
}
|
||||
require(totalAmount <= avaliableNFTOutAmount, "EXCEED_OUT_AMOUNT");
|
||||
(uint256 rawPay, ) = _queryNFTTargetOut(originTotalNftAmount - totalAmount, originTotalNftAmount);
|
||||
paid = IFilterAdmin(_OWNER_).burnFragFrom(to, rawPay);
|
||||
paid = IFilterAdmin(_OWNER_).burnFragFrom(msg.sender, rawPay);
|
||||
require(paid <= maxBurnAmount, "BURN_AMOUNT_EXCEED");
|
||||
|
||||
emit TargetOutOrder(to, paid);
|
||||
emit TargetOutOrder(msg.sender, paid);
|
||||
}
|
||||
|
||||
function ERC1155RandomOut(uint256 amount, address to)
|
||||
function ERC1155RandomOut(uint256 amount, address to, uint256 maxBurnAmount)
|
||||
external
|
||||
preventReentrant
|
||||
returns (uint256 paid)
|
||||
{
|
||||
(uint256 rawPay, ) = queryNFTRandomOut(amount);
|
||||
paid = IFilterAdmin(_OWNER_).burnFragFrom(to, rawPay);
|
||||
paid = IFilterAdmin(_OWNER_).burnFragFrom(msg.sender, rawPay);
|
||||
require(paid <= maxBurnAmount, "BURN_AMOUNT_EXCEED");
|
||||
|
||||
for (uint256 i = 0; i < amount; i++) {
|
||||
uint256 randomNum = _getRandomNum() % _TOTAL_NFT_AMOUNT_;
|
||||
uint256 sum;
|
||||
@@ -121,7 +125,7 @@ contract FilterERC1155V1 is IERC1155Receiver, BaseFilterV1 {
|
||||
}
|
||||
}
|
||||
|
||||
emit RandomOutOrder(to, paid);
|
||||
emit RandomOutOrder(msg.sender, paid);
|
||||
}
|
||||
|
||||
// ============ Transfer =============
|
||||
|
||||
@@ -85,13 +85,15 @@ contract FilterERC721V1 is IERC721Receiver, BaseFilterV1 {
|
||||
emit NftInOrder(to, received);
|
||||
}
|
||||
|
||||
function ERC721TargetOut(uint256[] memory tokenIds, address to)
|
||||
function ERC721TargetOut(uint256[] memory tokenIds, address to, uint256 maxBurnAmount)
|
||||
external
|
||||
preventReentrant
|
||||
returns (uint256 paid)
|
||||
{
|
||||
(uint256 rawPay, ) = queryNFTTargetOut(tokenIds.length);
|
||||
paid = IFilterAdmin(_OWNER_).burnFragFrom(to, rawPay);
|
||||
paid = IFilterAdmin(_OWNER_).burnFragFrom(msg.sender, rawPay);
|
||||
require(paid <= maxBurnAmount, "BURN_AMOUNT_EXCEED");
|
||||
|
||||
for (uint256 i = 0; i < tokenIds.length; i++) {
|
||||
_transferOutERC721(to, tokenIds[i]);
|
||||
|
||||
@@ -99,16 +101,17 @@ contract FilterERC721V1 is IERC721Receiver, BaseFilterV1 {
|
||||
}
|
||||
_TOTAL_NFT_AMOUNT_ = _NFT_IDS_.length;
|
||||
|
||||
emit TargetOutOrder(to, paid);
|
||||
emit TargetOutOrder(msg.sender, paid);
|
||||
}
|
||||
|
||||
function ERC721RandomOut(uint256 amount, address to)
|
||||
function ERC721RandomOut(uint256 amount, address to, uint256 maxBurnAmount)
|
||||
external
|
||||
preventReentrant
|
||||
returns (uint256 paid)
|
||||
{
|
||||
(uint256 rawPay, ) = queryNFTRandomOut(amount);
|
||||
paid = IFilterAdmin(_OWNER_).burnFragFrom(to, rawPay);
|
||||
paid = IFilterAdmin(_OWNER_).burnFragFrom(msg.sender, rawPay);
|
||||
require(paid <= maxBurnAmount, "BURN_AMOUNT_EXCEED");
|
||||
for (uint256 i = 0; i < amount; i++) {
|
||||
uint256 index = _getRandomNum() % _NFT_IDS_.length;
|
||||
uint256 tokenId = _NFT_IDS_[index];
|
||||
@@ -117,7 +120,7 @@ contract FilterERC721V1 is IERC721Receiver, BaseFilterV1 {
|
||||
}
|
||||
_TOTAL_NFT_AMOUNT_ = _NFT_IDS_.length;
|
||||
|
||||
emit RandomOutOrder(to, paid);
|
||||
emit RandomOutOrder(msg.sender, paid);
|
||||
}
|
||||
|
||||
// ============ Transfer =============
|
||||
|
||||
Reference in New Issue
Block a user