Solidity
Solidity:有沒有辦法獲取已執行事務的時間戳?
有沒有辦法讓合約能夠獲得有人在其中呼叫函式的確切時間?
例如,如果有人向合約地址發送資金,是否有區塊鏈記錄的時間戳可以給出該交易的接收時間?
如果是這樣,我將如何在 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;
並將其發送到您的交易的數據欄位中。