Blocks
您可以使用區塊時間作為持續時間的衡量標準嗎?
我已經讀過,開採一個乙太坊區塊大約需要 12 秒。假設我在區塊 100 挖了一個合約,我可以設置一個只能在區塊 200 或更多區塊執行的函式嗎?因此在呼叫函式之前大約需要 1200 秒?
當網路擁塞時,探勘一個塊需要很長時間嗎?礦工可以操縱已經開采的區塊的出塊時間嗎?
block.number
考慮到您正在考慮區塊探勘的平均時間,您可以將其用作持續時間的度量,這與網路擁塞無關。順便說一句,另一個答案是指
block.timestamp
,這與您原來的問題不同。比較時間戳和塊時,您可以在此處找到更多資訊
是的,您可以這樣做,但這不是一種安全可靠的方法。
如果惡意礦工操縱區塊時間戳,您的風險不大,那很可能沒問題。否則,它不是。
從文件:
筆記
不要依賴 block.timestamp 或 blockhash 作為隨機源,除非你知道自己在做什麼。
時間戳和區塊雜湊都會在一定程度上受到礦工的影響。例如,採礦社區中的不良行為者可以在選定的雜湊上執行賭場支付功能,如果他們沒有收到任何錢,只需重試不同的雜湊。
目前區塊的時間戳必須嚴格大於上一個區塊的時間戳,但唯一的保證是它將位於規範鏈中兩個連續區塊的時間戳之間。
關於你的其他問題:
- 據我所知,網路擁塞不應該影響出塊時間。
- 惡意礦工總是可以操縱區塊鏈的狀態,但只是在一定程度上。如果您在檢查區塊後等待 15 個區塊被開採(典型的確認延遲),您可以假設該區塊是真實的並被所有礦工接受。