안녕하세요. KIP17 NFT를 클레이튼과 커스텀 토큰(KIP7)으로 Minting을 하려고 합니다.
현재 KIP17 컨트랙트에서 KIP7컨트랙트를 불러와 커스텀 함수로 transfer하고있습니다.
KIP7토큰은 토큰 발행 지갑으로 전송됩니다.
function MintNFT(uint256 amount) external payable nonReentrant canSale(amount) {
(bool success, ) = treasury.call.value(msg.value)("");
require(success, "Fail to send value.");
for (uint256 i=0; i<amount; i++) {
_tokenId.increment();
uint256 newTokenId = _tokenId.current();
_mint(msg.sender, newTokenId);
_setTokenURI(newTokenId, _tokenBaseURI);
}
// KIP7 컨트랙트의 함수입니다.
transferFromNft(msg.sender, tokenOwnerAddress, amount);
salesMintedQty += amount;
}
// 프론트 코드 입니다
const transactionInput = myContract.methods.mintNFT(totalCustomToken).encodeABI();
caver.klay.sendTransaction({
from: address,
to: process.env.NFT_CONTRACT_ADDRESS,
input: transactionInput,
value: caver.utils.toPeb(`${totalKlay}`, 'KLAY'),
gas: '8500000',
})
이런식으로 구현하는게 맞을까요??
아니면 유저에게 먼저 approve를 받은 후에 token.transferFrom으로 토큰을 토큰 오너에게 전달해 줘야하나요?
이경우 트젝을 두번 해야하는데 고민입니다.