0

是否有 ERC/IERC20 功能或实用程序可确保收到的付款以特定令牌计价?

receive() external payable virtual {
    
    IERC20 token = IERC20(address(0x123...789));
    
    require(
    paymentToken == MYtoken,
    "Payment Must be MY token"
    );
    emit PaymentReceived(_msgSender(), msg.value);
4

1 回答 1

2

receive()功能是让你的合约接受 ETH。或者通常 -部署合约的网络的原生代币(BSC 网络上的 BNB,Tron 网络上的 TRX,......)。

但是如果你的合约地址收到一个标准的ERC-20 代币,它就不会以任何方式得到通知。

除了代币合约专门调用接收方以让他们知道转移的情况(例如在EIP-777 tokensReceived()挂钩中定义的情况)。但是这个钩子首先需要在代币合约中定义,这样你就可以在你的接收者合约中使用它。如果它不在代币合约中,那么您的合约将无法直接收到收到代币的通知。

于 2021-11-10T10:08:48.980 回答