Solidity

Solidity:有沒有辦法獲取已執行事務的時間戳?

  • September 8, 2021

有沒有辦法讓合約能夠獲得有人在其中呼叫函式的確切時間?

例如,如果有人向合約地址發送資金,是否有區塊鏈記錄的時間戳可以給出該交易的接收時間?

如果是這樣,我將如何在 Solidity 中獲得該值,並且該交易的時間戳在發送後是否可以由使用者以任何方式修改?

交易沒有時間戳。但是,每個塊都提供了一個時間戳(當它被收集時),但如果時間對您來說很關鍵,請不要參考這個timestamp,因為礦工可以將它修改大約 900 秒,您可以改用block.number.

1- 現在返回目前塊時間戳:

例如

contract Test {
   function Time_call() returns (uint256){
       return now;
   }
}

Time_call 將返回類似:1478431966(您可以在http://www.unixtimestamp.com/中將其轉換為可讀形式)

2- 使用 block.number 返回塊號

function Time_call() returns (uint256){
       return block.number; 
   }

要獲得通話時間,您可以使用 block.number 和塊時間(平均值)

編輯:如果您希望何時發送交易,請在您的 Dapp 中使用 javascript 來獲取目前時間var seconds = new Date().getTime() / 1000;並將其發送到您的交易的數據欄位中。

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