Timestamp
你如何在乙太坊平台上使用日期和時間
有沒有辦法像在 JS 中一樣可靠地訪問 Date 對象?如果是這樣,將可靠性稱為確定性不是錯誤的嗎?所以我想如果它這麼叫,你不能。所以問題是——你如何處理時間?PS我會很感激程式碼片段)
當一個事務被執行時,它是在作為一個塊的一部分的上下文中完成的。該塊包含一個時間戳(以 1970 年以來的秒數為單位),您的合約程式碼可以通過 name 引用該時間戳
block.timestamp
。時間戳是由探勘該區塊的礦工設置的,沒有人能確定他們是在什麼時間真正開采的,所以它可能並不完全準確。但是,它必須晚於前一個區塊,並且其他礦工傾向於拒絕未來設定的時間,因此可以在合理的公差範圍內依賴它。
由於網路對每筆交易的驗證不是驗證點的目前時間,而是探勘區塊的礦工聲明的時間,因此結果是確定性的。
JavaScript 日期對像還提供諸如獲取星期幾或一年中的月份之類的功能。這些不是 EVM 本身提供的,但您可以編寫或使用庫來幫助您處理它們。通常,合約只處理時間戳是可行的,而應用程序(通常由與乙太坊合約互動的 HTML/JavaScript 頁面組成)使用 JavaScript 函式對其進行格式化,然後顯示給使用者。