From 0c4d1ea9eb5680859aea1438f4ee0ef2f06334af Mon Sep 17 00:00:00 2001 From: owen05 Date: Wed, 28 Apr 2021 09:41:33 +0800 Subject: [PATCH] fix --- contracts/CollateralVault/impl/NFTCollateralVault.sol | 3 +++ contracts/SmartRoute/proxies/DODONFTProxy.sol | 10 ++++++++++ test/DODONFT/nftMainFlow.test.ts | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/contracts/CollateralVault/impl/NFTCollateralVault.sol b/contracts/CollateralVault/impl/NFTCollateralVault.sol index 8541aec..c8d7da8 100644 --- a/contracts/CollateralVault/impl/NFTCollateralVault.sol +++ b/contracts/CollateralVault/impl/NFTCollateralVault.sol @@ -47,6 +47,7 @@ contract NFTCollateralVault is InitializableOwnable, IERC721Receiver, IERC1155Re // ============ Ownable ============ function directTransferOwnership(address newOwner) external onlyOwner { + require(newOwner != address(0), "DODONftVault: ZERO_ADDRESS"); _OWNER_ = newOwner; emit OwnershipTransferred(_OWNER_, newOwner); } @@ -60,11 +61,13 @@ contract NFTCollateralVault is InitializableOwnable, IERC721Receiver, IERC1155Re } function withdrawERC721(address nftContract, uint256 tokenId) external onlyOwner { + require(nftContract != address(0), "DODONftVault: ZERO_ADDRESS"); _removeNftInfo(nftContract, tokenId, 1); IERC721(nftContract).safeTransferFrom(address(this), _OWNER_, tokenId, ""); } function withdrawERC1155(address nftContract, uint256[] memory tokenIds, uint256[] memory amounts) external onlyOwner { + require(nftContract != address(0), "DODONftVault: ZERO_ADDRESS"); require(tokenIds.length == amounts.length, "PARAMS_NOT_MATCH"); for(uint256 i = 0; i < tokenIds.length; i++) { _removeNftInfo(nftContract, tokenIds[i], amounts[i]); diff --git a/contracts/SmartRoute/proxies/DODONFTProxy.sol b/contracts/SmartRoute/proxies/DODONFTProxy.sol index 5775ed0..db9a840 100644 --- a/contracts/SmartRoute/proxies/DODONFTProxy.sol +++ b/contracts/SmartRoute/proxies/DODONFTProxy.sol @@ -150,6 +150,11 @@ contract DODONFTProxy is ReentrancyGuard, InitializableOwnable { uint256 quoteAmount, uint8 flag // 0 - ERC20, 1 - quoteInETH ) external payable preventReentrant { + if(flag == 1) + require(msg.value == quoteAmount, "DODONFTProxy: VALUE_INVALID"); + else + require(msg.value == 0, "DODONFTProxy: WE_SAVED_YOUR_MONEY"); + _deposit(msg.sender, fragment, IFragment(fragment)._QUOTE_(), quoteAmount, flag == 1); IFragment(fragment).buyout(msg.sender); emit Buyout(msg.sender, fragment, quoteAmount); @@ -160,6 +165,11 @@ contract DODONFTProxy is ReentrancyGuard, InitializableOwnable { uint256 stakeAmount, uint8 flag // 0 - ERC20, 1 - ETH ) external payable preventReentrant { + if(flag == 1) + require(msg.value == stakeAmount, "DODONFTProxy: VALUE_INVALID"); + else + require(msg.value == 0, "DODONFTProxy: WE_SAVED_YOUR_MONEY"); + address stakeVault = IFeeDistributor(feeDistributor)._STAKE_VAULT_(); require(stakeVault != address(0), "DODONFTProxy:STAKE_VAULT_EMPTY"); _deposit(msg.sender, stakeVault, IFeeDistributor(feeDistributor)._STAKE_TOKEN_(), stakeAmount, flag == 1); diff --git a/test/DODONFT/nftMainFlow.test.ts b/test/DODONFT/nftMainFlow.test.ts index 48fbfe6..72158df 100644 --- a/test/DODONFT/nftMainFlow.test.ts +++ b/test/DODONFT/nftMainFlow.test.ts @@ -143,7 +143,7 @@ describe("DODONFT", () => { assert(nftInfo.tokenId, '0') }); - it.only("createFragment", async () => { + it("createFragment", async () => { var erc721Address = await ctx.createERC721(ctx, author); var vaultAddress = await ctx.createNFTVault(ctx, author); var nftVaultInstance = contracts.getContractWithAddress(contracts.NFT_VAULT, vaultAddress);