
Exploring User Experiences of Different ZKRollups from a Developer's Perspective
TechFlow Selected TechFlow Selected

Exploring User Experiences of Different ZKRollups from a Developer's Perspective
This article will take the perspective of a Solidity engineer to deeply explore different ZKRollup user experiences from a developer's viewpoint, using data-driven insights.
Author: Yiping, IOSG Ventures
TL;DR
Starknet launched its Alpha Mainnet on November 29, 2022.
Scroll launched its Goerli Alpha Testnet on February 27, 2023.
zkSync launched zkSync Era Mainnet on March 24, 2023.
Polygon launched its zkEVM Mainnet Beta on March 27, 2023.
With so many ZK Rollups emerging, as a Solidity developer, you might wonder:
-
Which offers a better developer experience for you?
-
Which provides the developer support you need more?
-
If you plan to build your project, which one is best suited for you?
As ZK Rollups go live one after another, now is the perfect time to explore the development experience across ZK Rollups. Given that all ZK Rollups are promoting their EVM compatibility, our exploration of developer experience will take the perspective of a Solidity engineer—let’s dive into these questions with data-driven answers.
Comparison of Code Open-Sourcing in ZK Rollups
Open-sourcing enhances developer experience by fostering quality, security, and collaboration. Its transparency allows global developers to identify and fix bugs and security issues, leading to continuous software improvement. GitHub serves as a learning platform, offering access to diverse coding styles, advanced technologies, and industry standards, enriching the developer journey. Developers can modify code based on specific needs. Open-source encourages collaboration and innovation through diverse communities, driving project advancement.
Projects typically open-source their code after reaching key milestones, usually when the code reaches at least Alpha stage. Code still undergoing heavy development isn't suitable for open-sourcing, as it may not deliver expected benefits such as improved quality, security, or collaborative learning. Therefore, the amount of open-sourced code often correlates with the project's development phase.
All ZK Rollup projects have invested heavily in their GitHub repositories, though the content they provide varies.

Programming Language Choices
Rust has become the language of choice for building compilers, nodes, toolchains, CLI tools, and virtual machines across many projects.

Developer Documentation
Developer documentation is crucial for developer experience. These resources effectively bridge the complexity of Layer2 solutions and the EVM-compatible development ecosystem.
Different projects offer slightly different documentation structures and content.
zkSync provides detailed documentation and reference code for its unique features like AA and Layer1 <> Layer2 communication.
We identified the following areas for improvement:
-
Include filenames and paths: At the beginning of any code block, mention the filename and its path. This helps users know where to find or place the code.
-
Show CLI execution results: When providing command-line interface (CLI) instructions, include example outputs of the commands. This helps users know what to expect and verify correct execution.
-
Limit code line length: Set a maximum line length for your code examples. This ensures code readability without requiring horizontal scrolling.
-
Use real examples: Instead of placeholders or 'xxx', provide example contract addresses or keys. This gives users a clearer idea of the data they should use.
-
Provide project view for complex tutorials: For complex tutorials, offer a project view on the side. Highlight corresponding code sections as users progress through the tutorial.
-
Interactive examples: Include interactive examples to help onboard developers quickly. This could be a playground where users edit and run code snippets, or a cloud-based development environment.
-
Organize documentation: Ensure your documentation is well-structured and easy to navigate. Use clear headings and a table of contents.
-
Keep documentation updated: As the project evolves, ensure your documentation stays current. This may involve updating screenshots, revising code examples, or rewriting sections to reflect new features or changes.

Community and Team Contributions
The number of contributors reflects the engagement level of an open-source community. Update frequency and participation are critical for maintaining up-to-date and comprehensive documentation.

A higher number of contributors indicates a more active open-source community. Most projects reach peak documentation update frequency right after launch.


Coding Experience
Coding experience depends on toolchains, editor experience, and frameworks.
Relevant toolchains determine how easy it is to set up a local development environment, debug, and run code.
Editor experience affects coding speed. A good editor experience should include clear syntax highlighting, definition navigation, and auto-completion.
Frameworks provide a structured environment that greatly accelerates development. They come with pre-configured features and reusable libraries, allowing developers to write smart contracts efficiently without starting from scratch.

Support for Remix-like tools helps developers start quickly without setting up their own local environments. Currently, this cloud-native development experience only applies to backend smart contracts. It still requires improvements to support full Dapp development, including both smart contracts and frontend.

Warp performs poorly. Kakarot will be the sole EVM solution compatible with StarkNet. Kakarot delivers a smooth Solidity development experience, compatible with all existing Ethereum tools such as compilers, Remix, and Hardhat.
Kakarot provides an EVM written in Cairo. As an EVM implementation, Kakarot can execute EVM bytecode programs, enabling Ethereum smart contracts to run on StarkNet.

Testing
Testing is a crucial aspect of smart contract development, ensuring quality, functionality, and reliability. This process involves verifying each function operates as intended and identifying any bugs or issues before deployment. Thorough testing gives developers confidence that the software will perform correctly under various scenarios and conditions. It not only prevents potential failures affecting user experience but also helps maintain the integrity and security of smart contracts. Testing also reveals opportunities for optimization, contributing to ongoing improvements.
Tenderly is one of the best debugging tools for smart contract development. It offers smart contract execution simulation, debugger, gas analyzer, forking, and warning features to help developers build Dapps more effectively. However, Tenderly does not support any ZK Rollups.
We hope to see more smart contract development and debugging tools supporting ZK Rollups in the near future, helping drive further advancement and adoption of blockchain technology.
Deployment
The deployment process is critical in the smart contract development lifecycle. Good deployment tools provide automated, consistent, and reliable experiences when moving from development to on-chain environments. Effective deployment tools significantly reduce the burden of manual tasks, accelerating delivery and minimizing human errors.
StarkNet's deployment process consists of two steps—Declare and Deploy—making it relatively time-consuming.

New Features in Layer2
Layer2 solutions play a vital role in addressing challenges around scalability, efficiency, and user experience. ZK Rollups are still in early stages but already show great potential in unlocking new possibilities for developers.
By introducing breakthrough innovations such as state-diff, seamless Layer1 <> Layer2 communication, and account abstraction, ZK Rollups enable developers to create innovative projects that push the boundaries of what's possible in blockchain. These advanced features not only enhance decentralized application capabilities but also pave the way for mainstream blockchain adoption.
State-Diff
StarkNet and zkSync Era use state-diff technology, theoretically enabling lower fees. By publishing only state differences instead of transaction inputs, they allow data compression and reduced storage costs. This will benefit game developers.
Polygon zkEVM publishes all transaction inputs on-chain, relying on anticipated reductions in data storage costs over the coming years.
Layer1 <> Layer2 Communication
Most ZK Rollups offer Layer1 <> Layer2 communication functionality. For example, zkSync Era provides a governance example using Layer1 <> Layer2 communication. On Layer1, a contract can initiate execution of a Layer2 contract. On Layer2, a Layer2 contract can only send messages to a Layer1 contract. We can then process received messages on Layer1. Similarly, Polygon provides a coding example of an NFT bridge using cross-chain communication to share information between L1 and L2.
Account Abstraction (AA)
Account abstraction is another exciting feature. zkSync Era offers native AA. Accounts on zkSync Era can initiate transactions like EOAs, yet also implement arbitrary logic like smart contracts. Because zkSync natively implements AA, accounts don't require additional proxy contracts. Even regular EOAs can have fee-less transactions—a capability impossible under EIP-4337 alone. Polygon zkEVM and Scroll implement EVM-compatible AA. StarkNet is also working on account abstraction, aiming to achieve signature abstraction and fee payment abstraction.
Future Improvements for Developer Experience
Through this research, we deeply appreciate the significant efforts these ZK Rollup projects have made in continuously improving products and supporting developers. However, given that we're still in the early stages of blockchain applications with a relatively small developer base, dedicating efforts to enhancing developer experience will undoubtedly help attract future developers and ultimately shape the future of this industry.
Below are some common recommendations for improving development cycle support:
1. Documentation:
-
High-quality documentation: Comprehensive, clear, and up-to-date documentation is essential for improving developer experience. Ensure completeness, clarity, inclusion of examples, and regular updates.
-
Intuitive API design: APIs should be consistent, intuitive, and well-documented. Evaluate API design based on clarity, accessibility of documentation, and ease of completing common tasks.
-
Complete API references and changelogs: Provide detailed API references including functions, parameters, return values, and error codes. Maintain a changelog tracking updates, new features, bug fixes, and deprecated functionalities.
-
Case studies: Showcase examples of product applications to inspire and educate developers on solving problems effectively.
-
Smoother onboarding experience: Reduce the time for new developers to get started by simplifying environment setup, explaining core concepts, and facilitating creation of basic applications.
2. Usability and Efficiency:
-
Tool usability: Ensure provided tools are user-friendly and intuitive. Measure ease of use by evaluating the time developers need to complete common tasks.
-
Error messages and debugging support: Improve developer experience with helpful error messages and robust debugging support. You can evaluate this by intentionally creating common errors and checking how helpful the system responses are.
-
Integration and compatibility: Assess how well tools or platforms integrate with other commonly used tools in the ecosystem.
3. Transparency and Updates:
-
Product status: Timely updates about operational issues, maintenance plans, and system downtimes can help developers plan their work effectively.
As Web3 technology advances rapidly, maintaining a consistently high level of developer experience in a scalable and sustainable manner poses a significant challenge for Web3 projects.
To address this challenge, we suggest projects explore two directions: leveraging AI to enhance automation and productivity, reducing reliance on large human resources, and harnessing community power by incentivizing contributions.
-
AI Assistance: Generating and maintaining extensive documentation can be resource-intensive. Large language models could help developers write and maintain high-quality documentation. Additionally, AI-powered Q&A bots can provide timely and accurate responses to developer queries, further enhancing their experience.
-
Incentivize Community Participation: To encourage community involvement, projects can offer various incentives, both financial and non-financial. For example, bounty programs could expand to include contributions in code, codebase testing, documentation improvements, translation work, and invaluable firsthand feedback directly from users, reflecting real needs that can guide product improvements. This approach has the potential to improve resource quality while reducing maintenance costs. Acknowledge contributions through active community channels (e.g., Discord, Substack), giving contributors recognition.
By emphasizing developer-centric design and delivering engaging developer experiences through collective community effort, we can cultivate a vibrant and inclusive developer ecosystem in the Web3 world!
Join TechFlow official community to stay tuned
Telegram:https://t.me/TechFlowDaily
X (Twitter):https://x.com/TechFlowPost
X (Twitter) EN:https://x.com/BlockFlow_News














