miles

miles

for starknet

カイロ言語とは何ですか?

カイロ紹介
チューリング完全なゼロ知識証明システム言語として謳われるカイロは、Solidity に慣れ親しんでいる開発者にとっては比較的難しくて馴染みのないものです。さらに、ライブラリがまだ充実していないため、現在サポートされているハッシュ関数は Pedersen であり、デジタル署名アルゴリズムは ECDSA です(SNARK に比べて EdDSA の性能が劣るため、サポートされていません)。

しかし、カイロはまだ早期開発段階にあり、開発体験はますます向上すると信じています。

また、証明システムとして、プルーバーとベリファイヤーの役割があります。STARK のベリファイヤーはオープンソースですが、プルーバーのソフトウェアはライセンスで保護される予定です。通常、プルーバーは商業目的には使用できませんが、証明を公式のベリファイヤーにアップロードする場合は例外です。

CAIRO のアルファベットの意味は次のとおりです。

C: CPU
AIR: Algebra Intermediate Representation
O: One AIR(verifier smart contract) to rule them all

カイロは、StarkNet 向けに開発された専用のプログラミング言語であり、StarkNet プラットフォームで実行されるスマートコントラクトを記述するために設計されています。カイロ言語の設計思想、特徴、応用シナリオ、他のブロックチェーンプログラミング言語との比較、およびブロックチェーン領域での将来の発展について理解することが重要です。

ブロックチェーン技術の発展、特にイーサリアムスマートコントラクトの普及に伴い、より効率的で安全なブロックチェーンプログラミング言語への需要がますます高まっています。Cairo(Computable Arbitrary Input Output)言語は、この需要に対応するために生まれたものであり、特に StarkNet の STARK 証明技術と組み合わせて、より効率的で安全なスマートコントラクトのプログラミング方法を提供します。

カイロの設計思想
セキュリティ:カイロはスマートコントラクトのセキュリティを向上させることを目指しています。その設計により、プログラミングエラーの可能性が減少し、複雑で安全なコントラクトの作成をサポートします。

効率性:カイロは STARK 証明に最適化されており、大量の計算を効率的にサポートしながら、コントラクトの高速な実行を維持します。

柔軟性:カイロはオブジェクト指向および関数型プログラミングを含むさまざまなプログラミングパラダイムをサポートし、開発者に幅広い柔軟性を提供します。

カイロ言語の特徴
STARK 証明との緊密な結びつき:カイロは STARK 証明技術と緊密に結びついており、ゼロ知識証明の生成と検証が可能です。これはスマートコントラクトの安全性とプライバシーを確保するために重要です。

拡張性:カイロは高度に拡張可能なスマートコントラクトの作成をサポートし、さまざまな複雑なアプリケーションの要件に対応します。

独自のプログラミング構造:カイロは独自の制御フローとデータ構造を導入しており、従来のプログラミング言語とは異なる特徴を持っています。

メモリモデル:カイロは独自のメモリモデルを採用しており、コントラクトの状態を実行中に効率的に変更およびアクセスすることができます。

他のブロックチェーンプログラミング言語との比較
カイロは他のブロックチェーンプログラミング言語(Solidity や Vyper など)と比較して、独自の利点と特徴を持っています。Solidity と比較して、カイロはセキュリティと効率性の面で明らかな改善があります、特に複雑なロジックや大規模なデータの処理においてです。ただし、カイロの新規性のため、従来のプログラミング言語に慣れている開発者にとっては学習曲線が比較的急な場合があります。

応用シナリオ
カイロは広範な応用シナリオに適しており、特に高いセキュリティと効率性が必要なアプリケーション(DeFi、ゲーム、サプライチェーン管理など)に適しています。STARK 証明技術との組み合わせにより、ユーザーのプライバシーを保護する必要があるアプリケーションに特に適しています。

開発環境
Cairo には、Remix のようなブラウザ IDE であるプレイグラウンドが提供されています。ここでは、さまざまな例やチャレンジを提供しており、コンパイルだけでなく、プルーフを直接生成してアップロードすることもできます。

注:ただし、プレイグラウンドではカスタム入力をプログラムに提供するなど、一部の機能は使用できません。この場合、ローカルで開発する必要があります。

Cairo を開発するには、まず Python をインストールする必要があります。開発者のドキュメントから整理した情報は、次の hackmd ドキュメントにまとめられています:https://hackmd.io/w690dpAQTsKeKZv3oikzTQ

それには紹介、ローカル開発環境のセットアップ、および Cairo の基礎が含まれています(範囲の都合上、ここに内容をコピーしません)。

StarkNet Cairo
Cairo の第 2 版は、機能的には第 1 版とほぼ同じですので、開発者のドキュメントで学んだ Cairo が StarkNet バージョンでは使用できないか、または大きく異なるか心配する必要はありません。Hello Cairo/How Cairo works を読み終えたら、Hello StarkNet を続けて読むことができます。StarkNet バージョンの Cairo にスムーズに切り替えることができます。

注 1:私が整理したドキュメントは、第 1 版の Cairo に基づいています。

注 2:開発者のドキュメントを最後まで読んで、StarkNet バージョンの Cairo を体験した場合、これは一般的なスマートコントラクトの使用方法に似ていることに気付くでしょう - ビュー関数を使用してストレージ変数をクエリでき、外部関数を使用してコントラクトを実行できます(非 StarkNet バージョンでは、DApp を操作する方法は異なりますが、ここでは詳細に説明しません)。

Cairo の 2 つのバージョンを試すことを強くお勧めします。L2 上で単独の DApp を操作する方法と、他の DApp と共に Rollup 上で操作する方法の違いを知ることができます。これは L2 の動作原理、必要な情報、なぜその情報が必要なのかを理解するのに非常に役立ちます。

StarkNet Cairo の 0.0.2 バージョンにはまだいくつかの機能が欠けています:

関数で配列や構造体のパラメータを宣言することができません
コントラクト間の相互作用がまだできません
L1 から L2 のデータを読み取ることはできず、L2 から L1 のデータも読み取ることはできません。L2 間のブリッジを構築する場合、この機能は非常に重要です。
補足と個人的な感想
SNARK シリーズのプルーフサイズに比べて、STARK のプルーフサイズははるかに大きく、プルーフに含まれるトランザクションの数はプルーフサイズや検証時間にほとんど影響しません。そのため、多くのトランザクションをまとめて 1 つのプルーフとすることは、STARK にとって非常に有利でコストを節約する方法です(SNARK、STARK の比較表)。ただし、これは同時に欠点でもあります。DApp や Rollup の TPS が低い場合、より多くのトランザクションを収集するためにはより長い時間を待たなければならず、それ以外の場合はプルーフの検証頻度を維持するためにコストを増やさなければなりません。

StarkWare と zkSync は、Rollup ユニバースの概念を持っています(Rollup ユニバースという用語は正確ではありませんが、彼らの宇宙ではすべてのサブチェーンが Rollup ではなく、データの可用性の度合いによって区別される Validium、zk Porter などの設計があります)。個人的には(データの可用性の度合いに基づく)選択肢が 1 つの選択肢(完全にデータが利用可能)よりも良い方法だと思いますが、実際の実現可能性は、彼らのチームがさらに情報を公開するのを待つ必要があります。

Rollup がより成熟するにつれて、Rollup 間の迅速なクロスロールアップサービスを提供できる流動性プロバイダーの役割がますます重要になります。zk Rollup(StarkNet、zkSync など)は、Optimistic Rollup(Optimism、Arbitrum など)に比べてはるかに短い最終化時間を持っており、流動性プロバイダーのリスクを低減するのに大きな助けとなりますが、現時点では zk Rollup は契約機能や L1 <-> L2 の相互作用の完成度も Optimistic Rollup よりも低いです。短期的には、クロスロールアップサービスは引き続き Optimitic Rollup 間に限定されるでしょう。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。