BNB Chain 預定於12月8日上午11時30分(韓國時間),在 BNB Smart Chain(BSC)主網啟用毫秒級區塊時間查詢功能。
BNB Chain 於11月3日公布的 BSC v1.8.2 版本說明,列出 Jenner 主網硬分叉的啟用時間。主網節點營運者須在啟用前升級軟體。
BEP-706 新增位址 0x70 的預編譯合約。呼叫時不需提供參數,功能會以32位元組值回傳目前區塊的 Unix 毫秒時間戳。
既有的 block.timestamp 和 EVM 的 TIMESTAMP 指令仍以秒為單位。智慧合約必須明確呼叫新位址,才能使用毫秒時間。
Jenner 已於10月29日上午11時30分(韓國時間)先在 Chapel 測試網啟用。當時的測試網方案也包含支付交易的 Gas 空間、CAS20,以及毫秒級時間查詢功能。先前 v1.8.1 版本說明未列出主網啟用時間,這次 v1.8.2 才公布相關時程。
BEP-520 啟用後,毫秒資訊已記錄在區塊標頭中。BEP-520 保留以秒為單位的 Header.Time,並將毫秒餘數寫入 MixDigest;BEP-706 則讓智慧合約能讀取這項精度資訊。
BNB Chain 在7月8日公布的下半年技術路線圖中表示,上半年完成最佳化後,BSC 區塊間隔已縮短至450毫秒。當區塊間隔不到1秒時,不同區塊的 block.timestamp 可能出現相同的秒級時間值。
這次變更不會縮短區塊產生間隔,而是新增讀取區塊標頭時間的方式,也不會提供每筆交易的執行時間或交易抵達網路的時間。
BEP-706 提案列出的應用情境包括:有效期限較短的報價請求(RFQ)簽章、拍賣與訂單截止時間,以及確認價格資訊是否足夠新。提案指出,若只使用秒級時間值,較難直接判斷不到1秒的到期時間。
同一區塊中的所有交易讀取到的區塊時間都相同。區塊時間由驗證者在共識規則範圍內設定,這點與既有的 block.timestamp 性質相同。
若混用秒與毫秒,可能導致到期時間偏離原本設定,因此合約、簽章和後端系統的時間單位必須一致。硬分叉啟用前呼叫 0x70,即使收到成功回應,回傳資料仍可能是空值,因此也要確認資料長度。
預編譯合約的計算成本為20 Gas。呼叫與記憶體操作另有成本,因此整筆合約執行的總成本不等於20 Gas。
BSC 先前已進行 Pasteur 主網升級,以降低驗證者重新執行區塊的負擔。TokenPost 曾報導這項升級。本次 Jenner 也納入 BEP-703,為支付交易保留 Gas 空間,以及實作 CAS20 的 BEP-702。
BEP-706 提案目前標示為 Draft。包含實作程式碼的 PR #3792 已於8月18日合併,最新的 v1.8.2 版本說明則列出主網啟用時程。
以 Reth 為基礎的主網節點也收到升級至 v0.1.4 的通知,須在12月8日上午11時30分(韓國時間)前完成升級。
留言 0