ERC20用于单个合同中的多个令牌

时间:2017-03-14 19:33:03

标签: ethereum solidity

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

2 个答案:

答案 0 :(得分:2)

如果你考虑一个ERC 20令牌的结构:https://github.com/ConsenSys/Tokens/blob/master/Token_Contracts/contracts/Token.sol,你会看到你提出的建议虽然可能,但会有点混乱。但更重要的是,会将您的令牌合同转换为非ERC20令牌

uint256 public totalSupply;需要替换为映射或两个单独的参数。

管理余额也是如此,您需要更改每个方法的签名,以获取指定所需令牌的附加参数,或为合同中的每个令牌创建特定方法:

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

需要成为:

$(document).ready(function (){ // read value and set value of totalAmount to hiddentotal; var hiddenTotal = $("#hiddenTotal").val() || 0; //use the hiddenTotal value or if not present set 0 as the default value $(".totalAmount").val(hiddentotal) }

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

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

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

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

答案 1 :(得分:0)

如今,ERC1155是一种“多令牌”标准,对于需要多个令牌的合同来说似乎是一个不错的选择:

DataDog APM

简单摘要:

用于管理多种令牌类型的合同的标准接口。一种 单个已部署合同可以包括可互换的任何组合 令牌,不可替代的令牌或其他配置(例如 半替代令牌)。

另请参阅https://github.com/ethereum/EIPs/issues/1155