首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法使用@hashgraph/sdk hedera传输NFT。如何在构建方法中使用@hashgraph/sdk来传输nft?

我无法使用@hashgraph/sdk hedera传输NFT。如何在构建方法中使用@hashgraph/sdk来传输nft?
EN

Stack Overflow用户
提问于 2022-09-15 08:15:14
回答 1查看 80关注 0票数 0

我无法使用@hashgraph/SDK hedera传输NFT。如何使用@哈希图/SDK的内置方法传输nft?

另外,Nft已经与卖方帐户相关联。

此外,我正在传输令牌,这是在hashpack nft部分可用的。

在调用TransferTransaction方法@hashgraph/sdk@2.17.1时,我会得到以下错误。代码:

代码语言:javascript
复制
  const TransferNft = async (tokenId, sellerAccount, sellerId, buyerAccount, buyerId) => {
  try {
    const client = await getClient();

    tokenId = TokenId.fromString(tokenId);

    let sellerKey = await getPrivateKey(sellerId);
    sellerKey = PrivateKey.fromString(sellerKey);

    let buyerKey = await getPrivateKey(buyerId);
    buyerKey = PrivateKey.fromString(buyerKey);

    // 2nd NFT TRANSFER NFT Alice->Bob
    let tokenTransferTx2 = await new TransferTransaction()
      .addNftTransfer(tokenId, 2, sellerAccount, buyerAccount)
      .addHbarTransfer(sellerAccount, Hbar.fromTinybars(100))
      .addHbarTransfer(buyerAccount, Hbar.fromTinybars(-100))
      .freezeWith(client)
      .sign(sellerKey);
    let tokenTransferTx2Sign = await tokenTransferTx2.sign(buyerKey);
    let tokenTransferSubmit2 = await tokenTransferTx2Sign.execute(client);
    let tokenTransferRx2 = await tokenTransferSubmit2.getReceipt(client);
    console.log(`\n NFT transfer Alice->Bob status: ${tokenTransferRx2.status} \n`);

    return tokenTransferRx2.status;
  } catch (error) {
    console.log('Error in HederaToken/TransferNft/TransferNft: \n', error)
  }
};

事务0.40217130@1663228521.315536859的

收据包含错误状态TOKEN_NOT_ASSOCIATED_TO_ACCOUNT

错误:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-15 12:43:03

在不属于HTS令牌的帐户接收或发送特定令牌ID之前,它们必须与令牌“关联”--这有助于减少来自不希望与Hedera网络上创建的任意令牌相关联的用户的垃圾邮件和其他关注。

帐户和令牌ID之间的这种关联可以通过手动或自动两种方式完成。请注意,可以对现有帐户和新创建的帐户进行自动关联。

下面是通过帐户更新对现有帐户进行自动关联的方法:

代码语言:javascript
复制
 // AUTO-ASSOCIATION FOR ALICE'S ACCOUNT
    let associateTx = await new AccountUpdateTransaction()
        .setAccountId(aliceId)
        .setMaxAutomaticTokenAssociations(100)
        .freezeWith(client)
        .sign(aliceKey);
    let associateTxSubmit = await associateTx.execute(client);
    let associateRx = await associateTxSubmit.getReceipt(client);
    console.log(`Alice NFT Auto-Association: ${associateRx.status} \n`);

下面是如何对现有帐户进行手动关联:

代码语言:javascript
复制
// MANUAL ASSOCIATION FOR BOB'S ACCOUNT
let associateBobTx = await new TokenAssociateTransaction()
    .setAccountId(bobId)
    .setTokenIds([tokenId])
    .freezeWith(client)
    .sign(bobKey);
let associateBobTxSubmit = await associateBobTx.execute(client);
let associateBobRx = await associateBobTxSubmit.getReceipt(client);
console.log(`Bob NFT Manual Association: ${associateBobRx.status} \n`);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73727734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档