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

안녕하세요, 먼저 질문 해 주셔서 감사합니다. :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개의 좋아요