IOSG Ventures:開發者視角下的不同ZK Rollup用戶體驗
原文作者:Yiping,IOSG Ventures
TL;DR
原文作者:Yiping,IOSG Ventures
原文作者:Yiping,IOSG Ventures
原文作者:Yiping,IOSG Ventures
Starknet 在2022 年11 月29 日推出Alpha Mainnet。
Scroll 在2023 年2 月27 日推出其Goerli Alpha Testnet。
zkSync 在2023 年3 月24 日推出zkSync Era Mainnet。
Polygon 在2023 年3 月27 日推出其zkEVM Mainnet Beta。
有了這些眾多的ZK Rollup,作為一名Solidity 開發者,你可能會好奇:
哪個提供了更適合你的開發者體驗?
哪個提供了你更需要的開發者支持?
如果你打算創建你的項目,哪個最適合你?
隨著ZK Rollup 的陸續上線,現在是研究ZK Rollup 開發體驗的最好時機。考慮到所有ZK Rollups 都在推廣他們的EVM 兼容性,我們對開發者體驗的探索將從Solidity 工程師的角度出發,讓我們通過數據驅動的答案深入探討這些問題⬇️
🐙 ZK Rollup 的代碼開源比較

開源提升了開發者體驗,通過促進質量、安全性和合作。其透明性允許全球開發者解決Bug 和安全問題,從而持續提升軟件。 GitHub 充當學習平台,提供對各種編碼風格、先進技術和行業標準的訪問,豐富了開發者的旅程。開發者可以根據特定需求修改代碼。開源通過多樣化的社區鼓勵協作和創新,推動項目的發展。
項目通常在達到關鍵里程碑後開源他們的代碼,通常是當代碼至少達到Alpha 版本時。仍在進行大量開發的代碼不適合開源,因為它們可能無法提供預期的好處,如質量提升、安全性提升和協作學習。因此,開源代碼的數量通常與項目開發階段相關。

所有的ZK Rollup 都在他們的GitHub 上投入了大量的工作,儘管他們提供的內容有所不同。
📕 項目語言選擇
Rust 在許多項目中成為構建編譯器、節點、工具鏈、CLI 工具和虛擬機的首選語言。
📄 開發文檔<>開發文檔對於開發者體驗至關重要。這些資源有效地彌合了Layer 2 解決方案的複雜性和以太坊虛擬機(EVM) 兼容的開發生態系統之間的鴻溝。
不同的項目提供稍微不同的文檔結構和內容。
zkSync 為其特色功能AA 和Layer 1
Layer 2 通信提供了詳細文檔和參考代碼。
我們發現了以下改進的空間:
包含文件名和路徑:在任何代碼塊的開始部分,都要提到文件名和其路徑。這有助於用戶知道在哪裡找到或放置代碼。
展示CLI 執行結果:在提供命令行接口(CLI) 指令時,包括命令的示例輸出。這有助於用戶知道應該期待什麼,並驗證他們是否正確執行了命令。
限制代碼行長度:為你的代碼示例設置最大行長度。這確保你的代碼易於閱讀,無需水平滾動。
使用真實的示例:而不是使用佔位符或'xxx',提供示例合約地址或秘鑰。這使用戶更好地了解他們應該使用何種數據。
對於復雜教程提供項目視圖:對於更複雜的教程,在教程的側邊提供項目視圖。當用戶瀏覽教程時,突出顯示代碼的相應部分。

交互式示例:包含交互式示例以幫助快速引導開發者。這可以是一個播放區,用戶可以編輯和運行代碼片段,或者是雲開發環境。
整理文檔:確保你的文檔結構良好,易於導航。使用清晰的標題,目錄。

保持更新:隨著項目的發展,確保你的文檔保持最新。這可能意味著更新截圖,修訂代碼示例,或者重寫部分以反映新功能或變化。

🧑💻 社區和團隊貢獻
貢獻者的數量反映了開源社區的參與度。更新的頻率和參與度對於保持最新、全面的文檔至關重要。
貢獻人數越多代表其開源社區更活躍。大部分項目都在剛上線的時候達到文檔更新頻率的最高峰。
🧑💻 編碼體驗
編碼體驗取決於工具鏈、編輯器體驗和框架。

相關工具鏈決定了是否容易設置本地開發環境、調試和運行代碼。
編輯器體驗決定了編碼的速度。一個好的編輯器體驗應該包括清晰的語法高亮、定義和自動補全。
框架提供了一個結構化的環境,大大加速了開發過程。它們帶有預配置的功能和可重用的庫,開發者可以利用這些來有效地編寫智能合約,無需從頭編寫每一行代碼。
Remix 類似軟件的支持可以幫助開發者在不需要建立自己本地環境的情況下快速開始開發工作。目前,這種雲原生的開發體驗只適用於後端智能合約。它還需要進行改進以適應Dapp 開發,包括智能合約和前端。
Warp 表現不佳。 Kakarot 將是與StarkNet 兼容的EVM 的唯一解決方案。 Kakarot 提供了一個非常流暢的Solidity 開發體驗。與所有現有的以太坊工具,如編譯器、Remix 和Hardhat 兼容。
Kakarot 提供了一個用Cairo 編寫的EVM。作為一個EVM,Kakarot 能夠執行EVM 字節碼程序,使得Ethereum 智能合約能在StarkNet 上運行。
✍️ 測試
測試是智能合約開發的重要方面,它確保了智能合約的質量、功能和可靠性。這個過程包括驗證每個功能是否按照預期運行,並在部署之前找出需要修復的任何錯誤或問題。通過進行徹底的測試,開發者可以有信心,軟件將在各種場景和條件下正確運行。這個過程不僅防止了可能影響用戶體驗的潛在故障,而且幫助維護智能合約的完整性和安全性。測試還使開發者了解到潛在的優化,從而有助於智能合約的持續改進。
Tenderly 是智能合約開發的最佳調試工具之一。它提供智能合約執行模擬、調試器、燃氣分析器、分叉和警告功能,以幫助開發者更好地構建Dapp。然而,Tenderly 並不支持任何ZK Rollup。
希望在不久的將來,我們能看到更多支持ZK Rollup 的智能合約開發和調試工具,這將有助於推動區塊鏈技術的進一步發展和應用。

🚢 部署
部署過程在智能合約開發生命週期中至關重要。好的部署工具為從開發到鏈上環境部署智能合約提供自動化、一致和可靠的體驗。好的部署工具可以顯著減輕手動部署任務的負擔,從而加快交付時間並減少人為錯誤。
StarkNet 的部署步驟分為Declare 和Deploy 兩步,因此需要較長的時間。
✨ Layer 2 新特性
Layer 2 解決方案在解決可擴展性、效率和用戶體驗的挑戰方面發揮著至關重要的作用。 ZK Rollup 還處在早期階段,但已經顯示出解鎖開發者新可能性的巨大潛力。
通過提供如狀態差異(State-diff)、無縫的Layer 1 與Layer 2 通信,以及賬戶抽象化等突破性創新,ZK Rollup 使開發者能夠創建創新項目,推動區塊鏈可實現的界限。這些高級特性不僅增強了去中心化應用的能力,而且為區塊鏈技術的主流接納鋪平了道路。
Layer 1 <>狀態差異(State-diff)
StarkNet 和zkSync Era 使用狀態差異技術,理論上,可以產生更低的費用。他們只發布狀態差異,而不是交易輸入,這允許數據壓縮和降低存儲成本。這將會給遊戲開發者帶來好處。<>Polygon zkEVM 在鏈上發布所有的交易輸入,依賴於預期在未來幾年內數據存儲成本的降低。<>Layer 2 通信
大多數ZK Rollup 提供Layer 1
Layer 2 通信功能。例如,zkSync Era 提供了一個利用Layer 1
Layer 2 通信的治理例子。在Layer 1 上,合約可以啟動一個Layer 2 合約執行。在Layer 2 上,Layer 2 合約只能向Layer 1 合約發送信息。然後我們可以在Layer 1 上處理收到的消息。同樣,Polygon 提供了一個關於Nft-bridge 使用跨鏈通信在L1 和L2 之間共享信息的編碼示例。
賬戶抽象化
賬戶抽象化是另一個令人興奮的特性。 zkSync Era 提供原生的AA。 zkSync Era 的賬戶可以啟動交易,像EOA 一樣,但也可以在其中實現任意邏輯,像智能合約一樣。由於zkSync 原生實現了AA,賬戶不需要額外的代理合約。即使是普通的EOA 也可以有無需燃料費支付的交易,這在僅僅EIP-4337 中是不可能的。 Polygon zkEVM 和Scroll 實現了與EVM 兼容的AA。 StarkNet 也正在進行賬戶抽象化的工作。它尋求實現簽名抽象化和支付抽象化。
💭 未來對開發者體驗的改進
在這次的研究中,我們深感這些ZK Rollup 項目在不斷改進產品和對開發者的支持方面付出了巨大的努力。然而,考慮到我們還處在區塊鏈應用的初級階段,面臨的開發者群體相對較少,因此,致力於提升開發者體驗無疑會幫助項目吸引未來的開發者,並最終塑造這個行業的未來。
以下是一些提高開發週期支持的常見建議:
1 ,文檔:
高質量的文檔:全面、清晰和及時更新的文檔對於提高開發者體驗至關重要。確保文檔的完整性、清晰度、包含例子,並定期更新。
直觀的API 設計:API 應該一致、直觀,並有良好的文檔。根據API 文檔的清晰度和可訪問性,以及完成常見任務的容易程度評估API 設計。
完整的API 引用和更改日誌:提供詳細的API 引用,包括函數、參數、返回值和錯誤代碼。維護一個更改日誌,跟踪更新、新功能、bug 修復和已棄用的功能。
案例研究:展示產品應用的例子,以啟發和教育開發者有效解決問題。
流暢的上手體驗:通過簡化環境設置,解釋核心概念,和促進基本應用的創建,來縮短新開發者開始的時間。
2 ,可用性和效率:
工具的可用性:確保提供的工具用戶友好且直觀。通過評估開發者執行常見任務所需的時間來衡量使用的便利性。
錯誤信息和調試支持:通過有用的錯誤信息和強大的調試支持來提高開發者體驗。你可以通過故意創建常見的錯誤,然後檢查系統的回應有多幫忙來衡量這個。
集成和兼容性:評估工具或平台與生態系統中其他常用工具的集成程度如何。
3 ,透明度和更新:
產品狀態:及時更新關於操作問題、維護計劃和系統停機的信息,可以幫助開發者有效地規劃他們的工作。
隨著Web3 領域的技術快速進步,以一種可擴展和可持續的方式維持一致的高水平開發者體驗,對於Web3 項目來說是一個顯著的挑戰。
為了應對這個挑戰,我們建議項目探索兩個方向:利用AI 來增強自動化和生產力,減少對大量人力資源的需求,和利用社區的力量,激勵貢獻。


