Contract-Development
獲取合約變數的最新更新時間戳
是否可以在不保留交易雜湊的情況下獲得合約變數的最新更新時間,
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)。