blockchain - 如何检查功能是否支付?
问题描述
如何在调用合约功能之前签入代码(在 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);
所以我需要或覆盖这在我的应用程序合同方面没有标准转移,或者在最坏的情况下在前端禁止此类令牌。
解决方案
要在一行中回答您的问题-:
任何标记为应付的功能都可以被认为是接收以太币。
function testPayable() external payable {...}
上述功能是应付的,因此可以接收。
但是不要误会payable关键字仅用于接收以太币而不是ERC20代币。
因此,在您的情况下,据我所知,转移功能被标记为应付,如果它是 ERC20 代币,则不应如此。
对我来说有些东西听起来很可疑,不是吗?
推荐阅读
- node.js - EC2 runInstances 函数不接受 SourceDestCheck 选项
- javascript - 当我删除一个矩形时,我怎样才能删除它的字母
- security - 将文件描述符“泄露”给客户端的安全隐患
- dialogflow-es - 如何将变量/未知参数注入意图?
- javascript - 同一类div的多个倒计时
- c - 在 C 中使用带有单独输入缓冲区的 snprintf()
- c++ - boost::unique_lock 析构函数错误,状态已损坏
- tabulator - 从 Tabulator JSON 下载中排除已删除的列
- node.js - NodeJS返回JSON,但不能正确地返回客户端
- rust - 运行当前目录之外的 Rust 程序