# Kip17(nft)를 타인에게 팔기위한 로직 구성을 하고 있습니다

**URL:** https://devforum.kaia.io/t/kip17-nft/4275
**Category:** Kaia
**Tags:** caver-js, smart-contract, klaytn
**Created:** [3월 10, 2022, 12:50오전 UTC](https://devforum.kaia.io/t/kip17-nft/4275 "2022-03-10T00:50:23Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![sgd122](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/sgd122/32/2096_2.png) [@sgd122](https://devforum.kaia.io/u/sgd122)
#### Post date: [3월 10, 2022, 12:50오전 UTC](https://devforum.kaia.io/t/kip17-nft/4275/1 "2022-03-10T00:50:23Z")

</div>

NFT 발행(kip17)후 소유권을 가지고 있는 'A’가 'B’에게 일정 'klay’를 받고 소유권을 transfer 하려고 합니다.  
아래와 같이 함수를 구성하여 `value: caverKaikas.utils.toPeb('10', 'KLAY'),` 를 통해서 10 클레이 라는 금액을 산정하는 형태로 만들었는데, 이게 맞는건가요?  
만약 맞다면, 아래 로직대로 10 클레이를 구성해서 보낼 경우 [Fail : ErrExecutionReverted - uint(0x09)](https://baobab.scope.klaytn.com/tx/0x4e39f33a931d11a390d18f13b04b0d10e27f12bcf0d747d633e9bda7171cba67?tabId=internalTx) 에러가 발생하더라구요.  
클레이를 0으로 잡으면 에러가 발생하지 않았습니다.

만약 이 방식이 아니라면, 어떠한 방식으로 구성할 수 있을까요?

```javascript
export const sendKaikas = async (
  from_address: string,
  to_address: string,
  tokenId: number | string,
  contractAddress: string
) => {
  // ANCHOR: NFT 전송
  const data = caverKaikas.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',
    },
    [from_address, to_address, caverKaikas.utils.toBN(tokenId).toString()]
  );
  const txData = {
    type: 'FEE_DELEGATED_SMART_CONTRACT_EXECUTION',
    from: from_address,
    to: contractAddress,
    gas: 1000000,
    value: caverKaikas.utils.toPeb('10', 'KLAY'),
    data,
  };

  const signed: any = await caverKaikas.klay.signTransaction(txData);

  // NOTE: KAS에서 수수료 대납
  var r =
    await caverExtKas.kas.wallet.requestFDRawTransactionPaidByGlobalFeePayer({
      rlp: signed.rawTransaction,
      submit: true,
    });

  console.log('r', r);

  // ErrExecutionReverted - uint(0x09)
  return r?.status ?? false;
};

```

---

<div class="post-metadata">

### Author: ![lorance.call](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/lorance.call/32/1653_2.png) [@lorance.call](https://devforum.kaia.io/u/lorance.call)
#### Post date: [3월 11, 2022, 11:42오후 UTC](https://devforum.kaia.io/t/kip17-nft/4275/2 "2022-03-11T23:42:07Z")

</div>

해당 transferFrom 메소드는 payable 이 아니기때문에 직접 value를 입력하실 수 없습니다.  
별도의 minter contract를 solidity로 작성하셔서 진행하는 것을 권장드립니다.
