
探索開發者視角下的不同 ZKRollup 用戶體驗
TechFlow Selected深潮精選

探索開發者視角下的不同 ZKRollup 用戶體驗
本文將從 Solidity 工程師的角度出發,通過數據驅動的答案深入探討開發者視角下的不同 ZKRollup 用戶體驗。
作者:Yiping, IOSG Ventures
TL;DR
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 工具和虛擬機的首選語言。

開發文檔
開發文檔對於開發者體驗至關重要。這些資源有效地彌合了 Layer2 解決方案的複雜性和以太坊虛擬機 (EVM) 兼容的開發生態系統之間的鴻溝。
不同的項目提供稍微不同的文檔結構和內容。
zkSync 為其特色功能 AA 和 Layer1 <> Layer2 通信提供了詳細文檔和參考代碼。
我們發現了以下改進的空間:
-
包含文件名和路徑:在任何代碼塊的開始部分,都要提到文件名和其路徑。這有助於用戶知道在哪裡找到或放置代碼。
-
展示 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 兩步,因此需要較長的時間。

Layer2 新特性
Layer2 解決方案在解決可擴展性、效率和用戶體驗的挑戰方面發揮著至關重要的作用。ZK Rollup 還處在早期階段,但已經顯示出解鎖開發者新可能性的巨大潛力。
通過提供如狀態差異(State-diff)、無縫的 Layer1 與 Layer2 通信,以及賬戶抽象化等突破性創新,ZK Rollup 使開發者能夠創建創新項目,推動區塊鏈可實現的界限。這些高級特性不僅增強了去中心化應用的能力,而且為區塊鏈技術的主流接納鋪平了道路。
狀態差異(State-diff)
StarkNet 和 zkSync Era 使用狀態差異技術,理論上,可以產生更低的費用。他們只發布狀態差異,而不是交易輸入,這允許數據壓縮和降低存儲成本。這將會給遊戲開發者帶來好處。
Polygon zkEVM 在鏈上發佈所有的交易輸入,依賴於預期在未來幾年內數據存儲成本的降低。
Layer1 <> Layer2 通信
大多數 ZK Rollup 提供 Layer1 <> Layer2 通信功能。例如,zkSync Era 提供了一個利用 Layer1 <> Layer2 通信的治理例子。在 Layer1 上,合約可以啟動一個 Layer2 合約執行。在 Layer2 上,Layer2 合約只能向 Layer1 合約發送信息。然後我們可以在 Layer1 上處理收到的消息。同樣,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 來增強自動化和生產力,減少對大量人力資源的需求,和利用社區的力量,激勵貢獻。
-
AI 助力:生成和維護大量文檔可能需要大量資源。大型語言模型可能幫助開發者編寫和維護高質量的文檔。此外,AI 驅動的 Q&A 機器人可以提供及時準確的回答開發者的查詢,進一步提高他們的體驗。
-
激勵社區參與:為了促進社區的參與,項目可以提供各種激勵,包括財務和非財務激勵。例如,類似賞金的項目可以擴展到包括在代碼、代碼庫測試、文檔改進、翻譯工作和無價的第一手反饋中的貢獻,這些反饋直接來自用戶,反映出可以指導項目團隊改進產品的實際需求。這種方法不僅有可能提高資源的質量,還可以幫助減少維護成本。通過活躍的社區渠道(如 Discord、Substack等)承認貢獻,給予貢獻者讚揚。
通過強調以開發者為中心的設計,並通過社區的共同努力,提供引人入勝的開發者體驗,我們可以在 Web3 世界中培育一個充滿活力和包容性的開發者生態系統!
歡迎加入深潮 TechFlow 官方社群
Telegram 訂閱群:https://t.me/TechFlowDaily
Twitter 官方帳號:https://x.com/TechFlowPost
Twitter 英文帳號:https://x.com/BlockFlow_News













