miles

miles

for starknet

StarkNetの紹介:重要なコンポーネントの概要

以下のテキストを「日本語」に翻訳してください:
本文将对 StarkNet 中的重要组件进行简要解释,不会涉及太多技术细节或代码部分,但希望读者能对 ZK-Rollup(Validity-Rollup)有基本的理解。

同时,由于 StarkNet 的系统设计涉及大量与零知识证明和 Merkle 树相关的数据结构,因此读者也需要大致了解什么是零知识证明和相关的 Merkle 树,这将有助于阅读过程的顺畅!未来可能会继续深入讨论各个系统组件。

简介
StarkNet OS(操作系统)主要由 Cairo 这个 StarkNet 的原生语言编写,Cairo 就像 StarkNet 上的 Solidity,可用于编写(基于 Cairo 的)智能合约,但同时也是一种零知识证明语言,可用于构建 StarkNet 核心操作系统和各种功能。

在 StarkNet 这条链上的所有逻辑都将包含在 StarkNet OS 中,例如如何定义账户状态、交易原理、合约执行,甚至如何进行位运算、哈希运算和原生的签名算法等,都会在这里定义。

总的来说,操作系统需要在交易和合约接收输入之后生成输出,并将这个输出更新到 StarkNet 这个 L2 的状态(State)中。

那为什么要使用零知识证明语言来编写 StarkNet OS 呢,而不是其他常见的语言?

相信大家都知道扩容的其中一个大方向就是 “把繁琐的计算丢到 Off-Chain 并且只要在 On-Chain 做验证即可”,而 StarkNet 作为 ZK-Rollups 的一员,他会将 Cairo 编写的 ZK-STARK 程序执行完的内容通过 STARK-proof system 进行证明(prove)并在 Ethereum 上进行验证(verify)。

もしここまで理解できていない場合でも問題ありません、次のいくつかのセクションでこれらの用語の説明と使用シナリオを補完します!

StarkNet システムの概要
StarkNet Sequencer
StarkNet は、私たちが以前知っていたようなマイナーの役割はありませんが、「トランザクションの検証」、「トランザクションの順序決定」、「ブロックの構築」の役割を果たす必要があります。これらの役割を担当するのが Sequencer です。

Sequencer は、オフチェーンのサーバーであり、ユーザーからのトランザクション(異なるユーザーからの複数の異なるトランザクション)を受け取り、トランザクションの順序を決定し、L2 のブロックを構築します。

Sequencer は、トランザクションがアカウントの所有者によって承認されたことを確認する必要があります(StarkNet はネイティブ AA のアカウントシステムを使用しているため、単純な署名の正当性を確認するだけでなく、マルチサインやその他の検証ロジックが必要になる場合があります)。その後、StarkNet OS を使用してトランザクションを 1 回実行し、EVM に似た概念で、入力を受け取り、契約ロジックを実行し、出力を生成します。

Sequencer がトランザクションを実行すると、トレースが生成されます(このトレースは関数の返り値ではなく、実行プロセスの証明です)。そして、この実行内容の「プロセスの証明」を Prover に送信し、「私はこのコードを実行しました」と伝えます。

次に説明する Prover と Verifier が成功裏に検証した後、Sequencer は L1 の StarkNet コアコントラクトの状態を更新します。

StarkNet Prover & Verifier
Prover もまたオフチェーンのサーバーであり、Sequencer がコードを実行して生成したトレースを受け取り、対応する STARK 証明を生成し、L1 上で実行される Verifier コントラクトによって検証されます。検証に成功した後、Prover は将来の L1 StarkNet コアコントラクトのクエリに対してファクトを登録します。

Verifier コントラクトは、入力と STARK 証明を受け取り、何が合法かを決定するために L1 上で役割を果たします。

補足説明:現在、StarkNet には 1 つの Prover しか存在せず、StarkNet の証明を生成するだけでなく、StarkWare 自体の StarkEx ロールアップ上で実行される他のすべてのアプリケーション(例:Immutable X、dYdX、Sorare など)のために証明を生成します。これがこのサービスが Shared Prover または SHARP と呼ばれる理由です。

StarkNet L1 コアコントラクト
StarkNet L1 コアコントラクトは、L2 上の状態の証明を保持しています。Rollups のセキュリティは Ethereum の L1 によって保証されるとよく言われます。私たちのトレースが Prover によって証明され、L1 の Verifier コントラクトで検証された後、L1 コアコントラクトに「状態の更新」が正しいことを伝えます。

「状態の更新」とは、StarkNet がトランザクションを実行した後に状態が変化することを意味します。L2 上の状態が S から S' に変更されたことを L1 コアコントラクトに正しく伝える必要があります。

L1 コアコントラクトが Verifier からこの更新が合法であることを知った後、Sequencer はコントラクト内で State Root を更新します。

つまり、「この状態の更新が合法である」ということは、オフチェーンの計算が正しく実行されたことを ZKP で証明したことを意味し、ランダムなトランザクション結果を L1 コアコントラクトが状態を更新するためのものではないことを意味します。

また、StarkNet が L1 で定義する必要があるいくつかの操作も、StarkNet L1 コアコントラクトに定義されます。例えば:

公式に認識された Verifier コントラクト(アドレスリスト)
L1 ↔ L2 の相互作用ロジック(メッセージのやり取り方法)
ディスカッション
分散化とオープンソース
Sequencer や Prover などの役割が公式に管理されることは、このチェーンに対してコミュニティの疑問を引き起こす可能性があるため、長期的な発展においてオープンソースは非常に重要です。コードをより多くの目で見ることができるだけでなく、コミュニティの協力と貢献によってシステムをより安全かつ効率的にすることができます。さらに、コミュニティはネットワーク全体を独自に開発およびメンテナンスすることもできます。

StarkNet コミュニティでは、分散化について 2 つの主要な議論があります:

許可なしに動作する Sequencers や Provers は、このネットワークが検閲に対して耐性があることを保証します。
STARK-proofs を使用しているため、誰でも低コストでチェーン全体の正当性を検証することができます。また、第三者に依存する必要もありません。
現在、StarkNet は最新の Sequencer をオープンソース化しており、Prover も近日中にオープンソース化される予定です。興味のある方は以下のリソースを参照してください:

StarkNet 分散化プロトコル III — 共識
オープンソース:StarkNet の新しい Sequencer
オープンソース StarkNet Prover
パフォーマンスとボトルネック
StarkNet のパフォーマンスとガス料金は、これらの数ヶ月間の私自身の使用経験では非常に良くない(時には悪い場合もあり、完全に使用できない場合もあります)。しかし、StarkNet の公式は過去には機能性に重点を置いていたと述べており、現在(Cairo 1.0 のリリース後)は基盤の構築が完了し、開発の重点をパフォーマンスに移す予定です。

StarkNet は、同じブロック生成時間の下で処理できるトランザクション量を増やすことで TPS を向上させることが最善の方法だと考えています。つまり、ブロックの制限を増やす必要があります。したがって、ブロック生成に関連するすべてのコンポーネントは効率を向上させる必要があります。例えば、Sequencer は最大のボトルネックですので、異なるアルゴリズム(先着順から並列処理への変更)、異なるデータ構造(元々は Patricia-Trie)、および新しい Sequencer である Rust(元々は Python)での実装で改善する予定です。

新しい並列化 Sequencer については、以下のリソースを参照してください:

https://twitter.com/starkience/status/1615502502773903361?s=20
https://twitter.com/Starknet/status/1595341405655683072
https://www.youtube.com/watch?v=9IszIArEt1M
この問題に関して、StarkNet は、なぜブロック制限を増やすことが L2 にとって有益であり、L1 にとっては有益ではないのかという説明をしています。その理由は、ブロックサイズが大きすぎると、フルノードへの要件が高くなるため(ノードがチェーンの成長に追いつき、検証を行うことができるようにするため)、ほとんどのユーザーがその要件を満たせず、自己検証ができない場合、ほとんどの人が信頼できない方法でネットワークに参加する必要があります。

結論
StarkNet の紹介文を書くにあたり、多くの参考文献を参照する必要がありました。参照した内容はできるだけすべて記載しました(本文または文末に)。深く理解しようとする人々に助けになることを願っており、StarkNet の研究成果を共有してくれる多くの人々にも非常に感謝しています!

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