【问题标题】:Binance Smart Chain safeTransferFrom function with transfer comments not workingBinance Smart Chain safeTransferFrom 功能与转账评论不起作用
【发布时间】:2021-09-22 14:51:57
【问题描述】:

我已在 BSC 的测试网上成功部署并验证了 ERC721 智能合约。还成功铸造并授予了新的 ERC721 代币。接下来是在钱包之间转移代币。到目前为止一切顺利,除了我想在转帐交易中添加转帐 cmets。

我的合约支持标准的 safeTransferFrom(senderWaller, receiverWallet, tokenId, data) 函数,并且我可以看到正在发送的数据(即 - 转账评论)。但是当我在 BSC 测试网浏览器中查看成功的交易时,它并没有出现。

这是一个示例交易 --> https://testnet.bscscan.com/tx/0x1f3bf69da66cff66bbeeb6ce6f7505be8a78729685162811cb29c9dc30a347d6。在 BSC 测试网浏览器中解码数据,我可以看到十六进制形式的尾随数据,当我将其转换回时,它会转换回可读文本。请参阅下面以 205363... 开头的尾随值。这是十六进制转换回预期文本值的屏幕截图。

Function: safeTransferFrom(address from, address to, uint256 tokenId, bytes _data)

MethodID: 0xb88d4fde
[0]:  0000000000000000000000008175f3b00af0b775136b918a78298aaf4e1ea137
[1]:  000000000000000000000000ba3662af7c0cecd20cd97ef8072c30f4449b16b1
[2]:  0000000000000000000000000000000000000000000000000000000000000005
[3]:  0000000000000000000000000000000000000000000000000000000000000080
[4]:  0000000000000000000000000000000000000000000000000000000000000020
[5]:  5363686564756c656420736572766963696e6700000000000000000000000000

这是我用来编码 web3 方法调用的代码。

const soygaToken = new web3.eth.Contract(soygaABI, contractAddress);
var byteComments = Buffer.from(comments.padEnd(32, "\0"), 'utf-8');
var myData = soygaToken.methods.safeTransferFrom(senderAddress, recipientAddress, tokenId, byteComments).encodeABI();

当我查看 BSC 测试网浏览器时,关于是什么导致交易中缺少这些数据的任何想法?查看 ERC721 规范 (https://ethereum.org/en/developers/docs/standards/tokens/erc-721/) 数据参数应该是一个 32 字节的值。看来我正在传递。

【问题讨论】:

    标签: node.js ethereum web3


    【解决方案1】:

    从核心 Nethereum 开发人员那里得到了反馈。他验证了用户数据是否存在,但这可能只是 Etherscan Web 客户端未对其进行解码的问题。所以用户数据应该是可访问的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-08
      • 2021-08-03
      • 2022-10-21
      • 2013-07-10
      • 2021-07-23
      • 1970-01-01
      相关资源
      最近更新 更多