IOSG Ventures: 開発者の視点から見たさまざまな ZK Rollup ユーザー エクスペリエンス
原作者: Yiping、IOSG Ventures
TL;DR
原作者: Yiping、IOSG Ventures
Starknet は、2022 年 11 月 29 日にアルファ メインネットを開始します。
Scroll は、2023 年 2 月 27 日に Goerli Alpha テストネットを開始します。
zkSync は、2023 年 3 月 24 日に zkSync Era メインネットを開始します。
Polygon は、2023 年 3 月 27 日に zkEVM メインネット ベータ版を開始します。
これらの多数の ZK ロールアップについて、Solidity 開発者は次のことに興味を持つかもしれません。
どちらがより良い開発者エクスペリエンスを提供しますか?
どちらがより必要な開発者サポートを提供しますか?
プロジェクトを作成する予定がある場合、どれが最適ですか?
ZK Rollup が次々とリリースされる今、ZK Rollup の開発経験を学ぶのに最適な時期です。すべての ZK ロールアップが EVM 互換性を促進していることを考慮すると、開発者エクスペリエンスの調査は Solidity エンジニアの観点から行われます。データ駆動型の回答でこれらの質問を掘り下げてみましょう ⬇️
🐙 ZK ロールアップ コードのオープンソース比較
オープンソースは、品質、セキュリティ、コラボレーションを促進することで開発者のエクスペリエンスを向上させます。その透明性により、世界中の開発者がバグやセキュリティの問題に対処し、ソフトウェアを継続的に改善することができます。 GitHub は学習プラットフォームとして機能し、さまざまなコーディング スタイル、高度なテクニック、業界標準へのアクセスを提供し、開発者の取り組みを豊かにします。開発者は、特定のニーズに応じてコードを変更できます。オープンソースは、多様なコミュニティを通じてコラボレーションとイノベーションを促進し、プロジェクトを前進させます。
プロジェクトは通常、主要なマイルストーンに到達した後、通常はコードが少なくともアルファ リリースに達したときにコードをオープンソース化します。まだ大幅な開発が行われているコードは、品質の向上、セキュリティの向上、共同学習などの期待されるメリットが得られない可能性があるため、オープンソースの候補としては適していません。したがって、オープンソース コードの量は通常、プロジェクト開発の段階に関係します。

すべての ZK ロールアップは、提供する内容は異なりますが、GitHub に多大な労力を費やしています。
📕 プロジェクト言語の選択

Rust は、多くのプロジェクトでコンパイラ、ノード、ツールチェーン、CLI ツール、仮想マシンを構築するための言語として選択されています。
📄 開発ドキュメント
開発ドキュメントは開発者のエクスペリエンスにとって非常に重要です。これらのリソースは、レイヤー 2 ソリューションの複雑さとイーサリアム仮想マシン (EVM) 準拠の開発エコシステムの間のギャップを効果的に埋めます。
プロジェクトごとに、提供されるドキュメントの構造とコンテンツが若干異なります。<>zkSync の機能 AA およびレイヤー 1
レイヤ 2 通信では、詳細なドキュメントとリファレンス コードが提供されます。
次のような改善の余地があることがわかりました。
ファイル名とパスを含める: コード ブロックの先頭に、ファイル名とそのパスを記述します。これは、ユーザーがコードを検索または配置する場所を知るのに役立ちます。
CLI 実行結果の表示: コマンドライン インターフェイス (CLI) コマンドが提供されている場合は、コマンドからのサンプル出力を含めます。これは、ユーザーが何を予期するかを理解し、コマンドが正しく実行されたことを確認するのに役立ちます。
コード行の長さを制限する: コード例の最大行長を設定します。これにより、水平スクロールしなくてもコードが読みやすくなります。
実際の例を使用する: プレースホルダーまたは「xxx」を使用する代わりに、コントラクト アドレスまたは秘密キーの例を提供します。これにより、ユーザーはどのデータを使用すべきかをより深く理解できるようになります。
複雑なチュートリアルのプロジェクト ビュー: より複雑なチュートリアルの場合、チュートリアルの横にプロジェクト ビューが提供されます。ユーザーがチュートリアルをナビゲートするときに、コードの対応する部分を強調表示します。
インタラクティブな例: 開発者を迅速にガイドするのに役立つインタラクティブな例が含まれています。これは、ユーザーがコード スニペットを編集して実行できるプレイ エリア、またはクラウド開発環境である可能性があります。
ドキュメントを整理する: ドキュメントが適切に構造化されており、簡単にナビゲートできるようにしてください。明確な見出しと目次を使用します。

常に最新の状態に保つ: プロジェクトが進化するにつれて、ドキュメントが常に最新の状態に保たれるようにしてください。これは、スクリーンショットの更新、コード サンプルの改訂、または新機能や変更を反映するためのセクションの書き換えを意味する場合があります。
🧑💻 コミュニティとチームの貢献

貢献者の数は、オープンソース コミュニティへの関与のレベルを反映しています。最新の包括的なドキュメントを維持するには、更新の頻度とエンゲージメントが重要です。

貢献者が増えるほど、オープンソース コミュニティはより活発になります。ほとんどのプロジェクトは、最初に稼働したときにドキュメントの更新頻度がピークに達します。
🧑💻 コーディング経験
コーディング エクスペリエンスは、ツールチェーン、エディター エクスペリエンス、およびフレームワークによって異なります。
関連するツールチェーンによって、ローカル開発環境のセットアップ、デバッグ、コードの実行がいかに簡単かが決まります。
エディターのエクスペリエンスがコーディングの速度を決定します。優れたエディター エクスペリエンスには、明確な構文の強調表示、定義、オートコンプリートが含まれている必要があります。

フレームワークは、開発プロセスを大幅にスピードアップする構造化された環境を提供します。これらには、事前構成された関数と再利用可能なライブラリが付属しており、開発者はこれらを利用して、コードをすべて最初から記述することなく効率的にスマート コントラクトを作成できます。
Remix のようなソフトウェアのサポートにより、開発者は独自のローカル環境をセットアップすることなく、迅速に開発を開始できます。現在、このクラウドネイティブな開発エクスペリエンスは、バックエンド スマート コントラクトでのみ利用できます。また、スマート コントラクトやフロントエンドなどの Dapp 開発に対応できるように改善する必要もあります。
ワープがうまくいきません。 Kakarot は StarkNet 互換 EVM の唯一のソリューションになります。 Kakarot は、非常にスムーズな Solidity 開発エクスペリエンスを提供します。コンパイラー、リミックス、ハードハットなどの既存のイーサリアム ツールすべてと互換性があります。
Kakarot は Cairo で書かれた EVM を提供します。 EVM として、Kakarot は EVM バイトコード プログラムを実行でき、イーサリアム スマート コントラクトを StarkNet 上で実行できるようになります。
✍️ テスト
テストはスマート コントラクト開発の重要な側面であり、スマート コントラクトの品質、機能、信頼性を保証します。このプロセスには、各機能が期待どおりに動作することを確認し、展開前に修正する必要があるバグや問題を特定することが含まれます。徹底的なテストを実施することで、開発者はソフトウェアがさまざまなシナリオや条件で正しく機能することを確信できます。このプロセスは、ユーザー エクスペリエンスに影響を与える可能性のある潜在的な障害を防ぐだけでなく、スマート コントラクトの整合性とセキュリティを維持するのにも役立ちます。また、テストは開発者に最適化の可能性を知らせるため、スマート コントラクトの継続的な改善に貢献します。
Tenderly は、スマート コントラクト開発に最適なデバッグ ツールの 1 つです。スマート コントラクト実行シミュレーション、デバッガー、ガス アナライザー、フォーク、警告機能を提供し、開発者が Dapps をより適切に構築できるようにします。ただし、Tenderly は ZK ロールアップをサポートしていません。
近い将来、ZK Rollup をサポートするスマート コントラクトの開発およびデバッグ ツールがさらに登場し、ブロックチェーン テクノロジーのさらなる開発と応用の促進に役立つことを期待しています。
🚢展開
導入プロセスは、スマート コントラクトの開発ライフサイクルにおいて重要です。優れた導入ツールは、開発からオンチェーン環境までスマート コントラクトを導入するための、自動化された一貫性のある信頼性の高いエクスペリエンスを提供します。優れた導入ツールを使用すると、手動の導入タスクの負担が大幅に軽減され、配信時間が短縮され、人的エラーが減少します。

StarkNet のデプロイ手順は Declare と Deploy の 2 つのステップに分かれているため、時間がかかります。
✨レイヤー2の新機能
レイヤ 2 ソリューションは、スケーラビリティ、効率、ユーザー エクスペリエンスという課題を解決する上で重要な役割を果たします。 ZK Rollup はまだ初期段階にありますが、開発者に新たな可能性をもたらす大きな可能性をすでに示しています。
ZK Rollup は、状態差分、シームレスなレイヤー 1 およびレイヤー 2 通信、アカウントの抽象化などの画期的なイノベーションを提供することで、開発者がブロックチェーンで可能なことの限界を押し上げる革新的なプロジェクトを作成できるようにします。これらの高度な機能は、分散型アプリケーションの機能を強化するだけでなく、ブロックチェーン技術の主流の採用への道を開きます。
状態差分
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 ブリッジのコーディング例を提供しました。
アカウントの抽象化
アカウントの抽象化も魅力的な機能です。 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 プロジェクトにとって重要な課題です。
この課題に対処するために、プロジェクトでは 2 つの方向性を検討することをお勧めします。1 つは AI を活用して自動化と生産性を強化すること、大規模な人的リソースの必要性を削減すること、そしてコミュニティの力を活用して貢献を奨励することです。
AI 支援: 大量のドキュメントの生成と維持には、リソースが大量に消費される可能性があります。大規模な言語モデルは、開発者が高品質のドキュメントを作成および維持するのに役立ちます。さらに、AI を活用した Q&A ボットは、開発者の質問に対してタイムリーかつ正確な回答を提供し、開発者のエクスペリエンスをさらに向上させることができます。
コミュニティへの参加を奨励する: コミュニティへの参加を促進するために、プロジェクトは金銭的および非金銭的インセンティブを含むさまざまなインセンティブを提供できます。たとえば、報奨金のようなプログラムは、コードへの貢献、コードベースのテスト、ドキュメントの改善、翻訳作業、およびユーザーから直接得られる貴重な直接のフィードバックを含むように拡張でき、プロジェクト チームが製品を改善するよう導くことができる洞察を反映できます。 。このアプローチは、リソースの品質を向上させる可能性があるだけでなく、メンテナンス コストの削減にも役立ちます。 Discord、Substack などのアクティブなコミュニティ チャネルを通じて、貢献を認め、貢献者にクレジットを与えます。


