Solidity
使用時間戳來分發令牌是否合適?
為了每天(每 24 小時)在我的 dapp 參與者之間分配代幣,我想使用 block.timestamp 。這足夠安全嗎?還是我應該使用 block.number 來估計 24 小時?例如 24 * 60 * 60 / 17 秒(17 秒 = 被探勘的區塊時間)
礦工可以稍微操縱區塊時間戳,但從長遠來看並非如此。如果資訊用於諸如隨機性之類的事情,那麼通常答案是“不要使用它,因為它可以被操縱”。但如果是為了計算農業獎勵之類的事情,它應該已經足夠好了——我懷疑如果礦工在這里或那裡修改時間戳幾秒鐘,這會不會太重要。
我認為按照慣例,像頂級球員那樣使用禁區會更好。此外,我相信您需要一種觸發操作的方法,因為除了鏈下解決方案外,Dapps 沒有時間表,在這種情況下每 24 小時觸發一次交易。
或者如果您的交易頻繁進行,您可以檢查發生分配的塊號是否大於
BLOCKS_PER_DAY
並再次執行分配。這是假設您每 24 小時計算一次區塊。