首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定合同符合ERC20?

如何确定合同符合ERC20?
EN

Ethereum用户
提问于 2018-04-12 05:53:03
回答 2查看 1.9K关注 0票数 0

如何准确地确定合同是否符合ERC20,以及由谁来决定?在阅读了我是否必须将ERC20 20签名作为单独的契约来实现,并使用继承?和一些googling之后,我有了一些想法。

1)谁决定合同是否符合ERC20?仅仅是那个想用它的人(交换,钱包,.)?

2)如何确定合同是否符合ERC20?我目前的理解是,您所需要的只是拥有正确的函数签名(正确的函数散列)。因此,它不一定要从ERC20接口继承(实现)。对吗?

3)如果第二个问题的答案是“是”,那么可以在某些函数中添加例如payable修饰符(正如我所理解的,它不会更改函数的哈希)吗?

如果问题2和问题3的回答是“是”,那么以下是ERC20标准的有效实现(假设其他功能也已实现):

代码语言:javascript
复制
contract A {
  ...
  function transfer(address to, uint tokens) public payable returns (bool success) {
    ...
  }
  ...
}
EN

回答 2

Ethereum用户

回答已采纳

发布于 2018-04-13 16:50:01

在构思ERC20 (*)时,没有确定合同是否支持接口的标准。

一些块探索者和钱包可以进行验证,例如,对于ERC20合同,他们可以验证公共函数是否可用,并返回有用的东西,如symbolnamedecimals等。

支持合同验证的块资源管理器可以检查ABI是否还有其他方法,如transferapprove等。

这显然是不够的,总是抛出、返回false或0(取决于函数)的契约仍然可以符合EIP20 20标准

(*)现在有了EIP 165,它允许查询协议中支持的接口。

票数 1
EN

Ethereum用户

发布于 2019-06-18 23:10:34

若要添加有关此问题的进一步信息,需要检查是否发出了适当的事件。

看ABI:https://api.etherscan.io/api?module=contract&action=getabi&address=0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d

ABI没有显示emit的泰德事件。

所以我认为需要人工处理。

请注意,一些流行的pre 20类令牌,如Binance (预交换)和Golem并不完全是ERC20。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/45431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档