diff --git a/README.md b/README.md index abd997c..7da0eac 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,34 @@ - Then run the truffle migration command truffle migrate --reset --network testnet + +## Error Table + +The table below lists all possible reasons for errors in a contract call that mints, bids, buy, sell, withdraw bid or cancel a sale. + +| No | Error | Reason | +|:----------:|:-------------|:------| +| 1 | Not an owner of token | Should be an owner of token | +| 2 | Token not for sale | Token should be up for sale | +| 3 | Buyer is owner of token | Buyer of token can't be the owner of token | +| 4 | Token is not put on bid Sale | Token should be up for bid sale | +| 5 | Price entered is lower than base price of token | Price should be greater than the base price of token | +| 6 | Buyer is an owner of token | Buyer of token can't be an owner of token | +| 7 | Quantity greater than number of tokens | Number of tokens should be greater or equal to quantity | +| 8 | Quantity less than (price x quantity)) | Quantity should be greater or equal to (price x quantity)) | +| 9 | Collection Address is zero address | Collection Address should not be zero address | +| 10 | Minting more than 15 Nfts | Minting more than 15 Nfts are not allowed | +| 11 | URI array & totalNFT count mismatch | URI array length should be equal to _totalNFT | +| 12 | Royalities array length is greater than 10 | Royalities array length should be less than or equal to 10 | +| 13 | Royalty recipient is not present | Royalty recipient should be present | +| 14 | Royalty value is less or equal to 0 | Royalty value should be greater than 0 | +| 15 | Sum of Royalties > 100% | Sum of Royalties should be < 100% | +| 16 | Not a valid address | Address should be valid | +| 17 | Not a valid fee address | Fee address should be valid | +| 18 | Bid end time exceeded | Timestamp greater than bid end time | +| 19 | Bid price is less than base price | Bid price should be minimum 5% more than the base price | +| 20 | Bid withdrawn for order Id | Bid should not be withdrawn to execute order for particular order Id | +| 21 | Address is not a bidder address | Bidder Address is mismatched | +| 22 | Price for each quantity is less than base price of single quantity | Price for each quantity should be greater or equal to the base price of single quantity | - - - We are in the phase of auditing. Please consider it as beta version. +We are in the phase of auditing. Please consider it as beta version. diff --git a/contracts/Auction/Bid.sol b/contracts/Auction/Bid.sol index 8827007..c871a96 100644 --- a/contracts/Auction/Bid.sol +++ b/contracts/Auction/Bid.sol @@ -13,13 +13,13 @@ contract NFTBid is NFTFactoryContract { using Counters for Counters.Counter; function Bid(uint256 _saleId) external payable { - require(_tokenMeta[_saleId].currentOwner != _msgSender()); - require(_tokenMeta[_saleId].status == true); - require(_tokenMeta[_saleId].bidSale == true); - require(block.timestamp <= _tokenMeta[_saleId].bidEndTime); + require(_tokenMeta[_saleId].currentOwner != _msgSender(),"3"); + require(_tokenMeta[_saleId].status == true,"2"); + require(_tokenMeta[_saleId].bidSale == true,"4"); + require(block.timestamp <= _tokenMeta[_saleId].bidEndTime,"18"); require( _tokenMeta[_saleId].price + ((5 * _tokenMeta[_saleId].price) / 100) <= - msg.value + msg.value,"19" ); // require(_timeOfAuction[_saleId] >= block.timestamp,"Auction Over"); @@ -43,7 +43,7 @@ contract NFTBid is NFTFactoryContract { uint256 _price, uint256 _bidTime ) external onlyOwnerOfToken(_collectionAddress, _tokenId) nonReentrant { - require(_collectionAddress != address(0)); + require(_collectionAddress != address(0),"9"); _tokenIdTracker.increment(); //needs approval on frontend @@ -76,9 +76,9 @@ contract NFTBid is NFTFactoryContract { nonReentrant { LibBid.BidOrder memory bids = Bids[_saleId][_bidOrderID]; - require(msg.sender == _tokenMeta[_saleId].currentOwner); - require(bids.withdrawn == false); - require(_tokenMeta[_saleId].status == true); + require(msg.sender == _tokenMeta[_saleId].currentOwner,"1"); + require(bids.withdrawn == false,"20"); + require(_tokenMeta[_saleId].status == true,"2"); LibShare.Share[] memory royalties = LibRoyalty.retrieveRoyalty( _tokenMeta[_saleId].collectionAddress, @@ -116,11 +116,11 @@ contract NFTBid is NFTFactoryContract { external nonReentrant { - require(msg.sender != _tokenMeta[_saleId].currentOwner); + require(msg.sender != _tokenMeta[_saleId].currentOwner,"3"); // BidOrder[] memory bids = Bids[_tokenId]; LibBid.BidOrder memory bids = Bids[_saleId][_bidId]; - require(bids.buyerAddress == msg.sender); - require(bids.withdrawn == false); + require(bids.buyerAddress == msg.sender,"21"); + require(bids.withdrawn == false,"20"); (bool success, ) = payable(msg.sender).call{ value: bids.price }(""); diff --git a/contracts/Auction/Bid1155.sol b/contracts/Auction/Bid1155.sol index 6cda336..24deea4 100644 --- a/contracts/Auction/Bid1155.sol +++ b/contracts/Auction/Bid1155.sol @@ -11,12 +11,12 @@ contract NFTBid1155 is NFTFactoryContract1155 { using Counters for Counters.Counter; function Bid(uint256 _saleId, uint256 _amount) external payable { - require(_tokenMeta[_saleId].currentOwner != msg.sender); - require(_tokenMeta[_saleId].status == true); - require(_tokenMeta[_saleId].bidSale == true); + require(_tokenMeta[_saleId].currentOwner != msg.sender,"3"); + require(_tokenMeta[_saleId].status == true,"2"); + require(_tokenMeta[_saleId].bidSale == true,"4"); require(msg.value % _amount == 0); - require(msg.value / _amount >= _tokenMeta[_saleId].price); - require(_tokenMeta[_saleId].numberOfTokens >= _amount); + require(msg.value / _amount >= _tokenMeta[_saleId].price,"22"); + require(_tokenMeta[_saleId].numberOfTokens >= _amount,"7"); LibBid1155.BidOrder memory bid = LibBid1155.BidOrder( _saleId, @@ -39,7 +39,7 @@ contract NFTBid1155 is NFTFactoryContract1155 { require(_price > 0); require(_amount > 0); uint256 bal = ERC1155(_collectionAddress).balanceOf(msg.sender, _tokenId); - require(bal >= _amount); + require(bal >= _amount,"7"); _tokenIdTracker.increment(); @@ -68,10 +68,10 @@ contract NFTBid1155 is NFTFactoryContract1155 { nonReentrant { LibBid1155.BidOrder memory bids = Bids[_saleId][_bidOrderID]; - require(msg.sender == _tokenMeta[_saleId].currentOwner); - require(bids.withdrawn == false); - require(_tokenMeta[_saleId].status == true); - require(_tokenMeta[_saleId].numberOfTokens >= bids.numberOfTokens); + require(msg.sender == _tokenMeta[_saleId].currentOwner,"1"); + require(bids.withdrawn == false,"20"); + require(_tokenMeta[_saleId].status == true,"2"); + require(_tokenMeta[_saleId].numberOfTokens >= bids.numberOfTokens,"7"); LibShare.Share[] memory royalties = LibRoyalty.retrieveRoyalty( _tokenMeta[_saleId].collectionAddress, @@ -108,9 +108,10 @@ contract NFTBid1155 is NFTFactoryContract1155 { function withdrawBidMoney(uint256 _saleId, uint256 _bidId) external nonReentrant{ LibBid1155.BidOrder memory bids = Bids[_saleId][_bidId]; require( - bids.buyerAddress == msg.sender + bids.buyerAddress == msg.sender, + "21" ); - require(bids.withdrawn == false); + require(bids.withdrawn == false,"20"); (bool success, ) = payable(msg.sender).call{ value: bids.price }(""); diff --git a/contracts/NFTFactoryContract.sol b/contracts/NFTFactoryContract.sol index 2c8d9a5..0ee1bf6 100644 --- a/contracts/NFTFactoryContract.sol +++ b/contracts/NFTFactoryContract.sol @@ -23,7 +23,7 @@ contract NFTFactoryContract is event TokenMetaReturn(LibMeta.TokenMeta data, uint256 id); modifier onlyOwnerOfToken(address _collectionAddress, uint256 _tokenId) { - require(msg.sender == ERC721(_collectionAddress).ownerOf(_tokenId)); + require(msg.sender == ERC721(_collectionAddress).ownerOf(_tokenId),"1"); _; } @@ -38,10 +38,10 @@ contract NFTFactoryContract is meta.tokenId ); - require(meta.status); - require(msg.sender != address(0) && msg.sender != meta.currentOwner); - require(!meta.bidSale); - require(msg.value >= meta.price); + require(meta.status,"2"); + require(msg.sender != address(0) && msg.sender != meta.currentOwner,"3"); + require(!meta.bidSale,"4"); + require(msg.value >= meta.price,"5"); LibMeta.transfer(_tokenMeta[_saleId], msg.sender); @@ -99,8 +99,8 @@ contract NFTFactoryContract is } function cancelSale(uint256 _saleId) external nonReentrant { - require(msg.sender == _tokenMeta[_saleId].currentOwner); - require(_tokenMeta[_saleId].status == true); + require(msg.sender == _tokenMeta[_saleId].currentOwner,"1"); + require(_tokenMeta[_saleId].status == true,"2"); _tokenMeta[_saleId].status = false; ERC721(_tokenMeta[_saleId].collectionAddress).safeTransferFrom( diff --git a/contracts/NFTFactoryContract1155.sol b/contracts/NFTFactoryContract1155.sol index ee8149a..b2e7b7b 100644 --- a/contracts/NFTFactoryContract1155.sol +++ b/contracts/NFTFactoryContract1155.sol @@ -39,11 +39,11 @@ contract NFTFactoryContract1155 is meta.tokenId ); - require(meta.status == true); - require(msg.sender != address(0) && msg.sender != meta.currentOwner); - require(meta.bidSale == false); - require(meta.numberOfTokens >= _amount); - require(msg.value >= (meta.price * _amount)); + require(meta.status == true,"2"); + require(msg.sender != address(0) && msg.sender != meta.currentOwner,"3"); + require(meta.bidSale == false,"4"); + require(meta.numberOfTokens >= _amount,"7"); + require(msg.value >= (meta.price * _amount),"8"); LibMeta1155.transfer(_tokenMeta[_saleId], _amount); @@ -73,9 +73,9 @@ contract NFTFactoryContract1155 is external nonReentrant { - require(_collectionAddress != address(0)); + require(_collectionAddress != address(0), "9"); uint256 bal = ERC1155(_collectionAddress).balanceOf(msg.sender, _tokenId); - require(bal >= _amount); + require(bal >= _amount,"7"); _tokenIdTracker.increment(); @@ -101,8 +101,8 @@ contract NFTFactoryContract1155 is function cancelSale(uint256 _saleId) external nonReentrant{ - require(msg.sender == _tokenMeta[_saleId].currentOwner); - require(_tokenMeta[_saleId].status == true); + require(msg.sender == _tokenMeta[_saleId].currentOwner,"1"); + require(_tokenMeta[_saleId].status == true,"2"); _tokenMeta[_saleId].status = false; ERC1155(_tokenMeta[_saleId].collectionAddress).safeTransferFrom( diff --git a/contracts/PNDC_ERC1155.sol b/contracts/PNDC_ERC1155.sol index 9d41178..9d2f8c2 100644 --- a/contracts/PNDC_ERC1155.sol +++ b/contracts/PNDC_ERC1155.sol @@ -46,7 +46,7 @@ contract PNDC_ERC1155 is ERC1155, Ownable, ERC1155Supply { } function burn(address _from, uint256 _id, uint256 _amount) public { - require(balanceOf(_from, _id) >= _amount); + require(balanceOf(_from, _id) >= _amount,"7"); _burn(_from, _id, _amount); } @@ -55,19 +55,19 @@ contract PNDC_ERC1155 is ERC1155, Ownable, ERC1155Supply { uint256 _tokenId, LibShare.Share[] memory royalties ) internal { - require(royalties.length <= 10); + require(royalties.length <= 10,"12"); delete royaltiesByTokenId[_tokenId]; uint256 sumRoyalties = 0; for (uint256 i = 0; i < royalties.length; i++) { require( royalties[i].account != address(0x0), - "Royalty recipient should be present" + "13" ); - require(royalties[i].value != 0, "Royalty value should be > 0"); + require(royalties[i].value != 0, "14"); royaltiesByTokenId[_tokenId].push(royalties[i]); sumRoyalties += royalties[i].value; } - require(sumRoyalties < 10000, "Sum of Royalties > 100%"); + require(sumRoyalties < 10000, "15"); emit RoyaltiesSetForTokenId(_tokenId, royalties); } diff --git a/contracts/PNDC_ERC721.sol b/contracts/PNDC_ERC721.sol index b8c2fc5..88653f0 100644 --- a/contracts/PNDC_ERC721.sol +++ b/contracts/PNDC_ERC721.sol @@ -41,10 +41,10 @@ contract PNDC_ERC721 is ERC721, ERC721Enumerable, ERC721URIStorage, Ownable { string[] memory _uri, LibShare.Share[][] memory royaltiesSet ) external { - require(_totalNft <= 15, "Minting more than 15 Nfts are not allowe"); + require(_totalNft <= 15, "10"); require( _totalNft == _uri.length, - "uri array length should be equal to _totalNFT" + "11" ); for (uint256 i = 0; i < _totalNft; i++) { this.safeMint(msg.sender, _uri[i], royaltiesSet[i]); @@ -52,7 +52,7 @@ contract PNDC_ERC721 is ERC721, ERC721Enumerable, ERC721URIStorage, Ownable { } function burn(uint256 _tokenId) external { - require(msg.sender == ownerOf(_tokenId)); + require(msg.sender == ownerOf(_tokenId),"1"); _burn(_tokenId); } @@ -61,19 +61,19 @@ contract PNDC_ERC721 is ERC721, ERC721Enumerable, ERC721URIStorage, Ownable { uint256 _tokenId, LibShare.Share[] memory royalties ) internal { - require(royalties.length <= 10); + require(royalties.length <= 10,"12"); delete royaltiesByTokenId[_tokenId]; uint256 sumRoyalties = 0; for (uint256 i = 0; i < royalties.length; i++) { require( royalties[i].account != address(0x0), - "Royalty recipient should be present" + "13" ); - require(royalties[i].value != 0, "Royalty value should be > 0"); + require(royalties[i].value != 0, "14"); royaltiesByTokenId[_tokenId].push(royalties[i]); sumRoyalties += royalties[i].value; } - require(sumRoyalties < 10000, "Sum of Royalties > 100%"); + require(sumRoyalties < 10000, "15"); emit RoyaltiesSetForTokenId(_tokenId, royalties); } diff --git a/contracts/TokenERC1155.sol b/contracts/TokenERC1155.sol index 34ef637..03fe5c7 100644 --- a/contracts/TokenERC1155.sol +++ b/contracts/TokenERC1155.sol @@ -41,7 +41,7 @@ contract TokenERC1155 is Ownable, ERC1155Supply { } function burn(address _from, uint256 _id, uint256 _amount) public { - require(balanceOf(_from, _id) >= _amount); + require(balanceOf(_from, _id) >= _amount,"7"); _burn(_from, _id, _amount); } @@ -83,18 +83,18 @@ contract TokenERC1155 is Ownable, ERC1155Supply { LibShare.Share[] storage royaltiesArr, LibShare.Share[] memory royalties ) internal { - require(royalties.length <= 10); + require(royalties.length <= 10,"12"); uint256 sumRoyalties = 0; for (uint256 i = 0; i < royalties.length; i++) { require( royalties[i].account != address(0x0), - "Royalty recipient should be present" + "13" ); - require(royalties[i].value != 0, "Royalty value should be > 0"); + require(royalties[i].value != 0, "14"); royaltiesArr.push(royalties[i]); sumRoyalties += royalties[i].value; } - require(sumRoyalties < 10000, "Sum of Royalties > 100%"); + require(sumRoyalties < 10000, "15"); } // The following functions are overrides required by Solidity. diff --git a/contracts/TokenERC721.sol b/contracts/TokenERC721.sol index 32dbeb0..ef65fbe 100644 --- a/contracts/TokenERC721.sol +++ b/contracts/TokenERC721.sol @@ -46,10 +46,10 @@ contract TokenERC721 is ERC721Enumerable, ERC721URIStorage, Ownable { string[] memory _uri, RoyaltiesSet memory royaltiesSet ) external onlyOwner{ - require(_totalNft <= 15, "Minting more than 15 Nfts are not allowe"); + require(_totalNft <= 15, "10"); require( _totalNft == _uri.length, - "uri array length should be equal to _totalNFT" + "11" ); for (uint256 i = 0; i < _totalNft; i++) { safeMint(msg.sender, _uri[i], royaltiesSet); @@ -57,7 +57,7 @@ contract TokenERC721 is ERC721Enumerable, ERC721URIStorage, Ownable { } function burn(uint256 _tokenId) public { - require(msg.sender == ownerOf(_tokenId)); + require(msg.sender == ownerOf(_tokenId),"1"); _burn(_tokenId); } @@ -96,18 +96,18 @@ contract TokenERC721 is ERC721Enumerable, ERC721URIStorage, Ownable { LibShare.Share[] storage royaltiesArr, LibShare.Share[] memory royalties ) internal { - require(royalties.length <= 10); + require(royalties.length <= 10,"12"); uint256 sumRoyalties = 0; for (uint256 i = 0; i < royalties.length; i++) { require( royalties[i].account != address(0x0), - "Royalty recipient should be present" + "13" ); - require(royalties[i].value != 0, "Royalty value should be > 0"); + require(royalties[i].value != 0, "14"); royaltiesArr.push(royalties[i]); sumRoyalties += royalties[i].value; } - require(sumRoyalties < 10000, "Sum of Royalties > 100%"); + require(sumRoyalties < 10000, "15"); } // The following functions are overrides required by Solidity. diff --git a/contracts/TokenFactory.sol b/contracts/TokenFactory.sol index 917c5dd..52e9865 100644 --- a/contracts/TokenFactory.sol +++ b/contracts/TokenFactory.sol @@ -13,8 +13,8 @@ contract TokenFactory is UUPSUpgradeable, NFTBid { event ERC721Deployed(address indexed _from, address _tokenAddress); function initialize(address _address, address _feeAddress) initializer public { - require(_address != address(0)); - require(_feeAddress != address(0)); + require(_address != address(0),"16"); + require(_feeAddress != address(0),"17"); PNDCAddress = _address; __UUPSUpgradeable_init(); feeAddress = _feeAddress; diff --git a/contracts/TokenFactory1155.sol b/contracts/TokenFactory1155.sol index 1b228cd..1d1f80c 100644 --- a/contracts/TokenFactory1155.sol +++ b/contracts/TokenFactory1155.sol @@ -13,8 +13,8 @@ contract TokenFactory1155 is UUPSUpgradeable, NFTBid1155 { event ERC1155Deployed(address indexed _from, address _tokenAddress); function initialize(address _address, address _feeAddress) initializer public { - require(_address != address(0)); - require(_feeAddress != address(0)); + require(_address != address(0),"16"); + require(_feeAddress != address(0),"17"); PNDC1155Address = _address; __UUPSUpgradeable_init(); feeAddress = _feeAddress;