Hardhat

使用前端應用程序開發/測試與時間相關的功能的最佳方式

  • October 11, 2022

我正在尋找一種解決方案,以便在項目開始後的幾個月內方便地測試應用程序的外觀。

即 - 假設在項目中我們將定期部署將在 30 天內到期的契約。到期日期將可供使用者閱讀等。

FE 應用程序應該獲取活躍的合約並檢查剩餘的時間。它還應該獲取過期的合約,並顯示它們過期後經過了多長時間。

我知道在安全帽中我可以使用“TimeTraveler”來模擬時間流逝。但瀏覽器將繼續使用實時。這會導致時間計算出現問題,並且在與區塊鏈互動時需要設置巨大的交易截止日期。

Firefox 或 Chrome 的 devTools 中是否有外掛或選項可以將目前日期更改為未來 3 個月?

或者也許有一種方法可以在幾個月前啟動 hardhat-blockchain,執行一些腳本,然後使用 TimeTraveler 移動到目前時間?

合約必須從瀏覽器獲取時間作為輸入。因此,您可以手動發送測試時間和所需的班次。

我想您也可以更改瀏覽器時間參考。

您可以使用 block.timestamp。

將 block.timestamp 保存在建構子的 initialTimeStamp 公共變數中。還要在建構子中設置 activePeriodInSeconds。在每次通話之前,您應該檢查

Require(block.timestamp > (initialTimeStamp + activePeriodInSeconds))

這將使您的合約在預定義的秒數過去後失效。

在 UI 中,當您獲得 initialTimeStamp 和 activePeriodInSeconds 時,您可以計算任何時區所需的任何時間。

時間戳是一個 uint 數字。您可以將其轉換為使用者可以理解的實際時間。看看:https ://www.unixtimestamp.com/

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