oksolc 以平行與增量編譯縮短智慧合約開發等待時間
oksolc, a Solidity compiler in Zig
場次摘要
Henri 介紹以 Zig 重寫的 Solidity 編譯器 oksolc。他表示,團隊開發 Chainwall 時,編譯一次需十二分鐘,使用人工智慧撰寫測試也讓測試程式碼大幅增加。團隊因此著手加速編譯,同時要求輸出與原編譯器 solc 逐位元組一致,包括位元組碼與中繼資料。 團隊先輔助移植程式碼,再改善資料結構、快取與平行處理,並嵌入 SQLite 保存編譯中間資料,避免每次修改都從頭編譯。Henri 稱,部分 Pendle 修改可在零點四四秒完成重編譯,也能透過設定接入 Foundry。不過,目前測試基準僅涵蓋部分大型專案,不能據此保證所有情境的效能與輸出一致性。形式化驗證已啟動但尚未完成;目前刻意維持相同位元組碼,並未降低鏈上執行所需的 gas 用量。
值得記下的 5 件事
- [1:20]
以輸出一致作為重寫約束 Henri 表示,團隊調整 LLVM 工具,取得原始 C++ 程式碼的更多標註與語意資訊,再用人工智慧協助移植到 Zig
建立基礎版本後,團隊要求輸出逐位元組一致,連 JSON 輸出與中繼資料都納入要求;這是團隊描述的目標與成果,並非全面驗證的證據。
- [2:20]
先改善單核心效能,再加入平行編譯 Henri 稱,改善資料結構、編譯步驟與快取後,單核心編譯效能約為原先的二點五倍
他接著以 EigenLayer 為例,表示平行編譯可達十至十二倍效能;這些是講者列舉的專案測試結果,不代表所有智慧合約都有相同提升。
- [3:20]
用 SQLite 保存資料,減少重複編譯 為了減少反覆修改測試帶來的等待,團隊將 SQLite 資料庫嵌入編譯器,保存編譯過程的中間資料,供後續編譯沿用
Henri 稱,部分 Pendle 修改可在零點四四秒完成增量編譯;這是特定修改後的重編譯時間,不是完整編譯時間。
- [4:20]
透過設定接入 Foundry Henri 表示,使用者可在智慧合約開發工具 Foundry 的 foundry.toml 設定檔中指定 oksolc 路徑,或設定 FOUNDRY_SOLC 環境變數
另可透過 oksolc.toml 設定同時執行的編譯工作數,以及是否啟用增量編譯。
- [5:20]
形式化驗證與測試擴充仍在進行 Henri 宣布,團隊已開始使用 Lean,以數學證明方式驗證編譯器,但尚未宣布完成
被問到如何測試位元組碼是否一致時,他表示目前以數個大型專案組成測試基準,並希望取得更多資料集,擴大測試範圍。
更多來自 DEVCON 8
Arrow 的硬體 DAO 實驗:AI 協作、在地製造與責任分工
A DAO Shipped an Aircraft: What It Takes to Coordinate Atoms with Tokens
Thomas Garrison
Kohaku:以 SDK 將隱私與安全功能帶入以太坊錢包
Kohaku : privacy for everyone, by default
Nico、Vitalik
私密區塊鏈的取捨:隱私、去中心化與合約協作
Private State, Public Network: The Tradeoffs Behind Privacy
Zachary Williamson