Solidity
在合約部署之前包含數據
我正在創建一個升級的 ERC20 代幣,我想將過去的所有者 (1,000+) 持有量包括為可申請的金額。
將這些數據納入契約的最合適方式是什麼?
- 有沒有辦法在合約初始化期間插入它?
- 我是否應該創建一個在契約創建後呼叫的可變函式
- 我應該使用某種鍊鍊接從 IPFS 讀取嗎?
任何幫助/指導將不勝感激。
有幾種選擇:
- 自己遷移所有數據。會很貴。
- 鏈上個人遷移,需要對舊合約進行某種控制,因此沒有人可以多次遷移相同的代幣,
- 鏈下遷移、準備快照並使用 merkle 樹來獲取代幣,uniswap 為他們的空投做了類似的事情。
最簡單的方法 IMO:
- 部署升級後的 ERC20,仍然允許使用 mint 和可擁有的模組。
- 部署一個合約來檢查
balanceOf
你之前部署的 ERC20,然後將之前的 ERC20 代幣燒掉或者轉移到一個特定的地址(推薦零地址)。然後將升級後的 ERC20 中的等量代幣鑄造到該使用者錢包中。這對您來說相對便宜,同時確保所有相關方都獲得他們的代幣。另外,您還可以對索賠設置時間限制,以便在您的清單中完成該過程。索賠完成後,您可以撤銷索賠契約的管理員訪問權限並一勞永逸地停止鑄幣廠(如果這是您在升級版 ERC20 中想要的)。
我不建議在升級後的 ERC20 本身中添加聲明部分,因為聲明完成後將無法使用。