繁体   English   中英

如何通过 solidity 回退 function 获取发送到智能合约的代币数量

[英]How to get the amount of token sent to a smart contract via the fallback function in solidity

假设我有一个代币 A 和一个智能合约 B。用户通过他的钱包直接转账将一定数量的 A 发送到合约 B。 在智能合约 B 的回退 function 中,我将如何获得发送的代币 A 的数量?

msg.value 没有给我任何东西,因为发送的不是 Eth。

当您的合约收到 ERC-20 代币时,不会调用fallback() function - 也不会调用任何其他 function。这意味着,您的合约不会收到有关传入 ERC-20 转账的通知,除非您使用transferFrom()提取它们。

contract YourContract {
    function pullTokens() external {
        // need to have prior approval
        tokenContract.transferFrom(msg.sender, address(this), amount);
    }
}

注意:其他一些可替代代币标准为接收者合约定义了这些通知功能——例如ERC-777及其 function tokensReceived()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM