Solidity

在合約部署之前包含數據

  • April 8, 2022

我正在創建一個升級的 ERC20 代幣,我想將過去的所有者 (1,000+) 持有量包括為可申請的金額。

將這些數據納入契約的最合適方式是什麼?

  1. 有沒有辦法在合約初始化期間插入它?
  2. 我是否應該創建一個在契約創建後呼叫的可變函式
  3. 我應該使用某種鍊鍊接從 IPFS 讀取嗎?

任何幫助/指導將不勝感激。

有幾種選擇:

  1. 自己遷移所有數據。會很貴。
  2. 鏈上個人遷移,需要對舊合約進行某種控制,因此沒有人可以多次遷移相同的代幣,
  3. 鏈下遷移、準備快照並使用 merkle 樹來獲取代幣,uniswap 為他們的空投做了類似的事情。

最簡單的方法 IMO:

  1. 部署升級後的 ERC20,仍然允許使用 mint 和可擁有的模組。
  2. 部署一個合約來檢查balanceOf你之前部署的 ERC20,然後將之前的 ERC20 代幣燒掉或者轉移到一個特定的地址(推薦零地址)。然後將升級後的 ERC20 中的等量代幣鑄造到該使用者錢包中。

這對您來說相對便宜,同時確保所有相關方都獲得他們的代幣。另外,您還可以對索賠設置時間限制,以便在您的清單中完成該過程。索賠完成後,您可以撤銷索賠契約的管理員訪問權限並一勞永逸地停止鑄幣廠(如果這是您在升級版 ERC20 中想要的)。

我不建議在升級後的 ERC20 本身中添加聲明部分,因為聲明完成後將無法使用。

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