Solidity
我可以在合約內部檢索合約被探勘的時間戳嗎?
我知道
now
別名block.timestamp (uint): current block timestamp
和時間單位的關鍵字但是我沒有找到一種方法來獲取合約被探勘的區塊時間戳。我應該使用事件並將
now
關鍵字“記錄”到開始變數中嗎?
您必須通過在建構子中保存 block.timestamp 將其編碼到您的合約中:
contract A { uint public createdTimestamp; function A() { createdTimestamp = block.timestamp; } }
您可以像這樣訪問:
contract B is Test { function testTimestamp () { A a = new A(); uint timestamp = a.createdTimestamp(); //@log timestamp `uint timestamp` } }
或記錄事件,如果您不需要從鏈中訪問此資訊:
contract A { event created(uint timestamp); function A() { created(block.timestamp); } }
但是查詢任意合約是不可能的,但是這可以通過對合約程式碼的二進制搜尋在 O(log_2 n) 中實現。