Solidity

使用時間戳來分發令牌是否合適?

  • June 28, 2021

為了每天(每 24 小時)在我的 dapp 參與者之間分配代幣,我想使用 block.timestamp 。這足夠安全嗎?還是我應該使用 block.number 來估計 24 小時?例如 24 * 60 * 60 / 17 秒(17 秒 = 被探勘的區塊時間)

礦工可以稍微操縱區塊時間戳,但從長遠來看並非如此。如果資訊用於諸如隨機性之類的事情,那麼通常答案是“不要使用它,因為它可以被操縱”。但如果是為了計算農業獎勵之類的事情,它應該已經足夠好了——我懷疑如果礦工在這里或那裡修改時間戳幾秒鐘,這會不會太重要。

我認為按照慣例,像頂級球員那樣使用禁區會更好。此外,我相信您需要一種觸發操作的方法,因為除了鏈下解決方案外,Dapps 沒有時間表,在這種情況下每 24 小時觸發一次交易。

或者如果您的交易頻繁進行,您可以檢查發生分配的塊號是否大於BLOCKS_PER_DAY並再次執行分配。這是假設您每 24 小時計算一次區塊。

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