如何检查功能是否应付款?

时间:2019-05-01 02:31:42

标签: blockchain ethereum solidity web3 erc20

如何在调用合同功能之前签入代码(在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);

因此,我需要或重写这不是我的应用程序合同方面的标准转让,或者在最坏的情况下,请在前端方面禁止此类令牌。

2 个答案:

答案 0 :(得分:0)

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

任何标记为应付功能都可以视为接收以太币。

function testPayable() external payable {...}

上述功能是有偿的,因此可以接收。

但请不要误解 payable 关键字仅用于接收以太币,而不用于接收ERC20令牌。

因此,就您的情况而言,据我所知,转移功能被标记为应付款,如果它是ERC20代币,则情况并非如此。

对我来说听起来有些可疑,对您来说不是吗?

答案 1 :(得分:0)

一行:在不知道 abi /界面的情况下,无法从外部或从内部检查功能是否应付款。

应付什么?

  • 应付帐款的工作方式与Solidity中的其他任何 modifier 类似。它会在执行要应用的功能之前运行。
  • 需要支付以接收以太币。如果您在交易中将以太币发送给不可支付的功能,则交易将被还原。