From 63051447c8eb4492c7e21f4b36c47ab52b90d2c6 Mon Sep 17 00:00:00 2001 From: zhl Date: Sun, 23 Apr 2023 11:47:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9mint=20nft=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9A=84task?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chain/BlockChain.ts | 6 +++++- src/chain/ERC721Reactor.ts | 13 +++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/chain/BlockChain.ts b/src/chain/BlockChain.ts index d3ffa3d..45cdcb9 100644 --- a/src/chain/BlockChain.ts +++ b/src/chain/BlockChain.ts @@ -80,7 +80,11 @@ export class BlockChain { break case TaskType.MINT_NFT: reqData.tokenId = reqData.tokenId || reqData.tokenid - abi = await this.erc721Reactor.mint(reqData) + if (reqData.tokenId && !reqData.amount) { + abi = await this.erc721Reactor.mint(reqData) + } else { + abi = await this.erc721Reactor.batchMint(reqData) + } break case TaskType.TRANSFER_FT: abi = await this.erc20Reactor.transfer(reqData) diff --git a/src/chain/ERC721Reactor.ts b/src/chain/ERC721Reactor.ts index b101722..550515b 100644 --- a/src/chain/ERC721Reactor.ts +++ b/src/chain/ERC721Reactor.ts @@ -340,30 +340,31 @@ export class ERC721Reactor { return contract.methods.mint(to, tokenId).encodeABI() } let gas = await contract.methods.mint(to, tokenId).estimateGas({ gas: 1000000 }) - return contract.methods.mint(to, tokenId).send({ gas: (gas * 1.1) | 0 }) + return contract.methods.mint(to, tokenId).send({ gas: gas | 0 }) } async batchMint({ account, address, to, - tokenIds, + count, encodeABI = false, }: { account?: string address?: string to: string - tokenIds: string[] + count: number encodeABI?: boolean }) { const contract = address ? new this.web3.eth.Contract(abiNft, address, { from: account || this.account.address }) : this.contract - // let gas = await contract.methods.batchMint(to, tokenIds, configIds).estimateGas({ gas: 1000000 }) + const countStr = count + '' if (encodeABI) { - return contract.methods.batchMint(to, tokenIds).encodeABI() + return contract.methods.batchMint(to, countStr).encodeABI() } - return contract.methods.batchMint(to, tokenIds).send({ gas: 1000000 }) + let gas = await contract.methods.batchMint(to, countStr).estimateGas({ from: account || this.account.address }) + return contract.methods.batchMint(to, countStr).send({ gas: gas | 0 }) } async getPastEvents({ address, fromBlock }: { address?: string; fromBlock: number }) {