0

如何在调用合约功能之前签入代码(在 Solidity 端或/和 Web3 端),此功能是否支付?

例如,我今天在代币 EURS 中发现了这个

function transfer (address _to, uint256 _value)
public payable returns (bool success);

这不是标准的 erc20 传输功能作为应付!!!如果用户使用 EURS 令牌,这不是标准逻辑在我的应用程序中制造错误。

这是标准

function transfer(address to, uint tokens) public returns (bool 
success);

所以我需要或覆盖这在我的应用程序合同方面没有标准转移,或者在最坏的情况下在前端禁止此类令牌。

4

2 回答 2

0

要在一行中回答您的问题-:

任何标记为应付的功能都可以被认为是接收以太币。

function testPayable() external payable {...}

上述功能是应付的,因此可以接收。

但是不要误会payable关键字仅用于接收以太币而不是ERC20代币。

因此,在您的情况下,据我所知,转移功能被标记为应付,如果它是 ERC20 代币,则不应如此。

对我来说有些东西听起来很可疑,不是吗?

于 2019-05-01T10:26:07.667 回答
0

一句话:在不知道abi / interface的情况下,无法从外部或从内部检查功能是否应支付。

什么是应付?

  • Payable的工作方式与modifierSolidity 中的任何其他工作一样。它在执行它所应用的功能之前运行。
  • Payable 需要接收以太币。如果您将交易中的以太币发送到非支付函数,则交易将被还原。
于 2019-05-05T19:40:15.507 回答