Kip17 (NFT) 전송에 대해서 문의 드립니다

안녕하세요. NFT 전송(대납 계정 이용)에 대해서 문의드립니다.

NFT의 contract address는 알고 있으며, 아래와 같이 transfer를 진행하려고 합니다.

klaytn docs의 내용을 살펴보고 있는 중입니다.

const kip17Instance = new caver.klay.KIP17(address)

kip17Instance.transferFrom(from, to, tokenId [, sendParam])

tokenId는 발행된 NFT의 index로 이해하고 있습니다.

위와 같이 instance를 통해(대납 계정을 이용하여 gas fee를 지불하고자 합니다.)
transferFrom을 구현하는데 참고할만한 내용을 부탁드립니다.

안녕하세요, 먼저 질문 해 주셔서 감사합니다. :slight_smile:

안타깝게도 현재 대납의 경우, 현재 Contract/KIP7/KIP17를 사용할 수 없습니다.

대납을 사용하려면FEE_DELEGATED_SMART_CONTRACT_EXECUTION 유형의 트랜잭션을 생성하여 네트워크로 전송해야합니다.

아래 예제 코드를 참조해 주세요.
트랜잭션을 생성 할 때 필드에 설정된 값을 호출하려는 KIP-17 토큰 컨트랙트에 맞게 수정해주세요.

const caver = new Caver('https://api.baobab.klaytn.net:8651/')

const sender = caver.klay.accounts.wallet.add('0x{private key}')
const feePayer = caver.klay.accounts.wallet.add('0x{private key}')

const contractAddress = '0x{address in hex}'
const tokenId = '4321'

const fdTransaction = {
    type: 'FEE_DELEGATED_SMART_CONTRACT_EXECUTION',
    from: sender.address,
    to: contractAddress,
    data: caver.klay.abi.encodeFunctionCall(
        {
            constant: false,
            inputs: [{ name: 'from', type: 'address' }, { name: 'to', type: 'address' }, { name: 'tokenId', type: 'uint256' }],
            name: 'transferFrom',
            outputs: [],
            payable: false,
            stateMutability: 'nonpayable',
            type: 'function',
        },
        ['0x60498fEFBF1705A3Db8d7Bb5c80D5238956343e5', '0x8723590d5D60e35f7cE0Db5C09D3938b26fF80Ae', tokenId]
    ),
    gas: 300000,
}

// Sign transaction as a sender.
const signed = await caver.klay.accounts.signTransaction(fdTransaction)
console.log(signed)

// Sign transaction as a fee payer with RLP-encoded string that includes signature of sender(signed.rawTransaction)
const feePayerSigned = await caver.klay.accounts.feePayerSignTransaction(signed.rawTransaction, feePayer.address)
console.log(feePayerSigned)

const receipt = await caver.klay.sendSignedTransaction(feePayerSigned)
console.log(receipt)
2 Likes

네, 공유주신대로 문제없이 진행했습니다.
늘 감사합니다.
:slight_smile: @Jamie