簡體   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