zkSync Era 上線僅僅不到兩週時間,TVL 已經突破 1 億美元,但隨著使用者快速攀升,當前處於 alpha 階段的 zkSync Era 也開始傳出技術問題,旗下生態項目籌集了 921 ETH 卻卡在合約中無法領出。
(前情提要:L2熱潮》zkSync Era鎖倉突破1.4億鎂!生態最大DEX SyncSwap宣佈發幣)
(背景補充:L2深度分析》zkSync Era 是什麼?與Lite性能差異?埋伏空投互動教學)
基於零知識證明技術(ZK rollup)的以太坊 L2 擴容方案 zkSync,在 3 月 24 日啟動主網 zkSync Era 後,迅速獲得市場投資人關注,僅不到兩週時間內,其鎖倉量(TVL)就突破 1 億美元。
zkSync Era 生態項目籌集 921 ETH 卡在合約無法領出
不過,隨著使用者快速攀升,當前處於 alpha 階段的 zkSync Era 也開始傳出技術問題,先是在 4/1 出現宕機情況,一度暫停出塊逾 3 小時。
今(7)日,根據 The Block 研究員 Eden Au 發布的推文指出,zkSync Era 上的一個新項目透過代幣銷售完成了 921 ETH(價值約 170 萬美元)的眾籌,但因為合約程式碼存在問題(transfer() 函數適用於以太坊和其他EVM鏈,但不適用於 zkSync),導致籌集的資金被「永遠」卡在合約中無法取出。
延伸閱讀:L2熱潮》zkSync Era 啟動主網,詳解獨特架構和生態應用
A project on zkSync raised 921 ETH ($1.7M) in a token sale, but funds are stuck forever in the smart contract.
The transfer() function works on Ethereum and other EVM chains, but not on zkSync. pic.twitter.com/HQiOMrs8GT
— Eden Au (@0xedenau) April 6, 2023
zkSync:已找到解凍合約解決方案
對此,zkSync 緊急發文澄清,這個新項目是 Gemholic,並表示資金是「安全的」,當前團隊正在與項目方合作,幫助他們解決問題。zkSync 補充解釋:
任何調用 transfer() 或 send() 函數的智能合約都嚴重依賴 Gas 成本(硬編碼 2300 Gas),但這不能保證在以太坊上運作,因為 fallback()函數可能會消耗超過 2300 Gas,而且在以太坊未來版本中 opcode Gas定價可能會發生變化,進而導致合約中斷。
然而,zkSync Era 本身有別於一般 EVM 兼容環境,採取的是一種動態且發散的 Gas 計量方式,使得某些交易類型比其他 EVM Rollup 的交易更便宜 10 到 1000倍 。因此按照當前 Era主網的 Gas 水平,任何沒有明確 Gas 津貼的 transfer() 調用目前都會失敗。
不過,zkSync 表示當前已經找到一種解決方案來解凍合約:「這將需要對協議的 Gas 計量進行最小的更改,但將允許完全回收資金,預計將在明天發布更多詳細訊息。」
延伸閱讀:zkSync 全方位報告》檢視團隊組成、技術、代幣經濟、生態系統..
@GemholicECO is a multi-product platform that recently deployed their token contract and performed a pre-sale launch on zkSync Era. After deployment they encountered an issue with their contract due to the usage of the .transfer() function.
— ZKsync (∎, ∆) (@zksync) April 7, 2023
值得一提的是,為了避免此事件對 zkSync Era 生態產生負面影響, zkSync 還在推文中強調,編譯器已經添加了關於 transfer() 函數調用的警告,但 Gemholic 的合約沒有事先在測試網或本地節點測試過就直接部署在 Era 的主網上,這才導致問題的發生。
此外,zkSync 還表示早在三年前 Consensys 就已警告 Solidity 開發者放棄使用 transfer() 函數,而大部分主流項目也早已不使用 transfer() 函數,似乎在暗示此次問題的發生並非全是 zkSync Era 的責任。
It was clear to us that this problem could arise, so we added a warning about .transfer() directly to the compiler:https://t.co/sJgTr4SVh2
— ZKsync (∎, ∆) (@zksync) April 7, 2023
📍相關報導📍
zkSync 2.0 上線第二階段 Alpha,開放項目方於主網部署程式碼