Solidity

區塊鏈中的時間如何運作?

  • July 22, 2017

我希望這個問題還不錯,但這是我一直難以理解的問題。區塊鏈中的時間是如何工作的,我如何利用諸如此類block.timestamp的變數?我正在創建一個水龍頭,使用者可以在其中提取一定數量的乙太幣,然後他們必須等待一個小時才能提取更多。

重複編輯:我在 StackExchange 上查看了其他解釋,但它沒有回答我的問題。我想知道時間是如何在區塊鏈上傳遞的,並利用這些知識利用 block.timestamp。如果我不清楚,我很抱歉。我是創建 Dapps 的初學者,並且想學習!:)

應該顯示該塊被開采的block.timestamp大致時間。但這只是一個近似值,它取決於在其上工作的機器的時鐘精度,礦工也可以對其進行修改。因此,這不是一個非常安全的時間度量,但對於您的案例來說應該是好的。

來自solidity文件

block.timestamp (uint):目前區塊時間戳,自 unix 紀元以來的秒數。

你可以這樣做:

mapping(address => uint) startTime;

function start() {
   startTime[msg.sender] = now;
}

function hasElapsed() constant return (bool) {
   if (now >= startTime[msg.sender] + 60 minutes) {
       // 60 minutes has elapsed from startTime[msg.sender]
       return true;
   }
   return false;
}

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