繁体   English   中英

单个合约中多个代币的 ERC20

[英]ERC20 for Multiple Tokens in a single contract

我正在尝试制定一份合同,其中包含用于合同不同方面的两种不同代币。 我希望这两个令牌都能够符合 ERC20 标准,但我不确定如何为每个令牌指定唯一的变量和函数。

如果您考虑 ERC 20 代币的结构: https : //github.com/ConsenSys/Tokens/blob/master/Token_Contracts/contracts/Token.sol ,您将看到您所提议的,尽管可能,将是一个有点乱。 但更重要的是,它会将您的代币合约转换为非 ERC20 代币

uint256 公共总供应量; 需要用映射或两个单独的参数替换。

管理余额也是如此,您需要更改每个方法的签名以采用附加参数来指定您想要的代币或为合约中的每个代币创建特定方法:

函数 balanceOf(address _owner) 常量返回 (uint256 balance);

需要是:

function balanceOf(address _owner, uint256 token_id) constant returns (uint256 balance);

或者

function balanceOfTokenA(address _owner) constant returns (uint256 balance);

function balanceOfTokenB(address _owner) constant returns (uint256 balance);

但就像我说的,任何一种实现都会使您的代币合约成为非 ERC20 代币。


你最好有两个合约,然后两者都兼容 ERC20。 如果您的要求是它们需要通过单个合同进行接口,那么您可以编写第三个合同来管理它们。

如今,“多代币”标准 ERC1155 似乎是需要多个代币的合约的不错选择:

https://github.com/ethereum/EIPs/issues/1155

简单总结:

管理多种代币类型的合约的标准接口。 单个部署的合约可以包括可替代代币、不可替代代币或其他配置(例如半可替代代币)的任意组合。

另请参阅openzeppelin 实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM