From 6621b926b460d820e6c01d69c13053259a80e5f3 Mon Sep 17 00:00:00 2001 From: CounterFire2023 <136581895+CounterFire2023@users.noreply.github.com> Date: Tue, 18 Jun 2024 17:31:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3supportNftList=E6=9C=AA?= =?UTF-8?q?=E7=94=9F=E6=95=88=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contracts/game/NFTLock.sol | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contracts/game/NFTLock.sol b/contracts/game/NFTLock.sol index 0cafe7f..7469497 100644 --- a/contracts/game/NFTLock.sol +++ b/contracts/game/NFTLock.sol @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import {ERC721Holder} from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; @@ -39,11 +38,12 @@ contract NFTLock is ERC721Holder, HasSignature, TimeChecker, Pausable { function lock(address nft, uint256[] calldata tokenIds) external whenNotPaused{ require(tokenIds.length <= 100, "tokenIds too many"); + require(supportNftList[nft], "not support nft"); address to = _msgSender(); for (uint256 i = 0; i < tokenIds.length; i++) { - INFT(nft).transferFrom(to, address(this), tokenIds[i]); lockedOriginal[nft][tokenIds[i]] = to; lockedRecords[nft][to].add(tokenIds[i]); + INFT(nft).transferFrom(to, address(this), tokenIds[i]); } emit Lock(nft, to, tokenIds); } @@ -63,17 +63,17 @@ contract NFTLock is ERC721Holder, HasSignature, TimeChecker, Pausable { address to = _msgSender(); bytes32 messageHash = getMessageHash(to, nft, nftList, _CACHED_THIS, _CACHED_CHAIN_ID, signTime, saltNonce); checkSigner(verifier, messageHash, signature); + _useSignature(signature); for (uint256 i = 0; i < nftList.length; i++) { if (nftList[i].isMint) { INFT(nft).mint(to, nftList[i].tokenId); } else { require(lockedOriginal[nft][nftList[i].tokenId] == to, "not owner"); - INFT(nft).transferFrom(address(this), to, nftList[i].tokenId); - lockedRecords[nft][to].remove(nftList[i].tokenId); delete lockedOriginal[nft][nftList[i].tokenId]; + lockedRecords[nft][to].remove(nftList[i].tokenId); + INFT(nft).transferFrom(address(this), to, nftList[i].tokenId); } } - _useSignature(signature); emit UnLock(nft, to, saltNonce, nftList); }