
개발자 관점에서 본 다양한 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 Rollup이 EVM 호환성을 강조하고 있는 점을 고려해, 본 리뷰는 Solidity 엔지니어의 관점에서 데이터 기반의 답변을 통해 이 질문들을 심층적으로 다룰 것이다.
ZK Rollup 코드 오픈소스 비교
오픈소스는 품질, 보안 및 협업을 촉진함으로써 개발자 경험을 향상시킨다. 투명성 덕분에 전 세계 개발자들이 버그와 보안 문제를 해결할 수 있으며, 지속적인 소프트웨어 개선이 가능하다. GitHub는 다양한 코딩 스타일, 첨단 기술 및 산업 표준에 접근할 수 있는 학습 플랫폼 역할을 하며 개발자의 여정을 풍부하게 한다. 개발자는 특정 요구사항에 따라 코드를 수정할 수 있고, 다양한 커뮤니티를 통해 협업과 혁신이 촉진되어 프로젝트 발전을 가속화한다.
프로젝트는 일반적으로 주요 마일스톤에 도달한 후 코드를 공개하며, 대개 최소한 알파 버전 이상이 되었을 때 오픈소스화한다. 아직 활발한 개발 중인 코드는 오픈소스화에 부적합할 수 있는데, 이는 품질 향상, 보안 강화, 협업 학습 등의 기대 효과를 제대로 얻기 어렵기 때문이다. 따라서 오픈소스화된 코드의 양은 일반적으로 프로젝트의 개발 단계와 관련이 있다.
모든 ZK Rollup 프로젝트는 각각의 GitHub에 상당한 노력을 기울이고 있지만, 제공하는 내용에는 차이가 있다.

프로젝트 언어 선택
많은 프로젝트에서 Rust는 컴파일러, 노드, 툴체인, CLI 도구 및 가상 머신 구축의 주력 언어로 자리잡고 있다.

개발 문서
개발 문서는 개발자 경험에 매우 중요하다. 이러한 자료는 레이어2 솔루션의 복잡성과 이더리움 가상머신(EVM) 호환 개발 환경 사이의 격차를 효과적으로 메워준다.
각 프로젝트는 약간 다른 문서 구조와 콘텐츠를 제공한다.
zkSync는 AA(계정 추상화) 및 레이어1 <> 레이어2 통신이라는 특화된 기능에 대해 상세한 문서와 참조 코드를 제공한다.
다음과 같은 개선 여지가 있다:
-
파일 이름 및 경로 포함: 모든 코드 블록 시작 부분에 파일 이름과 경로를 명시하자. 이를 통해 사용자가 코드를 어디서 찾거나 배치해야 하는지 알 수 있다.
-
CLI 실행 결과 표시: CLI 명령어를 제공할 때 예제 출력도 함께 포함하자. 이를 통해 사용자가 무엇을 기대해야 하는지 이해하고, 명령어를 올바르게 실행했는지 검증할 수 있다.
-
코드 행 길이 제한: 코드 예제에 최대 행 길이를 설정하자. 이를 통해 수평 스크롤 없이도 코드를 쉽게 읽을 수 있다.
-
실제 예제 사용: 플레이스홀더나 'xxx' 대신 실제 계약 주소 또는 키를 제공하자. 이를 통해 사용자가 어떤 데이터를 사용해야 하는지 더 잘 이해할 수 있다.
-
복잡한 튜토리얼에는 프로젝트 뷰 제공: 복잡한 튜토리얼의 경우 사이드바에 프로젝트 구조를 제시하고, 튜토리얼 진행 중에 해당 코드 부분을 강조하자.
-
인터랙티브 예제: 인터랙티브 예제를 포함하여 개발자를 빠르게 유도하자. 예를 들어 코드 조각을 편집하고 실행할 수 있는 플레이그라운드 또는 클라우드 개발 환경 등을 제공할 수 있다.
-
문서 정리: 문서가 잘 구성되고 쉽게 탐색될 수 있도록 하자. 명확한 제목과 목차를 사용하자.
-
최신 유지: 프로젝트의 발전에 따라 문서도 지속적으로 업데이트하자. 스크린샷 갱신, 코드 예제 수정, 새로운 기능 반영 등을 통해 문서를 항상 최신 상태로 유지하자.

커뮤니티 및 팀 기여
기여자 수는 오픈소스 커뮤니티의 참여도를 반영한다. 문서의 업데이트 빈도와 참여도는 최신이며 포괄적인 문서를 유지하는 데 필수적이다.

기여자가 많을수록 오픈소스 커뮤니티가 더욱 활발하다는 것을 의미한다. 대부분의 프로젝트는 출시 직후 문서 업데이트 빈도가 가장 높은 정점을 찍는다.


코딩 경험
코딩 경험은 툴체인, 에디터 경험, 프레임워크에 달려 있다.
관련 툴체인은 로컬 개발 환경 설정, 디버깅, 코드 실행이 쉬운지를 결정한다.
에디터 경험은 코딩 속도를 좌우한다. 우수한 에디터 경험은 명확한 구문 강조, 정의 및 자동 완성을 포함해야 한다.
프레임워크는 구조화된 환경을 제공하여 개발 속도를 크게 향상시킨다. 미리 구성된 기능과 재사용 가능한 라이브러리를 통해 개발자는 모든 코드를 처음부터 작성하지 않고도 효율적으로 스마트 계약을 작성할 수 있다.

Remix 유사 소프트웨어 지원은 개발자가 자체 로컬 환경을 구축하지 않고도 빠르게 개발을 시작할 수 있도록 도와준다. 현재 이러한 클라우드 네이티브 개발 경험은 백엔드 스마트 계약에만 적용 가능하다. Dapp 개발(스마트 계약 및 프론트엔드 모두 포함)에 맞게 개선이 필요하다.

Warp는 성능이 좋지 않다. Kakarot는 StarkNet과 호환되는 EVM의 유일한 솔루션이 될 것이다. Kakarot은 매우 원활한 Solidity 개발 경험을 제공하며, 기존 모든 이더리움 툴(컴파일러, Remix, Hardhat 등)과 호환된다.
Kakarot은 Cairo로 작성된 EVM을 제공한다. EVM로서 Kakarot은 EVM 바이트코드 프로그램을 실행할 수 있으므로 이더리움 스마트 계약이 StarkNet 위에서 작동할 수 있게 된다.

테스트
테스트는 스마트 계약 개발의 중요한 요소로, 품질, 기능, 신뢰성을 보장한다. 각 기능이 예상대로 동작하는지 검증하고 배포 전에 수정해야 할 오류나 문제를 찾아내는 과정을 포함한다. 철저한 테스트를 통해 개발자는 다양한 시나리오와 조건 하에서도 소프트웨어가 정상 동작할 것이라는 자신감을 가질 수 있다. 이 과정은 사용자 경험에 영향을 줄 수 있는 잠재적 장애를 방지할 뿐 아니라 스마트 계약의 무결성과 보안을 유지하는 데에도 도움이 된다. 또한 테스트는 잠재적 최적화를 파악하게 해주어 스마트 계약의 지속적인 개선에 기여한다.
Tenderly는 스마트 계약 개발에서 최고의 디버깅 도구 중 하나다. 스마트 계약 실행 시뮬레이션, 디버거, 가스 분석기, 포크, 경고 기능 등을 제공하여 Dapp 개발을 보다 원활하게 돕는다. 그러나 Tenderly는 현재 어떤 ZK Rollup도 지원하지 않는다.
앞으로 곧 더 많은 ZK Rollup을 지원하는 스마트 계약 개발 및 디버깅 도구가 등장하기를 기대하며, 이는 블록체인 기술의 추가 발전과 실용화를 촉진할 것이다.
배포
배포 과정은 스마트 계약 개발 생명주기에서 매우 중요하다. 우수한 배포 도구는 개발 환경에서 체인 상의 환경으로 스마트 계약을 자동화하고 일관되며 신뢰할 수 있는 방식으로 배포할 수 있도록 해준다. 좋은 배포 도구는 수동 배포 작업의 부담을 크게 줄여 배송 시간을 단축시키고 인간의 오류를 줄이는 데 기여한다.
StarkNet의 배포 과정은 Declare와 Deploy 두 단계로 나뉘어 있어 시간이 다소 걸린다.

레이어2 신규 기능
레이어2 솔루션은 확장성, 효율성, 사용자 경험의 문제 해결에 핵심적인 역할을 한다. ZK Rollup은 초기 단계이지만, 개발자들에게 새로운 가능성을 열어줄 잠재력이 이미 확인되고 있다.
상태 차이(State-diff), 원활한 레이어1-레이어2 통신, 계정 추상화(Account Abstraction)와 같은 획기적인 혁신을 통해 ZK Rollup은 개발자가 혁신적인 프로젝트를 만들고 블록체인 기술이 달성할 수 있는 한계를 확장할 수 있도록 돕는다. 이러한 고급 기능은 탈중앙화 애플리케이션의 능력을 강화할 뿐 아니라 블록체인 기술의 대중화를 위한 길을 열어준다.
상태 차이 (State-diff)
StarkNet과 zkSync Era는 상태 차이 기술을 사용해 이론적으로 더 낮은 수수료를 제공한다. 거래 입력 대신 상태 차이만 게시함으로써 데이터 압축과 저장 비용 절감이 가능하다. 이는 게임 개발자에게 특히 유리하다.
Polygon zkEVM은 체인 상에 모든 거래 입력을 게시하며, 향후 몇 년 내 데이터 저장 비용이 감소할 것으로 기대하고 있다.
레이어1 <> 레이어2 통신
대부분의 ZK Rollup은 레이어1과 레이어2 간의 통신 기능을 제공한다. 예를 들어, zkSync Era는 레이어1 <> 레이어2 통신을 활용한 거버넌스 예제를 제공한다. 레이어1에서 계약이 레이어2 계약 실행을 시작할 수 있고, 레이어2에서는 레이어2 계약이 레이어1 계약에 정보를 전송할 수 있다. 이후 레이어1에서 수신된 메시지를 처리할 수 있다. 마찬가지로 Polygon은 NFT 브릿지가 크로스체인 통신을 통해 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 참조를 제공하자. 업데이트, 신규 기능, 버그 수정, 폐기된 기능 등을 추적하기 위해 변경 로그를 유지하자.
-
사례 연구: 실제 제품 적용 사례를 보여줘 개발자가 효과적으로 문제를 해결하도록 영감을 주고 교육하자.
-
원활한 입문 경험: 환경 설정을 간소화하고 핵심 개념을 설명하며 기본 애플리케이션 생성을 촉진함으로써 신규 개발자의 시작 시간을 단축하자.
2. 사용성과 효율성:
-
도구의 사용성: 제공되는 도구가 사용자 친화적이고 직관적인지 확인하자. 개발자가 일반적인 작업을 수행하는 데 필요한 시간을 평가하여 편의성을 측정하자.
-
오류 메시지 및 디버깅 지원: 유용한 오류 메시지와 강력한 디버깅 지원을 통해 개발자 경험을 향상시키자. 흔한 오류를 의도적으로 만들어 시스템의 응답이 얼마나 도움이 되는지를 확인해보자.
-
통합 및 호환성: 도구나 플랫폼이 생태계 내 기타 일반 도구들과 얼마나 잘 통합되는지 평가하자.
3. 투명성과 업데이트:
-
제품 상태: 운영 문제, 유지보수 계획, 시스템 다운타임에 대한 정보를 즉시 업데이트하면 개발자가 작업을 효과적으로 계획할 수 있다.
Web3 분야의 기술이 빠르게 발전함에 따라, 일관된 수준의 개발자 경험을 확장 가능하고 지속 가능한 방식으로 유지하는 것은 Web3 프로젝트에게 상당한 도전이다.
이 도전에 대응하기 위해, 프로젝트는 두 가지 방향을 모색할 것을 제안한다: AI를 활용해 자동화와 생산성을 높이고 인적 자원에 대한 의존을 줄이는 것, 그리고 커뮤니티의 힘을 활용해 기여를 유도하는 것이다.
-
AI 지원: 방대한 양의 문서를 생성하고 유지하는 데는 막대한 자원이 필요할 수 있다. 대규모 언어 모델(LLM)은 개발자가 고품질 문서를 작성하고 유지하는 데 도움을 줄 수 있다. 또한 AI 기반 Q&A 챗봇은 개발자의 문의에 즉각 정확하게 답변함으로써 경험을 더욱 향상시킬 수 있다.
-
커뮤니티 참여 유도: 커뮤니티 참여를 촉진하기 위해 프로젝트는 재정적·비재정적 인센티브를 포함한 다양한 보상을 제공할 수 있다. 예를 들어, 번역 작업, 코드 기여, 코드베이스 테스트, 문서 개선, 그리고 제품 개선 방향을 직접 알려주는 귀중한 피드백까지도 보상 프로그램(예: 버그 바운티)에 포함시킬 수 있다. 이렇게 하면 자원의 질을 높일 뿐 아니라 유지비용을 줄이는 데도 도움이 될 수 있다. Discord, Substack 등 활발한 커뮤니티 채널을 통해 기여자를 인정하고 칭찬하자.
개발자를 중심에 두고 설계하고, 커뮤니티의 공동 노력으로 매력적인 개발자 경험을 제공한다면, Web3 세계에서 역동적이고 포용적인 개발자 생태계를 육성할 수 있을 것이다!
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














