首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据与safeTransferFrom方法一起发送到onERC721Received函数

将数据与safeTransferFrom方法一起发送到onERC721Received函数
EN

Ethereum用户
提问于 2021-12-08 18:53:21
回答 1查看 334关注 0票数 1

我的目标是在调用loanDuration safeTransferFrom方法时向onERC721Received函数发送一个ERC721 (例如,1天、2天)值。

代码语言:javascript
复制
function onERC721Received(
         address,
        address from,
        uint256 tokenId,
        bytes calldata
    )
        external
        override
        returns(bytes4)
    {
        uint256 loanId = uint256(keccak256(abi.encode(address(msg.sender), tokenId)));
        loans[loanId] = Loan({
            _tokenContract: ERC721(msg.sender),
            tokenId: tokenId,
            borrower: from,
            loanValue: 0,
            loanDuration: calldata,
            repayable: false
        });
        lend(from, msg.sender, tokenId);
        return 0x150b7a02;
    }

但是,当我在我的贷款结构中包括loanDuration: calldata时,我会得到以下错误:

ParserError: Expected primary expression.

有什么好主意吗?

EN

回答 1

Ethereum用户

发布于 2022-03-24 00:46:37

这是因为calldata不是一个参数名,而是一个Solidity关键字。要读取上一个参数中的loanDuration,需要给它命名。例如,bytes calldata duration。然后,您需要阅读,比方说,uint256bytesloanDuration: abi.decode(data, (uint256))。当然,这取决于data参数中的数据编码方式。见ABI编解码功能

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/115238

复制
相关文章

相似问题

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