IOSG Ventures: 개발자의 관점에서 본 ZK Rollup의 다양한 사용자 경험
원저자: Yiping, IOSG Ventures
TL;DR
원저자: Yiping, IOSG Ventures
Starknet은 2022년 11월 29일 Alpha Mainnet을 출시합니다.
Scroll은 2023년 2월 27일 Goerli Alpha 테스트넷을 출시합니다.
zkSync는 2023년 3월 24일 zkSync Era 메인넷을 출시합니다.
Polygon은 2023년 3월 27일에 zkEVM 메인넷 베타를 출시합니다.
Solidity 개발자로서 이러한 수많은 ZK 롤업을 통해 다음 사항이 궁금할 수 있습니다.
어느 것이 더 나은 개발자 경험을 제공합니까?
어느 것이 더 필요한 개발자 지원을 제공합니까?
프로젝트를 만들 계획이라면 어느 것이 가장 적합합니까?
ZK Rollup이 속속 출시됨에 따라 지금이 ZK Rollup의 개발 경험을 연구하기에 가장 좋은 시기입니다. 모든 ZK Rollup이 EVM 호환성을 홍보하고 있다는 점을 고려할 때 개발자 경험에 대한 탐구는 Solidity 엔지니어의 관점에서 이루어질 것입니다. 데이터 기반 답변으로 이러한 질문을 파헤쳐 보겠습니다 ⬇️
🐙 ZK 롤업 코드 오픈 소스 비교
오픈 소스는 품질, 보안 및 협업을 촉진하여 개발자 경험을 향상시킵니다. 투명성을 통해 전 세계 개발자는 버그 및 보안 문제를 해결할 수 있으므로 소프트웨어를 지속적으로 개선할 수 있습니다. GitHub는 다양한 코딩 스타일, 고급 기술 및 업계 표준에 대한 액세스를 제공하는 학습 플랫폼 역할을 하여 개발자의 여정을 풍부하게 합니다. 개발자는 특정 요구 사항에 따라 코드를 수정할 수 있습니다. 오픈 소스는 다양한 커뮤니티를 통해 협업과 혁신을 장려하고 프로젝트를 추진합니다.
일반적으로 프로젝트는 주요 이정표에 도달한 후(보통 코드가 적어도 알파 릴리스에 도달한 경우) 코드를 오픈 소스화합니다. 아직 상당한 개발이 진행 중인 코드는 품질 향상, 보안 향상 및 공동 학습과 같은 예상되는 이점을 제공하지 않을 수 있으므로 오픈 소스에 적합하지 않습니다. 따라서 오픈 소스 코드의 양은 일반적으로 프로젝트 개발 단계와 관련이 있습니다.

모든 ZK 롤업은 제공하는 내용이 다양하지만 GitHub에 많은 작업을 수행합니다.
📕 프로젝트 언어 선택

Rust는 많은 프로젝트에서 컴파일러, 노드, 도구 체인, CLI 도구 및 가상 머신을 구축하기 위한 선택 언어가 되었습니다.
📄 개발 문서
개발 문서는 개발자 경험에 매우 중요합니다. 이러한 리소스는 Layer 2 솔루션의 복잡성과 EVM(Ethereum Virtual Machine) 준수 개발 에코시스템 간의 격차를 효과적으로 연결합니다.
다른 프로젝트는 약간 다른 문서 구조와 내용을 제공합니다.<>zkSync 기능 AA 및 레이어 1
Layer 2 Communication은 자세한 문서와 참조 코드를 제공합니다.
우리는 다음과 같은 개선의 여지를 발견했습니다.
파일 이름 및 경로 포함: 코드 블록의 시작 부분에 파일 이름과 해당 경로를 언급합니다. 이렇게 하면 사용자가 코드를 찾거나 배치할 위치를 알 수 있습니다.
CLI 실행 결과 표시: 명령줄 인터페이스(CLI) 명령이 제공되면 명령의 샘플 출력을 포함합니다. 이를 통해 사용자는 무엇을 예상해야 하는지 알 수 있고 명령을 올바르게 실행했는지 확인할 수 있습니다.
코드 줄 길이 제한: 코드 예제의 최대 줄 길이를 설정합니다. 이렇게 하면 수평 스크롤 없이 코드를 쉽게 읽을 수 있습니다.
실제 예시 사용: 자리 표시자 또는 'xxx'를 사용하는 대신 예시 계약 주소 또는 비밀 키를 제공하세요. 이를 통해 사용자는 어떤 데이터를 사용해야 하는지 더 잘 이해할 수 있습니다.
복잡한 자습서의 프로젝트 보기: 보다 복잡한 자습서의 경우 자습서 측면에 프로젝트 보기가 제공됩니다. 사용자가 자습서를 탐색할 때 코드의 해당 부분을 강조 표시합니다.
대화형 예제: 개발자를 빠르게 안내하는 데 도움이 되는 대화형 예제가 포함되어 있습니다. 이것은 사용자가 코드 스니펫을 편집하고 실행할 수 있는 플레이 영역 또는 클라우드 개발 환경일 수 있습니다.
문서 구성: 문서가 잘 구성되어 있고 탐색하기 쉬운지 확인하십시오. 명확한 제목, 목차를 사용하십시오.

업데이트 유지: 프로젝트가 진행됨에 따라 문서를 최신 상태로 유지하십시오. 이는 스크린샷 업데이트, 코드 샘플 수정 또는 새로운 기능이나 변경 사항을 반영하기 위한 섹션 재작성을 의미할 수 있습니다.
🧑💻 커뮤니티 및 팀 기여

기여자의 수는 오픈 소스 커뮤니티의 참여 수준을 반영합니다. 최신의 포괄적인 문서를 유지 관리하려면 업데이트 및 참여 빈도가 중요합니다.

기여자가 많을수록 오픈 소스 커뮤니티가 더 활성화됩니다. 대부분의 프로젝트는 처음 실행될 때 최고 문서 업데이트 빈도에 도달합니다.
🧑💻 코딩 경험
코딩 경험은 도구 체인, 편집기 경험 및 프레임워크에 따라 다릅니다.
관련 도구 체인은 로컬 개발 환경 설정, 디버그 및 코드 실행이 얼마나 쉬운지 결정합니다.
편집자 경험은 코딩 속도를 결정합니다. 우수한 편집기 환경에는 명확한 구문 강조 표시, 정의 및 자동 완성 기능이 포함되어야 합니다.

프레임워크는 개발 프로세스를 크게 가속화하는 구조화된 환경을 제공합니다. 개발자가 처음부터 모든 코드 라인을 작성하지 않고도 스마트 계약을 효율적으로 작성하는 데 활용할 수 있는 사전 구성된 기능과 재사용 가능한 라이브러리가 함께 제공됩니다.
Remix와 유사한 소프트웨어 지원을 통해 개발자는 자체 로컬 환경을 설정하지 않고도 빠르게 개발을 시작할 수 있습니다. 현재 이 클라우드 네이티브 개발 환경은 백엔드 스마트 계약에만 사용할 수 있습니다. 또한 스마트 계약 및 프런트 엔드를 포함하여 Dapp 개발을 수용하기 위해 개선해야 합니다.
워프가 잘 안되네요. Kakarot은 StarkNet 호환 EVM을 위한 유일한 솔루션이 될 것입니다. Kakarot은 매우 원활한 Solidity 개발 경험을 제공합니다. Compiler, Remix 및 Hardhat과 같은 기존의 모든 Ethereum 도구와 호환됩니다.
카카로트는 카이로로 작성된 EVM을 제공합니다. EVM으로서 Kakarot은 EVM 바이트코드 프로그램을 실행할 수 있어 이더리움 스마트 계약이 StarkNet에서 실행될 수 있습니다.
✍️ 테스트
테스트는 스마트 계약의 품질, 기능 및 신뢰성을 보장하는 스마트 계약 개발의 중요한 측면입니다. 이 프로세스에는 각 기능이 예상대로 작동하는지 확인하고 배포 전에 수정해야 하는 버그 또는 문제를 식별하는 작업이 포함됩니다. 철저한 테스트를 수행함으로써 개발자는 소프트웨어가 다양한 시나리오와 조건에서 올바르게 작동할 것임을 확신할 수 있습니다. 이 프로세스는 사용자 경험에 영향을 미칠 수 있는 잠재적인 실패를 방지할 뿐만 아니라 스마트 계약의 무결성과 보안을 유지하는 데 도움이 됩니다. 테스트는 또한 개발자에게 잠재적인 최적화를 알려주므로 스마트 계약의 지속적인 개선에 기여합니다.
Tenderly는 스마트 계약 개발을 위한 최고의 디버깅 도구 중 하나입니다. 스마트 계약 실행 시뮬레이션, 디버거, 가스 분석기, 포크 및 경고 기능을 제공하여 개발자가 Dapp을 더 잘 구축할 수 있도록 도와줍니다. 그러나 Tenderly는 ZK 롤업을 지원하지 않습니다.
가까운 장래에 ZK Rollup을 지원하는 더 많은 스마트 계약 개발 및 디버깅 도구를 볼 수 있기를 바랍니다. 이는 블록체인 기술의 추가 개발 및 적용을 촉진하는 데 도움이 될 것입니다.
🚢 배포
배포 프로세스는 스마트 계약 개발 수명 주기에서 매우 중요합니다. 우수한 배포 도구는 개발에서 온체인 환경에 이르기까지 스마트 계약을 배포하기 위한 자동화되고 일관되며 안정적인 경험을 제공합니다. 우수한 배포 도구는 수동 배포 작업의 부담을 크게 줄여 제공 시간을 단축하고 인적 오류를 줄일 수 있습니다.

StarkNet의 배포 단계는 Declare와 Deploy의 두 단계로 나누어져 있어 시간이 오래 걸립니다.
✨레이어 2의 새로운 기능
레이어 2 솔루션은 확장성, 효율성 및 사용자 경험 문제를 해결하는 데 중요한 역할을 합니다. ZK Rollup은 아직 초기 단계에 있지만 이미 개발자를 위한 새로운 가능성을 열 수 있는 큰 잠재력을 보여줍니다.
State-diff, 원활한 Layer 1 및 Layer 2 통신, 계정 추상화와 같은 획기적인 혁신을 제공함으로써 ZK Rollup은 개발자가 블록체인으로 가능한 것의 경계를 확장하는 혁신적인 프로젝트를 만들 수 있도록 합니다. 이러한 고급 기능은 분산 응용 프로그램의 기능을 향상시킬 뿐만 아니라 블록체인 기술의 주류 채택을 위한 길을 열어줍니다.
상태 차이
StarkNet 및 zkSync Era는 이론적으로 낮은 수수료를 초래할 수 있는 상태 디핑 기술을 사용합니다. 데이터 압축 및 스토리지 비용 절감을 허용하는 트랜잭션 입력이 아닌 상태 차이만 게시합니다. 이것은 게임 개발자에게 도움이 될 것입니다.
Layer 1 <>Polygon zkEVM은 향후 몇 년 동안 예상되는 데이터 스토리지 비용 절감에 의존하여 모든 트랜잭션 입력을 온체인에 게시합니다.
레이어 2 통신<>대부분의 ZK 롤업은 레이어 1을 제공합니다.<>레이어 2 통신 기능. 예를 들어 zkSync Era는 레이어 1을 제공합니다.
레이어 2 통신의 거버넌스 예. 레이어 1에서 계약은 레이어 2 계약의 실행을 시작할 수 있습니다. 레이어 2에서 레이어 2 계약은 레이어 1 계약에만 메시지를 보낼 수 있습니다. 그런 다음 레이어 1에서 수신된 메시지를 처리할 수 있습니다. 마찬가지로 Polygon은 L1과 L2 간에 정보를 공유하기 위해 교차 체인 통신을 사용하여 Nft-bridge에서 코딩 예제를 제공했습니다.
계정 추상화
계정 추상화는 또 다른 흥미로운 기능입니다. zkSync Era는 네이티브 AA를 제공합니다. zkSync Era의 계정은 EOA와 같은 트랜잭션을 시작할 수 있지만 스마트 계약과 같은 임의의 논리를 구현할 수도 있습니다. zkSync는 기본적으로 AA를 구현하므로 계정에 추가 프록시 계약이 필요하지 않습니다. EIP-4337 단독으로는 불가능한 정상적인 EOA에서도 가스비 지불 없이 거래가 가능합니다. Polygon zkEVM 및 Scroll은 EVM 호환 AA를 구현합니다. StarkNet은 계정 추상화 작업도 진행하고 있습니다. 서명을 추상화하고 지불을 추상화하려고 합니다.
💭 개발자 경험에 대한 향후 개선 사항
이 연구에서 우리는 이러한 ZK Rollup 프로젝트가 지속적으로 제품을 개선하고 개발자를 지원하기 위해 많은 노력을 기울였다고 느낍니다. 그러나 우리는 아직 블록체인 적용 초기 단계에 있고 상대적으로 적은 개발자 기반에 직면해 있다는 점을 고려할 때 개발자 경험을 개선하기 위해 노력하는 것은 의심할 여지 없이 프로젝트가 미래 개발자를 유치하고 궁극적으로 업계의 미래를 형성하는 데 도움이 될 것입니다.
다음은 개발 주기 지원 개선을 위한 몇 가지 일반적인 제안입니다.
1, 문서:
고품질 문서: 포괄적이고 명확한 최신 문서는 개발자 경험을 개선하는 데 중요합니다. 문서가 완전하고 명확하며 예제가 포함되어 있고 정기적으로 업데이트되는지 확인하십시오.
직관적인 API 설계: API는 일관되고 직관적이며 잘 문서화되어야 합니다. API 문서의 명확성 및 접근성과 일반적인 작업을 수행할 수 있는 용이성을 기반으로 API 디자인을 평가합니다.
전체 API 참조 및 변경 로그: 함수, 매개변수, 반환 값 및 오류 코드를 포함하여 자세한 API 참조를 제공합니다. 업데이트, 새로운 기능, 버그 수정 및 더 이상 사용되지 않는 기능을 추적하는 변경 로그를 유지합니다.
사례 연구: 효과적인 문제 해결에 대해 개발자에게 영감을 주고 교육할 수 있는 제품 응용 사례를 보여줍니다.
원활한 온보딩 경험: 환경 설정을 간소화하고 핵심 개념을 설명하고 기본 애플리케이션 생성을 용이하게 하여 신규 개발자의 시작 시간을 단축합니다.
2. 가용성 및 효율성:
도구의 유용성: 제공된 도구가 사용자에게 친숙하고 직관적인지 확인하십시오. 사용 편의성은 개발자가 일반적인 작업을 수행하는 데 걸리는 시간을 평가하여 측정됩니다.
오류 메시지 및 디버깅 지원: 유용한 오류 메시지와 강력한 디버깅 지원으로 개발자 경험을 개선합니다. 의도적으로 일반적인 오류를 생성한 다음 시스템의 응답이 얼마나 유용한지 확인하여 이를 측정할 수 있습니다.
통합 및 호환성: 도구 또는 플랫폼이 생태계에서 일반적으로 사용되는 다른 도구와 얼마나 잘 통합되는지 평가합니다.
3. 투명성 및 업데이트:
제품 상태: 운영 문제, 유지 관리 일정 및 시스템 중단에 대한 시기 적절한 업데이트는 개발자가 작업을 효과적으로 계획하는 데 도움이 됩니다.
Web3 공간의 급속한 기술 발전으로 인해 확장 가능하고 지속 가능한 방식으로 높은 수준의 개발자 경험을 지속적으로 유지하는 것은 Web3 프로젝트의 중요한 과제입니다.
이 문제를 해결하기 위해 우리는 프로젝트에서 AI를 활용하여 자동화 및 생산성을 향상시키고, 광범위한 인적 자원의 필요성을 줄이고, 커뮤니티의 힘을 활용하여 기여를 장려하는 두 가지 방향을 모색할 것을 권장합니다.
AI 지원: 많은 양의 문서를 생성하고 유지 관리하는 데 리소스가 많이 사용될 수 있습니다. 대규모 언어 모델은 개발자가 고품질 문서를 작성하고 유지 관리하는 데 도움이 될 수 있습니다. 또한 AI 기반 Q&A 봇은 개발자의 질문에 시기적절하고 정확한 답변을 제공하여 경험을 더욱 향상시킬 수 있습니다.
커뮤니티 참여 장려: 커뮤니티 참여를 촉진하기 위해 프로젝트는 금전적 및 비금전적 인센티브를 포함한 다양한 인센티브를 제공할 수 있습니다. 예를 들어 포상금과 같은 프로그램은 코드 기여, 코드베이스 테스트, 문서 개선, 번역 노력, 사용자가 직접 제공하는 귀중한 직접 피드백을 포함하도록 확장되어 프로젝트 팀이 제품을 개선하도록 안내할 수 있는 통찰력을 반영할 수 있습니다. . 이 접근 방식은 리소스 품질을 개선할 수 있을 뿐만 아니라 유지 관리 비용을 줄이는 데도 도움이 됩니다. Discord, Substack 등과 같은 활성 커뮤니티 채널을 통해 기여를 인정하고 기여자에게 크레딧을 부여합니다.


