首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >差分ERC20 / ERC223 / ERC677令牌

差分ERC20 / ERC223 / ERC677令牌
EN

Ethereum用户
提问于 2018-05-12 02:26:34
回答 2查看 1.6K关注 0票数 1

真的很介意写博客!

当我创建一个新的合同时,我很难检查我正在处理的令牌的哪个版本。

我如何容易地告诉令牌,我需要传输的是ERC20、ERC223或ERC677?(除721名外)

(我知道,与223相比,677更适合向下兼容20 )

在我看来,所有这些迟早都会失控,除非我们在契约中实现一个简单的字段来判断这个令牌是哪个版本。

示例:

代码语言:javascript
复制
string public tokenSpec;

function MyToken() public {
    tokenSpec = "ERC223";
}
EN

回答 2

Ethereum用户

发布于 2018-05-12 08:26:49

Ethereum有一种机制-- ERC165 --允许联系人报告它们实现的接口。不幸的是,它似乎还没有被令牌契约广泛使用。目前还没有安全的方法同时处理这三种令牌(这很讽刺,因为较新的变体是为了提高安全性),所以您最好的选择是为每种令牌类型设置单独的代码(最好确保您的UI知道您将要处理的所有令牌的类型,这样您的用户就不会弄错它),或者选择一个可以安全处理的子集(比如ERC-20和ERC-677),并且只支持这一点。

票数 1
EN

Ethereum用户

发布于 2018-05-12 06:53:54

我认为,一个优秀的开发人员可以通过注释或构造函数来说明用于特定令牌(例如来自Guaranteed Entrance Token (GET) )的协议,当通过EtherScan.io查看合同的代码时,我发现这是前12行代码。

代码语言:javascript
复制
/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) constant returns (uint256);
  function transfer(address to, uint256 value) returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

从我以类似方式审查过的令牌中,我发现没有什么偏差,但最终我同意应该有一个字段来说明令牌协议,但不确定在所有项目中一致这样做有多现实。

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

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

复制
相关文章

相似问题

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