Contract-Design

使眾籌可重複使用?

  • June 19, 2019

我有一個非常標準的 OpenZeppelin crowdsale。現在的問題是,我希望能夠將一份眾籌合約與多個(約 100 個)不同的 ERC20 代幣一起使用。

理想情況下,我想將眾售合約放在鏈上,然後在接下來的幾個月內將 ERC20 代幣添加到其中。我不想為每個代幣發布新的眾籌合約,因為它會很昂貴。

有沒有辦法將 Crowdsale 合約轉換為可以處理多個代幣的合約?是否已經存在?

這聽起來像是現在最終確定的ERC-1155 代幣標準的完美案例,它允許在單個合約中管理任意數量的可替代和不可替代的代幣。

您可以使用幾種不同的方法。

如果您想保持 Open Zeppelin 合約的原始狀態,您可以考慮為每個唯一令牌部署一個。該過程本身可以通過契約工廠模式進行管理。工廠將關注配置眾籌實例並跟踪它們。

另一種方法是重構眾籌合約,使每個外部函式(以及大多數內部函式)都接受合約地址參數。我強烈建議驗證輸入,以便只接受已知的代幣合約,這意味著使用添加代幣合約地址的功能對其進行擴展。

ERC-1155 多令牌是另一種選擇。它在很多方面都可以說是優越的,但它是以放棄 ERC-20 向後兼容性為代價的,因此使你迄今為止擁有的眾籌合約的代幣無效。這樣做也可能會引起對錢包和交易所兼容性的一些擔憂。

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/64702