Contract-Development

獲取合約變數的最新更新時間戳

  • August 1, 2017

是否可以在不保留交易雜湊的情況下獲得合約變數的最新更新時間,

contract Demo{
uint numb;

 function setNumb(uint var1){
   numb=var1
 }
}

在上面的契約中,每當使用setNumb(uint)更新numb時,事務就會被觸發並保存在某個塊中,如果我想知道儲存事務的塊的時間戳,我可以使用 Transaction 雜湊和輕鬆獲取區塊時間戳,

但是如果我不知道交易雜湊怎麼辦

是否可以獲得更新numb的最新交易時間(即塊時間戳),有沒有辦法獲得儲存與numb相關的交易的塊/塊

是的,這是一個包含 2 種方式的範例:使用事件和狀態變數。根據更適合案例的方式,可以使用一種或兩種方式。

contract Demo {
 uint _var;
 uint public _lastTimeVarWritten;

 event LogLastTimeVarWritten(uint timestamp);

 function setVar(uint var1){
   _var=var1;
   _lastTimeVarWritten = block.timestamp;
   LogLastTimeVarWritten(_lastTimeVarWritten);
 }
}

(問題中的程式碼無效,因為var它是 Solidity 中的關鍵字。)

正如@Michal 解釋的那樣,您必須顯式地實現它(在這種情況下是儲存block.timestamp)。

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