イーサリアムは遅くて高いですか? ETHレイヤー2のスケーリングソリューションと監査ガイド

中級9/24/2024, 1:06:47 PM
ETH Layer2は、Rollupsを使用して数百の取引を1つの送信にまとめ、これにより取引手数料はすべてのRollupユーザーに分割され、ユーザーごとの手数料が削減されます。Rollups内の取引データはLayer1に送信されますが、実行はRollupsによって独立して行われます。Layer1に取引データを送信することで、RollupsはEthereumのセキュリティを継承することができます。なぜなら、一度データがLayer1にアップロードされると、Rollupsの取引を取り消すにはLayer1でデータを巻き戻す必要があるからです。

ブロックチェーンの3つの中核的な特性は、分散、セキュリティ、およびスケーラビリティです。ブロックチェーンのトリレンマ理論によれば、ブロックチェーンアーキテクチャはこれらのうち2つしか実装できません。イーサリアムは分散とセキュリティを重視して設計されており、そのためスケーラビリティにおいては性能が低いです。現在、イーサリアムは1日に100万件以上の取引を処理しており、これにより取引手数料が高騰し、イーサリアムのスケーリングソリューションへの需要が高まっています。

イーサリアムのスケーリングソリューションには、レイヤー1のシャーディング、レイヤー2のステートチャネル、プラズマ、サイドチェーン、ロールアップ、バリディウムなど、それぞれのトレードオフとセキュリティモデルを持ついくつかの異なるタイプがあります。シャーディング技術は進化が遅く、実装が複雑で、サイドチェーンとバリディウムはイーサリアムからセキュリティとデータの可用性を継承できないため、現在、イーサリアムエコシステムでは主にロールアップのスケーリングソリューションが使用されています。

Beosinはこれまでに、Manta NetworkやStarkNetなどのETH Layer2のセキュリティパートナーとなりました。過去の監査では、Ronin Network、Manta Network、Merlin Chain、Clover、Self Chain、Crust Networkなど、多くの有名なブロックチェーンがBeosinのチェーンセキュリティ監査に合格しています。Beosinは現在、ETH Layer2向けの監査ソリューションをリリースし、ETH Layer2エコシステムの包括的なセキュリティ監査サービスを提供しています。

ETH Layer2は、複数のトランザクションを1つの送信にパッケージ化するためにRollupsを使用し、それによりトランザクション手数料はすべてのRollupユーザーに分割され、ユーザーごとの手数料が削減されます。 Rollups内のトランザクションデータはLayer1に提出されますが、実行はRollupsによって独立して行われます。 Layer1にトランザクションデータを提出することで、Rollupsはイーサリアムのセキュリティを継承できます。なぜなら、データがLayer1にアップロードされると、Rollupsのトランザクションを取り消すには、Layer1上のデータを取り消す必要があるからです。

現在、Rollupsは主に2つの方法で実装されることがあります:

Optimistic Rollups:経済的インセンティブとゲーム理論を利用して、Arbitrum、Base、OP、Blastなどのようなトランザクションを検証します。

ゼロ知識ロールアップ:Scroll、Linea、zkSync、StarkNetなどのセキュリティとプライバシーのためにゼロ知識証明を使用します。

オプティミスティックロールアップ

イントロ

オプティミスティックロールアップは、計算と状態の保存をオフチェーンに移動することで、Ethereumのスケーリングを実現する方法です。トランザクションはオフチェーンで実行されますが、トランザクションデータはcalldataまたはblobとしてメインネットに公開されます。

オプティミスティック・ロールアップは、ロールアップ契約と呼ばれるスマート契約をイーサリアム上に展開し、ロールアップの状態を管理し、ユーザーの残高を追跡し、預金、引き出し、紛争解決を処理します。トランザクションは、シーケンサによってオフチェーンで収集され要約され、複数のトランザクションがロールアップブロックにバンドルされ、新しいアカウントの状態(Merkleルート)の要約と暗号証明を含みます。その後、シーケンサはMerkleルートとcalldataを提供してロールアップブロックをメインチェーンにコミットします。

オプティミスティックロールアップは、オフチェーントランザクションが有効であることを前提とし、オンチェーンにプッシュされたトランザクションバッチの有効性の証明を公開しないため、「楽観的」と見なされます。対照的に、オプティミスティック ロールアップは、不正防止スキームに依存して、トランザクションが正しく計算されないケースを検出します。イーサリアムでロールアップバッチを送信した後、誰でも不正の証拠を計算することでロールアップトランザクションの結果に異議を唱えることができる期間(チャレンジ期間と呼ばれる)があります。不正の証明には、検証者が不正であると考える特定の取引の詳細が含まれています。

下の図に示すように、現在のほとんどの楽観的ロールアップの挑戦期間は7日間で、最短のものは1日です。

チャレンジ期間中、誰でも詐欺の証拠を計算して取引結果に対して異議を申し立てることができます。取引が無効である場合、ロールアップブロックは取り消され、チャレンジャーは報酬を得、シーケンサーは罰せられます。

ロールアップバッチがチャレンジ期間終了後も異議を唱えられない場合(つまり、すべてのトランザクションが正しく実行された場合)、それは有効とみなされ、イーサリアム上で受け入れられます。他の人は未確認のロールアップブロックを拡張し続けることができますが、トランザクションの結果は以前に公開されたエラーに基づいて実行される場合には逆になりますので、ご注意ください。

最後に、ユーザーは、レイヤー2からレイヤー1に資金を引き出すために、Rollup契約に引き出しリクエストを提出する必要があります。契約は、ユーザーがRollup上に十分な資金を持っているかどうかを検証し、それに応じてメインチェーン上の残高を更新します。

主要なLayer2ネットワーク

  1. Arbitrum

生態建設とエアドロップを通じて、Arbitrumは急速にETH Layer2で最も活発なネットワークとなり、TVLが27億ドルを超えました。大規模なエアドロップの後、ArbitrumチームはArbitrum関連技術を使用してLayer3を構築する開発者を奨励するArbitrum Orbitプログラムを開始しました。Beosinは、ArbSwap、Arbipadのセキュリティ監査を完了し、Arbitrumエコシステムのセキュリティ開発を支援しています。

  1. Optimism

OptimismはArbitrumよりも生態系活動が少ないですが、Optimismが2023年にローンチしたOP Stackは、モジュラーレイヤー2を構築するための完全で実用的なソリューションとして広く産業界で認識されています。OP Stackを使用して25以上のレイヤー2ネットワークが構築されており、Base、Mantle、Manta、OP BNB、Celoなどのスタープロジェクトが含まれています。Optimism上に構築されたDIPX FinanceとStarnetはBeosinのセキュリティ監査を通過しました。

  1. ベース

Baseは、OP Stackに基づくLayer2ネットワークであり、エコロジカルな活動とTVLの面でArbitrumに次ぐものです。以前、BeosinはBaseのアーキテクチャとセキュリティリスクを詳しく分析し、Surf ProtocolとEDAを監査して、プロジェクト所有者やユーザーがセキュリティリスクを回避できるよう支援しました。

  1. 爆発

「ビッグバン」開発者コンテストの終盤で、BlastはTVLが20億ドルを超え、Layer2回路に位置付けられました。Blastのメインネットローンチ前に、BeosinはBlastのネットワークセキュリティを分析しました。Blastは不正証明を実装していないため、資産はマルチシグネチャウォレットに保持され、Rollupブリッジではなく、中央集権リスクが高いです。BeosinはWand Protocol、Zest、Kalaxなど、いくつかのBlast生態系プロジェクトを監査しています。

アーキテクチャ分析

Optimistic Rollupsのための成熟したフレームワークであるOP Stackは、複雑なOptimistic Rollupsチェーンの構築プロセスを簡略化するために、完全なソフトウェアコンポーネント、ツール、およびフレームワークを提供することで基本的なプロセスを提供します。ここでは、Op stackフレームワークを例に挙げて、Optimism Rollupsの典型的なアーキテクチャを分析します。

● 実行ノード: Op-gethは、Layer2固有の機能(Layer1からのトークンの入金など)を処理するEthereumの拡張実行クライアントです。このレイヤーでは、状態変化を実行するためのすべての機能が定義されています。ここでは、サマリーノード(シーケンスとバリデーター)からエンジンAPIを介して受け取った入力に基づいて状態遷移がトリガーされます。

● Rollupノード:シーケンサーとバリデーターを含みます。コレーターはレイヤー2から処理されたトランザクションをバッチ処理し、レイヤー1に公開する責任があります。シーケンサーはレイヤー2チェーン上でのトランザクションの収集と公開方法を定義します。バリデーター/検証者はバッチトランザクションの妥当性をチェックし、不正行為が検出された場合は証拠を提出します。

● Fraud Proof: CannonはGethのアップグレードバージョンであり、詐欺検出および証明フェーズ中にEVMを実行する責任があります。基本的には、シーケンサとバリデータとAPIを介して協調し、誤ったトランザクションを証明するオンチェーンの紛争エンジンです。

● バッチコミット: シーケンサーは、検証者によって検証されたすべての処理済みトランザクションを一度にバッチ処理し、シーケンサーはバッチ処理されたトランザクションをLayer1に送信します。

● ブリッジ契約:EthereumおよびLayer2に展開され、ユーザーがLayer1とLayer2の間でメッセージを送信し、資産を移動することを可能にします。

オプティミスティック・ロールアップの技術アーキテクチャーにおいて、L1とL2の間を移動するユーザー資産のセキュリティを確保することが不可欠です。以下に、ユーザーが2つのレイヤー間でアセットにアクセスする方法と、システムがこれらのトランザクションの整合性とセキュリティを維持する方法について詳しく説明します。

● Rollupへのアセットブリッジング:ユーザーは、レイヤー1のRollupのチェーンブリッジ契約に資金を預けます。チェーンブリッジ契約はトランザクションをレイヤー2に中継し、同じ量のアセットがオプティミスティックロールアップでユーザーが選択したアドレスに送られるようになります。

ユーザー生成のトランザクション(例:Layer1からLayer2への入金)は通常、隔離状態がそれらをRollup契約に再提出するまでキューイングされます。しかし、検閲耐性を維持するために、オプティミスティックロールアップは、トランザクションの遅延が最大許容時間を超える場合に、ユーザーがオンチェーンのRollup契約に直接トランザクションを提出できるようにします。

● ロールアップから資産を引き出す:詐欺証明メカニズムにより、Optimistic RollupからEthereumへの資金を引き出すことはより複雑です。ユーザーがLayer2からLayer1への取引をイニシエートしてLayer1で管理されている資金を引き出す場合、彼らは通常約7日間続くチャレンジ期間の終了を待たなければなりません。

ユーザーがRollup上で引き出しリクエストを開始すると、トランザクションは次のバッチに含まれ、ユーザーのRollup上の資産は破棄されます。バッチがEthereum上に公開されると、ユーザーはMerkleプルーフを計算して自分の出口トランザクションがブロックに含まれていることを確認できます。次のステップは、遅延期間の終了を待ってLayer1上でトランザクションを完了し、資金をメインネットに引き出すことです。

イーサリアムからお金を引き出す前に1週間待つことを避けるために、Optimistic Rollupのユーザーは流動性提供者(LP)から前渡しをリクエストすることができます。LPは保留中の引き出しの所有権を引き受け、手数料と引き換えにLayer1でユーザーに資金を支払います。流動性提供者は、資金をリリースする前にオンチェーンデータを自分で確認することで、ユーザーの引き出しリクエストの妥当性を検証できます。これにより、彼らは取引が最終的に確認されることを確認し、信頼の確実性を実現できます。

監査項目

Layer2は完全なブロックチェーンシステムであり、したがって、パブリックチェーンの一般的な監査はオプティミスティックロールアップにも適用されます。この記事の末尾に詳細が記載されています。

また、その特性上、楽観的ロールアップは追加の数々の監査を必要とします。

● データの可用性の証明:レイヤー2トランザクションデータがレイヤー1で利用可能であることを確認し、データの損失を防ぎます。

●データ同期メカニズム:Layer1とLayer2の間のデータ同期メカニズムが正常かどうか、およびネットワークの分断などの異常な状況を処理できるかを確認します。

● 詐欺証明契約:詐欺証明契約が正しく実装されていることを確認します。

● チャレンジ期間メカニズム:チャレンジ期間の長さが適切かどうか、および不正証明が指定された時間内に完了できるかどうかを確認します。

● 詐欺証拠提出プロセス:詐欺の証拠を提出するプロセスが安全であることを確認してください。

● 入金および出金プロセス:Layer1からLayer2への入金およびLayer2からLayer1への出金プロセスを確認し、プロセスが安全であることを確認します。

● アセットの鋳造と破棄: レイヤー2上でのアセットの鋳造と破棄ロジックを確認し、レイヤー1のアセットとの正しい対応を保証します。

● リクイディティプロバイダーメカニズム:もしリクイディティプロバイダー(LP)メカニズムが存在する場合、LPの運用プロセスとそのセキュリティを検討する必要があります。

ゼロ知識ロールアップ

イントロ

Zero-Knowledge(ZK)ロールアップは、ゼロ知識証明に基づくLayer2です。主に複雑な計算と証明の生成をオフチェーンで行い、証明をオンチェーンで検証し、データの一部を保存してデータの可用性を確保します。

ZK Rollupは、独立して動作するオフチェーンプロトコルである「ハイブリッドスケーリングソリューション」ですが、イーサリアムからセキュリティを取得します。具体的には、イーサリアムネットワークは、ZKロールアップのステータス更新の有効性を強制し、ロールアップステータスが更新されるたびにバックグラウンドデータの可用性を保証します。Rollupの状態は、イーサリアムネットワーク上にデプロイされたスマートコントラクトによって維持されています。このステータスを更新するには、ZK Rollups ノードが検証のために有効性の証明を送信する必要があります。有効性の証明は、提案された状態の変化が実際に特定のトランザクションのバッチを実行した結果であるという暗号化の保証です。つまり、ZK Rollupsは、すべてのトランザクションデータを公開することなく、イーサリアム上でトランザクションを完了するための有効性の証明を提供するだけで済みます。

ZKロールアップからイーサリアムへの資金移動に遅延はありません。ZKロールアップ契約が有効性の証明を検証した後、出口トランザクションが実行されます。一方、オプティミスティックロールアップから資金を引き出すと、出口トランザクションに対して詐欺の証拠を使用して誰でも出口トランザクションを実行し遅延が発生します。

主要なLayer2ネットワーク

  1. zkSync

zkSyncは、Matter Labsチームによって5年前に立ち上げられたL2ソリューションであり、ゼロ知識証明技術を使用して効率的なトランザクションの検証を可能にしています。zkSyncは、ZKロールアップを使用した最も生態学的に活発なLayer2ネットワークの1つであり、zkSyncはまた物議を醸しています。Beosinは以前、その主要なDeFiプロジェクトであるSyncSwapのコード品質、契約ロジックとセキュリティ、運用モデルなどをカバーした監査を実施しました。

  1. StarkNet

StarkNetは、トランザクションの処理速度を向上させ、手数料を削減するためにZK-STARKを使用してLayer2を構築します。StarkNetにはネイティブ仮想マシン(Cairo VM)と開発言語Cairoがあり、これにより開発者はスマートコントラクトをより安全かつ簡単に記述できます。Beosinは、Option DanceとReddioのセキュリティ監査を完了し、StarkNetの公式セキュリティパートナーになりました。2024年8月13日、ReddioはParadigmに率いられたシードファンディングラウンドを閉じ、高性能な並列EVM Layer2ネットワークを構築することになりました。

  1. スクロール

スクロールは、ゼロ知識証明技術によってスケーリングされ、ハードウェアがゼロ知識証明の生成と検証を高速化し、バイトコードレベルのEVM互換性を実現することを目指しています。これは、開発者がSolidityやEthereum関連の開発ツールを直接使用してスマートコントラクトを構築できることを意味します。

アーキテクチャ分析

ZK Rollupsの一般的なフレームワークには、RollupおよびBridge契約、コレクタ、集約機、リピータ、およびゼロ知識証明を生成するRollerネットワークが含まれます。具体的なアーキテクチャは以下の図に示されています。

● Rollup契約とブリッジ契約:

Rollup契約は、Rollup取引のデータ可用性を提供し、zkEVMの有効性の証明を検証し、ユーザーがイーサリアムとRollupの間で資産を移動することを可能にします。それは、Layer 2のステートルートとブロックをコレクタから受け取り、ステートルートはイーサリアムのステートに保存され、レイヤー2のブロックデータはイーサリムのcalldataとして保存されます。

ブリッジ契約はEthereumとLayer2に展開され、ユーザーはLayer1とLayer2の間でメッセージを送信し、資産を移動することができます。

● シーケンサー:シーケンサーはJSON-RPCインターフェースを提供し、Layer2トランザクションを受け入れ、メモリプールから定期的にトランザクションバッチを取得して実行し、新しいLayer2ブロックと状態ルートを生成します。実装は通常、Go-Ethereum(Geth)に基づいており、最高の互換性と最高のセキュリティを確保しています。

● コーディネータ: コレータが新しいブロックを生成し、コレータからそのブロックの実行トレースを受信すると、コーディネータに通知されます。次に、実行トレースは、ローラーネットワーク内のランダムに選択されたローラーにディスパッチされ、有効性の証明が生成されます。

● Relayer: Repeaterは、EthereumとLayer2にデプロイされたRollupコントラクトとブリッジコントラクトを監視します。主な責任は次のとおりです:1)ロールアップコントラクトを監視することにより、データの可用性とレイヤー2ブロックの検証を追跡します。2)イーサリアムとレイヤー2の入出金イベントを監視し、エンゲージメントをブリッジし、メッセージを相手側に中継します。

● Roller Network: Roller in the Roller network acts as the prover and is responsible for generating proof of validity for ZK Rollup. A block execution trace is first received from the coordinator, converted to a circuit witness, then a proof is generated for each zkevm using hardware acceleration, and finally a proof aggregation is used to aggreGate multiple proofs into a single proof.

ZKロールアップの技術アーキテクチャの下で、L1とL2の間のユーザー資産の転送中にセキュリティを確保することが重要です。次の詳細は、ユーザーが2つの層間で資産にアクセスする方法と、システムがこれらのトランザクションの完全性とセキュリティを維持する方法を説明しています。

● Rollupへの資産ブリッジング:ユーザーは、ネットワークチェーンのレイヤーに展開されたZK Rollups契約にトークンを預け入れることで、Rollupに入る。この取引はプロジェクト側によってRollup契約に提出する必要があります。

保留中の入金キューがいっぱいになり始めると、ZK Rollups オペレーターはこれらの入金取引を受け付け、Rollup 限月に発注します。資金がロールアップに入金されると、ユーザーはトランザクション処理を開始できます。

ユーザーは、アカウントをハッシュし、ハッシュ値をロールアップコントラクトに送信し、現在の状態ルートに対して検証するマークル証明を提供することで、ロールアップの残高を検証できます。

● Rollupからの資産引き出し:ユーザーは出口トランザクションを開始し、Rollup上の資産を指定されたアカウントに送信して破棄します。オペレーターがトランザクションを次のバッチに追加する場合、ユーザーはオンチェーン契約に引き出しリクエストを提出できます。引き出しリクエストには以下が含まれます:

  1. ユーザーのトランザクションがトランザクションバッチ内の破壊されたアカウントに追加されたことを証明するマークル証明

  2. 取引データ

  3. ルートをバッチ処理する

  4. 入金された資金を受け取るためのレイヤー1ネットワークアドレス

ロールアップ契約は、トランザクションデータのハッシュを計算し、バッチルートが存在するかどうかを確認し、Merkleプルーフを使用してトランザクションハッシュがバッチルートの一部であるかどうかを確認します。契約は、ユーザーが選択したLayer1ネットワーク上のアドレスに出金トランザクションを実行し、資金を送信します。

監査項目

レイヤー 2 は完全なブロックチェーン システムであるため、この記事の最後にある付録で詳しく説明されているように、ブロックチェーンの一般的な監査項目は ZK Rollup にも適用されます。

さらに、その特殊な性質により、ZK ロールアップはいくつかの追加監査を実行する必要があります。

● システムセキュリティの証明:使用されているゼロ知識証明スキーム(Groth16、Plonk、Halo2、zk-STARKなど)の安全性と正確性を確認します。

● サーキットの安全性:回路設計および実装における可能性のある脆弱性をチェックします。主に以下の項目が含まれます:

  1. アンダーコンストレイント回路

  2. 過度に制約された回路

  3. 非決定性回路

  4. 算術オーバー/アンダーフロー 算術オーバー/アンダーフロー

  5. ビット長の不一致

  6. 使用されていないパブリック入力が最適化されました

  7. Frozen Heart: ゼロ知識証明の鍛造

  8. 信頼されたセットアップの漏洩

  9. 割り当て済みだが制約なし

  10. コンポーネントの安全な使用方法

  11. Variable Precision

● 証明の生成と検証:証明の生成と検証プロセスを見直し、効率的かつ安全であることを確認します。

● データ可用性の証明:レイヤ 2 トランザクション データがレイヤ 1 で使用可能であることを確認して、データ損失を防止します。

● データ同期メカニズム:Layer1とLayer2の間のデータ同期メカニズムが正常であり、ネットワークの分断などの異常な状況に対処できるかどうかを確認する。

●入出金プロセス:レイヤー1からレイヤー2、レイヤー2からレイヤー1への入出金プロセスをチェックして、プロセスが安全であることを確認します。

● アセットのミントとバーン:レイヤー 2 のアセットのキャストと破棄のロジックをチェックして、レイヤー 1 のアセットと正しく対応していることを確認します。

● 外部依存関係と既知の脆弱性のスキャン: ZK Rollupは、サードパーティの暗号化および数学リポジトリまたはツールに大きく依存していることが多く、既知の脆弱性のスキャンと検証のために依存関係のセキュリティを徹底的にチェックする必要があります。

付録

ブロックチェーンとレイヤー2の一般監査項目:

● 整数オーバーフロー:整数オーバーフローと整数アンダーフローをチェックします

● ループ:プログラムのループをチェックして、条件が妥当かどうかを確認します

● 無限再帰呼出: プログラム再帰呼出の終了条件が妥当かどうかをチェックします。

● レースコンディション:同時状態で共有リソースへのアクセスをチェックします

● 例外クラッシュ: プログラムをアクティブに終了させる例外スローコードをチェックします。

● 0で割る脆弱性:0で割るケースがあるか確認してください

● タイプ変換:タイプ変換が正しいかどうか、変換中に重要な情報が失われていないかを確認してください

● 配列の範囲外: 配列の範囲外へのアクセスをチェックします

● 逆シリアル化の脆弱性:逆シリアル化中の問題の確認

● 機能実装のセキュリティ: RPC インターフェースの実装にセキュリティリスクがないかどうか、および RPC インターフェースの機能設計と一致しているかを確認します

● 機密RPCインターフェースの許可設定が妥当かどうか:機密RPCインターフェースのアクセス許可設定を確認します

● 暗号化された伝送メカニズム:TLS などの暗号化された伝送プロトコルが使用されているかどうかを確認します

● リクエストデータ形式の解析:リクエストデータの形式解析プロセスをチェックします

● ウォレットのロック解除攻撃:ノードがウォレットをロック解除すると、RPCによって資金を盗むように求められます。

● 伝統的なWebセキュリティ:次の脆弱性をチェックします:クロスサイトスクリプティング(XSS)/テンプレートインジェクション/サードパーティーコンポーネントの脆弱性/HTTPパラメータの汚染/SQLインジェクション/XXEエンティティインジェクション/逆シリアル化の脆弱性/SSRF脆弱性/コードインジェクション/ローカルファイルの組み込み/リモートファイルの組み込み/コマンド実行のインジェクションおよびその他の伝統的な脆弱性

● ネットワークノードの身元認証および識別メカニズム:ノードの身元識別メカニズムが存在するかを確認し、ノードの身元識別メカニズムが回避可能かをチェックします

● ルーティング テーブルの汚染:ルーティング テーブルを任意に挿入または上書きできるかどうかをチェック

● ノード検出アルゴリズム:ノード検出アルゴリズムがバランスが取れていて予測不可能かどうか(距離アルゴリズムが不均衡であるなど)をチェックします。

●接続使用状況の監査:P2Pネットワークに接続されるノード数の制限と管理が妥当かどうかを確認します

● ソーラーイクリプス攻撃:ソーラーイクリプス攻撃のコストと危険性を評価し、必要に応じて定量的な分析を提供します

● シビル攻撃: 投票の合意メカニズムの評価と投票の資格チェックの戦略の分析

● 盗聴攻撃:通信プロトコルがプライバシーを漏洩していないかを確認します

● エイリアンの攻撃:ノードが同じタイプのチェーンノードを認識できるかどうかを評価します

●タイムハイジャック:ノードのネットワーク時間計算メカニズムを確認します

● メモリ消費攻撃:大量のメモリ消費をチェックします

● ハードドライブ枯渇攻撃:大容量ファイルの保存場所を確認

● ソケット プレッシャー攻撃:リンク数の制限ポリシーを確認

● カーネル ハンドル枯渇攻撃:ファイル ハンドルなどのカーネル ハンドル作成の制限をチェック

● 持続的なメモリーリーク:メモリーリークをチェックしてください

● ハッシュアルゴリズムのセキュリティ:ハッシュアルゴリズムの衝突耐性をチェックします

● デジタル署名アルゴリズムのセキュリティ:署名アルゴリズムとアルゴリズム実装のセキュリティをチェックします。

● 暗号化アルゴリズムのセキュリティ: 暗号化アルゴリズムとアルゴリズムの実装のセキュリティを確認する

●乱数発生器のセキュリティ:キー乱数生成アルゴリズムが妥当かどうかを確認します

● BFT実装のセキュリティ: BFTアルゴリズムの実装セキュリティを評価します

● フォーク選択ルール:フォーク選択ルールをチェックしてセキュリティを確保

●集中度テスト:システム設計に過度に集中的な設計があるかどうかを特定します

●インセンティブ監査:セキュリティへのインセンティブの影響を評価する

● 二重支払い攻撃:コンセンサスが二重支払い攻撃を防御できるかどうかを確認

● MEV攻撃監査:ブロックパッケージノードのMEVがチェーンの公平性に与える影響を検証

● ブロック同期プロセスの監査:同期中のセキュリティ問題のチェック

● ブロック形式の解析プロセスの監査:解析エラーによるクラッシュなどのセキュリティ問題をチェックします

● ブロック生成プロセス監査:ブロック生成プロセスにおけるセキュリティの問題をチェックし、Merkleツリールートが適切な方法で構築されているかどうかを確認します

● ブロック検証プロセスの監査:ブロック署名項目と検証ロジックが十分かどうかを確認します

● ブロック検証ロジック監査: ブロック検証アルゴリズムと実装が妥当かどうかをチェックします。

● ブロック ハッシュ コリジョン:ブロック ハッシュ コリジョンの構築方法と、コリジョンが合理的に処理されているかどうかを確認します。

● ブロック処理リソース制限:孤児ブロックプール、検証計算、ハードディスクアドレッシングなどのリソース制限が適切かどうかを確認します

● トランザクション同期プロセスの監査:同期プロセスでのセキュリティの問題をチェックします

● トランザクション ハッシュの衝突: トランザクション ハッシュの衝突がどのように構築され、どのように処理されるかを調べます。

● トランザクション形式の解析:フォーマット解析中に、クラッシュの原因となる解析エラーなどのセキュリティ上の問題をチェックします。

● トランザクションの有効性チェック: 各タイプのトランザクションの署名明細と検証ロジックが十分かどうかをチェックします。

● トランザクション処理リソース制限:トランザクションプール、検証コンピューティング、ハードディスクアドレッシングなどのリソース制限が妥当かどうかをチェックします。

● トランザクション展性攻撃: トランザクションが内部フィールド(ScriptSigなど)を変更して、トランザクションの有効性に影響を与えずにトランザクションハッシュを変更できるかどうか

● トランザクションリプレイ攻撃監査:トランザクションリプレイのシステム検出をチェックします。

● コントラクトのバイトコードチェック:仮想マシンのコントラクト検証プロセスのセキュリティを確認します。例えば、整数オーバーフローとデッドループのチェックです。

● コントラクトバイトコードの実行:仮想マシンのバイトコード実行プロセスのセキュリティを確認します。たとえば、整数オーバーフロー、デッドループなど

● ガスモデル:トランザクション処理/契約実行の各アトミック操作の手数料がリソース消費に比例していることを確認します

● ログの整合性:重要な情報が記録されているかどうかを確認します

● ログセキュリティ:ログの不適切な処理によって、整数オーバーフローなどのセキュリティ上の問題が発生していないかチェックします。

● ログにプライバシー情報が含まれている:ログにキーなどのプライバシー情報が含まれているかどうかを確認します

● ログストレージ:ノードリソースを消費する過剰な内容がログに記録されていないか確認

● ノードコード サプライチェーンのセキュリティ:パブリックチェーンフレームワークのすべてのサードパーティライブラリ、コンポーネント、およびバージョンで既知の問題を確認してください

免責事項:

  1. この記事は[beosin]. All copyrights belong to the original author [ベオシン]. この転載に異議がある場合は、お問い合わせください。ゲートラーンチーム、そして彼らはそれを迅速に処理します。
  2. 免責事項:この記事で表明された見解や意見は、著者のものであり、投資アドバイスを構成するものではありません。
  3. 記事の翻訳は Gate Learn チームによって他の言語に翻訳されます。特に記載されていない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。

イーサリアムは遅くて高いですか? ETHレイヤー2のスケーリングソリューションと監査ガイド

中級9/24/2024, 1:06:47 PM
ETH Layer2は、Rollupsを使用して数百の取引を1つの送信にまとめ、これにより取引手数料はすべてのRollupユーザーに分割され、ユーザーごとの手数料が削減されます。Rollups内の取引データはLayer1に送信されますが、実行はRollupsによって独立して行われます。Layer1に取引データを送信することで、RollupsはEthereumのセキュリティを継承することができます。なぜなら、一度データがLayer1にアップロードされると、Rollupsの取引を取り消すにはLayer1でデータを巻き戻す必要があるからです。

ブロックチェーンの3つの中核的な特性は、分散、セキュリティ、およびスケーラビリティです。ブロックチェーンのトリレンマ理論によれば、ブロックチェーンアーキテクチャはこれらのうち2つしか実装できません。イーサリアムは分散とセキュリティを重視して設計されており、そのためスケーラビリティにおいては性能が低いです。現在、イーサリアムは1日に100万件以上の取引を処理しており、これにより取引手数料が高騰し、イーサリアムのスケーリングソリューションへの需要が高まっています。

イーサリアムのスケーリングソリューションには、レイヤー1のシャーディング、レイヤー2のステートチャネル、プラズマ、サイドチェーン、ロールアップ、バリディウムなど、それぞれのトレードオフとセキュリティモデルを持ついくつかの異なるタイプがあります。シャーディング技術は進化が遅く、実装が複雑で、サイドチェーンとバリディウムはイーサリアムからセキュリティとデータの可用性を継承できないため、現在、イーサリアムエコシステムでは主にロールアップのスケーリングソリューションが使用されています。

Beosinはこれまでに、Manta NetworkやStarkNetなどのETH Layer2のセキュリティパートナーとなりました。過去の監査では、Ronin Network、Manta Network、Merlin Chain、Clover、Self Chain、Crust Networkなど、多くの有名なブロックチェーンがBeosinのチェーンセキュリティ監査に合格しています。Beosinは現在、ETH Layer2向けの監査ソリューションをリリースし、ETH Layer2エコシステムの包括的なセキュリティ監査サービスを提供しています。

ETH Layer2は、複数のトランザクションを1つの送信にパッケージ化するためにRollupsを使用し、それによりトランザクション手数料はすべてのRollupユーザーに分割され、ユーザーごとの手数料が削減されます。 Rollups内のトランザクションデータはLayer1に提出されますが、実行はRollupsによって独立して行われます。 Layer1にトランザクションデータを提出することで、Rollupsはイーサリアムのセキュリティを継承できます。なぜなら、データがLayer1にアップロードされると、Rollupsのトランザクションを取り消すには、Layer1上のデータを取り消す必要があるからです。

現在、Rollupsは主に2つの方法で実装されることがあります:

Optimistic Rollups:経済的インセンティブとゲーム理論を利用して、Arbitrum、Base、OP、Blastなどのようなトランザクションを検証します。

ゼロ知識ロールアップ:Scroll、Linea、zkSync、StarkNetなどのセキュリティとプライバシーのためにゼロ知識証明を使用します。

オプティミスティックロールアップ

イントロ

オプティミスティックロールアップは、計算と状態の保存をオフチェーンに移動することで、Ethereumのスケーリングを実現する方法です。トランザクションはオフチェーンで実行されますが、トランザクションデータはcalldataまたはblobとしてメインネットに公開されます。

オプティミスティック・ロールアップは、ロールアップ契約と呼ばれるスマート契約をイーサリアム上に展開し、ロールアップの状態を管理し、ユーザーの残高を追跡し、預金、引き出し、紛争解決を処理します。トランザクションは、シーケンサによってオフチェーンで収集され要約され、複数のトランザクションがロールアップブロックにバンドルされ、新しいアカウントの状態(Merkleルート)の要約と暗号証明を含みます。その後、シーケンサはMerkleルートとcalldataを提供してロールアップブロックをメインチェーンにコミットします。

オプティミスティックロールアップは、オフチェーントランザクションが有効であることを前提とし、オンチェーンにプッシュされたトランザクションバッチの有効性の証明を公開しないため、「楽観的」と見なされます。対照的に、オプティミスティック ロールアップは、不正防止スキームに依存して、トランザクションが正しく計算されないケースを検出します。イーサリアムでロールアップバッチを送信した後、誰でも不正の証拠を計算することでロールアップトランザクションの結果に異議を唱えることができる期間(チャレンジ期間と呼ばれる)があります。不正の証明には、検証者が不正であると考える特定の取引の詳細が含まれています。

下の図に示すように、現在のほとんどの楽観的ロールアップの挑戦期間は7日間で、最短のものは1日です。

チャレンジ期間中、誰でも詐欺の証拠を計算して取引結果に対して異議を申し立てることができます。取引が無効である場合、ロールアップブロックは取り消され、チャレンジャーは報酬を得、シーケンサーは罰せられます。

ロールアップバッチがチャレンジ期間終了後も異議を唱えられない場合(つまり、すべてのトランザクションが正しく実行された場合)、それは有効とみなされ、イーサリアム上で受け入れられます。他の人は未確認のロールアップブロックを拡張し続けることができますが、トランザクションの結果は以前に公開されたエラーに基づいて実行される場合には逆になりますので、ご注意ください。

最後に、ユーザーは、レイヤー2からレイヤー1に資金を引き出すために、Rollup契約に引き出しリクエストを提出する必要があります。契約は、ユーザーがRollup上に十分な資金を持っているかどうかを検証し、それに応じてメインチェーン上の残高を更新します。

主要なLayer2ネットワーク

  1. Arbitrum

生態建設とエアドロップを通じて、Arbitrumは急速にETH Layer2で最も活発なネットワークとなり、TVLが27億ドルを超えました。大規模なエアドロップの後、ArbitrumチームはArbitrum関連技術を使用してLayer3を構築する開発者を奨励するArbitrum Orbitプログラムを開始しました。Beosinは、ArbSwap、Arbipadのセキュリティ監査を完了し、Arbitrumエコシステムのセキュリティ開発を支援しています。

  1. Optimism

OptimismはArbitrumよりも生態系活動が少ないですが、Optimismが2023年にローンチしたOP Stackは、モジュラーレイヤー2を構築するための完全で実用的なソリューションとして広く産業界で認識されています。OP Stackを使用して25以上のレイヤー2ネットワークが構築されており、Base、Mantle、Manta、OP BNB、Celoなどのスタープロジェクトが含まれています。Optimism上に構築されたDIPX FinanceとStarnetはBeosinのセキュリティ監査を通過しました。

  1. ベース

Baseは、OP Stackに基づくLayer2ネットワークであり、エコロジカルな活動とTVLの面でArbitrumに次ぐものです。以前、BeosinはBaseのアーキテクチャとセキュリティリスクを詳しく分析し、Surf ProtocolとEDAを監査して、プロジェクト所有者やユーザーがセキュリティリスクを回避できるよう支援しました。

  1. 爆発

「ビッグバン」開発者コンテストの終盤で、BlastはTVLが20億ドルを超え、Layer2回路に位置付けられました。Blastのメインネットローンチ前に、BeosinはBlastのネットワークセキュリティを分析しました。Blastは不正証明を実装していないため、資産はマルチシグネチャウォレットに保持され、Rollupブリッジではなく、中央集権リスクが高いです。BeosinはWand Protocol、Zest、Kalaxなど、いくつかのBlast生態系プロジェクトを監査しています。

アーキテクチャ分析

Optimistic Rollupsのための成熟したフレームワークであるOP Stackは、複雑なOptimistic Rollupsチェーンの構築プロセスを簡略化するために、完全なソフトウェアコンポーネント、ツール、およびフレームワークを提供することで基本的なプロセスを提供します。ここでは、Op stackフレームワークを例に挙げて、Optimism Rollupsの典型的なアーキテクチャを分析します。

● 実行ノード: Op-gethは、Layer2固有の機能(Layer1からのトークンの入金など)を処理するEthereumの拡張実行クライアントです。このレイヤーでは、状態変化を実行するためのすべての機能が定義されています。ここでは、サマリーノード(シーケンスとバリデーター)からエンジンAPIを介して受け取った入力に基づいて状態遷移がトリガーされます。

● Rollupノード:シーケンサーとバリデーターを含みます。コレーターはレイヤー2から処理されたトランザクションをバッチ処理し、レイヤー1に公開する責任があります。シーケンサーはレイヤー2チェーン上でのトランザクションの収集と公開方法を定義します。バリデーター/検証者はバッチトランザクションの妥当性をチェックし、不正行為が検出された場合は証拠を提出します。

● Fraud Proof: CannonはGethのアップグレードバージョンであり、詐欺検出および証明フェーズ中にEVMを実行する責任があります。基本的には、シーケンサとバリデータとAPIを介して協調し、誤ったトランザクションを証明するオンチェーンの紛争エンジンです。

● バッチコミット: シーケンサーは、検証者によって検証されたすべての処理済みトランザクションを一度にバッチ処理し、シーケンサーはバッチ処理されたトランザクションをLayer1に送信します。

● ブリッジ契約:EthereumおよびLayer2に展開され、ユーザーがLayer1とLayer2の間でメッセージを送信し、資産を移動することを可能にします。

オプティミスティック・ロールアップの技術アーキテクチャーにおいて、L1とL2の間を移動するユーザー資産のセキュリティを確保することが不可欠です。以下に、ユーザーが2つのレイヤー間でアセットにアクセスする方法と、システムがこれらのトランザクションの整合性とセキュリティを維持する方法について詳しく説明します。

● Rollupへのアセットブリッジング:ユーザーは、レイヤー1のRollupのチェーンブリッジ契約に資金を預けます。チェーンブリッジ契約はトランザクションをレイヤー2に中継し、同じ量のアセットがオプティミスティックロールアップでユーザーが選択したアドレスに送られるようになります。

ユーザー生成のトランザクション(例:Layer1からLayer2への入金)は通常、隔離状態がそれらをRollup契約に再提出するまでキューイングされます。しかし、検閲耐性を維持するために、オプティミスティックロールアップは、トランザクションの遅延が最大許容時間を超える場合に、ユーザーがオンチェーンのRollup契約に直接トランザクションを提出できるようにします。

● ロールアップから資産を引き出す:詐欺証明メカニズムにより、Optimistic RollupからEthereumへの資金を引き出すことはより複雑です。ユーザーがLayer2からLayer1への取引をイニシエートしてLayer1で管理されている資金を引き出す場合、彼らは通常約7日間続くチャレンジ期間の終了を待たなければなりません。

ユーザーがRollup上で引き出しリクエストを開始すると、トランザクションは次のバッチに含まれ、ユーザーのRollup上の資産は破棄されます。バッチがEthereum上に公開されると、ユーザーはMerkleプルーフを計算して自分の出口トランザクションがブロックに含まれていることを確認できます。次のステップは、遅延期間の終了を待ってLayer1上でトランザクションを完了し、資金をメインネットに引き出すことです。

イーサリアムからお金を引き出す前に1週間待つことを避けるために、Optimistic Rollupのユーザーは流動性提供者(LP)から前渡しをリクエストすることができます。LPは保留中の引き出しの所有権を引き受け、手数料と引き換えにLayer1でユーザーに資金を支払います。流動性提供者は、資金をリリースする前にオンチェーンデータを自分で確認することで、ユーザーの引き出しリクエストの妥当性を検証できます。これにより、彼らは取引が最終的に確認されることを確認し、信頼の確実性を実現できます。

監査項目

Layer2は完全なブロックチェーンシステムであり、したがって、パブリックチェーンの一般的な監査はオプティミスティックロールアップにも適用されます。この記事の末尾に詳細が記載されています。

また、その特性上、楽観的ロールアップは追加の数々の監査を必要とします。

● データの可用性の証明:レイヤー2トランザクションデータがレイヤー1で利用可能であることを確認し、データの損失を防ぎます。

●データ同期メカニズム:Layer1とLayer2の間のデータ同期メカニズムが正常かどうか、およびネットワークの分断などの異常な状況を処理できるかを確認します。

● 詐欺証明契約:詐欺証明契約が正しく実装されていることを確認します。

● チャレンジ期間メカニズム:チャレンジ期間の長さが適切かどうか、および不正証明が指定された時間内に完了できるかどうかを確認します。

● 詐欺証拠提出プロセス:詐欺の証拠を提出するプロセスが安全であることを確認してください。

● 入金および出金プロセス:Layer1からLayer2への入金およびLayer2からLayer1への出金プロセスを確認し、プロセスが安全であることを確認します。

● アセットの鋳造と破棄: レイヤー2上でのアセットの鋳造と破棄ロジックを確認し、レイヤー1のアセットとの正しい対応を保証します。

● リクイディティプロバイダーメカニズム:もしリクイディティプロバイダー(LP)メカニズムが存在する場合、LPの運用プロセスとそのセキュリティを検討する必要があります。

ゼロ知識ロールアップ

イントロ

Zero-Knowledge(ZK)ロールアップは、ゼロ知識証明に基づくLayer2です。主に複雑な計算と証明の生成をオフチェーンで行い、証明をオンチェーンで検証し、データの一部を保存してデータの可用性を確保します。

ZK Rollupは、独立して動作するオフチェーンプロトコルである「ハイブリッドスケーリングソリューション」ですが、イーサリアムからセキュリティを取得します。具体的には、イーサリアムネットワークは、ZKロールアップのステータス更新の有効性を強制し、ロールアップステータスが更新されるたびにバックグラウンドデータの可用性を保証します。Rollupの状態は、イーサリアムネットワーク上にデプロイされたスマートコントラクトによって維持されています。このステータスを更新するには、ZK Rollups ノードが検証のために有効性の証明を送信する必要があります。有効性の証明は、提案された状態の変化が実際に特定のトランザクションのバッチを実行した結果であるという暗号化の保証です。つまり、ZK Rollupsは、すべてのトランザクションデータを公開することなく、イーサリアム上でトランザクションを完了するための有効性の証明を提供するだけで済みます。

ZKロールアップからイーサリアムへの資金移動に遅延はありません。ZKロールアップ契約が有効性の証明を検証した後、出口トランザクションが実行されます。一方、オプティミスティックロールアップから資金を引き出すと、出口トランザクションに対して詐欺の証拠を使用して誰でも出口トランザクションを実行し遅延が発生します。

主要なLayer2ネットワーク

  1. zkSync

zkSyncは、Matter Labsチームによって5年前に立ち上げられたL2ソリューションであり、ゼロ知識証明技術を使用して効率的なトランザクションの検証を可能にしています。zkSyncは、ZKロールアップを使用した最も生態学的に活発なLayer2ネットワークの1つであり、zkSyncはまた物議を醸しています。Beosinは以前、その主要なDeFiプロジェクトであるSyncSwapのコード品質、契約ロジックとセキュリティ、運用モデルなどをカバーした監査を実施しました。

  1. StarkNet

StarkNetは、トランザクションの処理速度を向上させ、手数料を削減するためにZK-STARKを使用してLayer2を構築します。StarkNetにはネイティブ仮想マシン(Cairo VM)と開発言語Cairoがあり、これにより開発者はスマートコントラクトをより安全かつ簡単に記述できます。Beosinは、Option DanceとReddioのセキュリティ監査を完了し、StarkNetの公式セキュリティパートナーになりました。2024年8月13日、ReddioはParadigmに率いられたシードファンディングラウンドを閉じ、高性能な並列EVM Layer2ネットワークを構築することになりました。

  1. スクロール

スクロールは、ゼロ知識証明技術によってスケーリングされ、ハードウェアがゼロ知識証明の生成と検証を高速化し、バイトコードレベルのEVM互換性を実現することを目指しています。これは、開発者がSolidityやEthereum関連の開発ツールを直接使用してスマートコントラクトを構築できることを意味します。

アーキテクチャ分析

ZK Rollupsの一般的なフレームワークには、RollupおよびBridge契約、コレクタ、集約機、リピータ、およびゼロ知識証明を生成するRollerネットワークが含まれます。具体的なアーキテクチャは以下の図に示されています。

● Rollup契約とブリッジ契約:

Rollup契約は、Rollup取引のデータ可用性を提供し、zkEVMの有効性の証明を検証し、ユーザーがイーサリアムとRollupの間で資産を移動することを可能にします。それは、Layer 2のステートルートとブロックをコレクタから受け取り、ステートルートはイーサリアムのステートに保存され、レイヤー2のブロックデータはイーサリムのcalldataとして保存されます。

ブリッジ契約はEthereumとLayer2に展開され、ユーザーはLayer1とLayer2の間でメッセージを送信し、資産を移動することができます。

● シーケンサー:シーケンサーはJSON-RPCインターフェースを提供し、Layer2トランザクションを受け入れ、メモリプールから定期的にトランザクションバッチを取得して実行し、新しいLayer2ブロックと状態ルートを生成します。実装は通常、Go-Ethereum(Geth)に基づいており、最高の互換性と最高のセキュリティを確保しています。

● コーディネータ: コレータが新しいブロックを生成し、コレータからそのブロックの実行トレースを受信すると、コーディネータに通知されます。次に、実行トレースは、ローラーネットワーク内のランダムに選択されたローラーにディスパッチされ、有効性の証明が生成されます。

● Relayer: Repeaterは、EthereumとLayer2にデプロイされたRollupコントラクトとブリッジコントラクトを監視します。主な責任は次のとおりです:1)ロールアップコントラクトを監視することにより、データの可用性とレイヤー2ブロックの検証を追跡します。2)イーサリアムとレイヤー2の入出金イベントを監視し、エンゲージメントをブリッジし、メッセージを相手側に中継します。

● Roller Network: Roller in the Roller network acts as the prover and is responsible for generating proof of validity for ZK Rollup. A block execution trace is first received from the coordinator, converted to a circuit witness, then a proof is generated for each zkevm using hardware acceleration, and finally a proof aggregation is used to aggreGate multiple proofs into a single proof.

ZKロールアップの技術アーキテクチャの下で、L1とL2の間のユーザー資産の転送中にセキュリティを確保することが重要です。次の詳細は、ユーザーが2つの層間で資産にアクセスする方法と、システムがこれらのトランザクションの完全性とセキュリティを維持する方法を説明しています。

● Rollupへの資産ブリッジング:ユーザーは、ネットワークチェーンのレイヤーに展開されたZK Rollups契約にトークンを預け入れることで、Rollupに入る。この取引はプロジェクト側によってRollup契約に提出する必要があります。

保留中の入金キューがいっぱいになり始めると、ZK Rollups オペレーターはこれらの入金取引を受け付け、Rollup 限月に発注します。資金がロールアップに入金されると、ユーザーはトランザクション処理を開始できます。

ユーザーは、アカウントをハッシュし、ハッシュ値をロールアップコントラクトに送信し、現在の状態ルートに対して検証するマークル証明を提供することで、ロールアップの残高を検証できます。

● Rollupからの資産引き出し:ユーザーは出口トランザクションを開始し、Rollup上の資産を指定されたアカウントに送信して破棄します。オペレーターがトランザクションを次のバッチに追加する場合、ユーザーはオンチェーン契約に引き出しリクエストを提出できます。引き出しリクエストには以下が含まれます:

  1. ユーザーのトランザクションがトランザクションバッチ内の破壊されたアカウントに追加されたことを証明するマークル証明

  2. 取引データ

  3. ルートをバッチ処理する

  4. 入金された資金を受け取るためのレイヤー1ネットワークアドレス

ロールアップ契約は、トランザクションデータのハッシュを計算し、バッチルートが存在するかどうかを確認し、Merkleプルーフを使用してトランザクションハッシュがバッチルートの一部であるかどうかを確認します。契約は、ユーザーが選択したLayer1ネットワーク上のアドレスに出金トランザクションを実行し、資金を送信します。

監査項目

レイヤー 2 は完全なブロックチェーン システムであるため、この記事の最後にある付録で詳しく説明されているように、ブロックチェーンの一般的な監査項目は ZK Rollup にも適用されます。

さらに、その特殊な性質により、ZK ロールアップはいくつかの追加監査を実行する必要があります。

● システムセキュリティの証明:使用されているゼロ知識証明スキーム(Groth16、Plonk、Halo2、zk-STARKなど)の安全性と正確性を確認します。

● サーキットの安全性:回路設計および実装における可能性のある脆弱性をチェックします。主に以下の項目が含まれます:

  1. アンダーコンストレイント回路

  2. 過度に制約された回路

  3. 非決定性回路

  4. 算術オーバー/アンダーフロー 算術オーバー/アンダーフロー

  5. ビット長の不一致

  6. 使用されていないパブリック入力が最適化されました

  7. Frozen Heart: ゼロ知識証明の鍛造

  8. 信頼されたセットアップの漏洩

  9. 割り当て済みだが制約なし

  10. コンポーネントの安全な使用方法

  11. Variable Precision

● 証明の生成と検証:証明の生成と検証プロセスを見直し、効率的かつ安全であることを確認します。

● データ可用性の証明:レイヤ 2 トランザクション データがレイヤ 1 で使用可能であることを確認して、データ損失を防止します。

● データ同期メカニズム:Layer1とLayer2の間のデータ同期メカニズムが正常であり、ネットワークの分断などの異常な状況に対処できるかどうかを確認する。

●入出金プロセス:レイヤー1からレイヤー2、レイヤー2からレイヤー1への入出金プロセスをチェックして、プロセスが安全であることを確認します。

● アセットのミントとバーン:レイヤー 2 のアセットのキャストと破棄のロジックをチェックして、レイヤー 1 のアセットと正しく対応していることを確認します。

● 外部依存関係と既知の脆弱性のスキャン: ZK Rollupは、サードパーティの暗号化および数学リポジトリまたはツールに大きく依存していることが多く、既知の脆弱性のスキャンと検証のために依存関係のセキュリティを徹底的にチェックする必要があります。

付録

ブロックチェーンとレイヤー2の一般監査項目:

● 整数オーバーフロー:整数オーバーフローと整数アンダーフローをチェックします

● ループ:プログラムのループをチェックして、条件が妥当かどうかを確認します

● 無限再帰呼出: プログラム再帰呼出の終了条件が妥当かどうかをチェックします。

● レースコンディション:同時状態で共有リソースへのアクセスをチェックします

● 例外クラッシュ: プログラムをアクティブに終了させる例外スローコードをチェックします。

● 0で割る脆弱性:0で割るケースがあるか確認してください

● タイプ変換:タイプ変換が正しいかどうか、変換中に重要な情報が失われていないかを確認してください

● 配列の範囲外: 配列の範囲外へのアクセスをチェックします

● 逆シリアル化の脆弱性:逆シリアル化中の問題の確認

● 機能実装のセキュリティ: RPC インターフェースの実装にセキュリティリスクがないかどうか、および RPC インターフェースの機能設計と一致しているかを確認します

● 機密RPCインターフェースの許可設定が妥当かどうか:機密RPCインターフェースのアクセス許可設定を確認します

● 暗号化された伝送メカニズム:TLS などの暗号化された伝送プロトコルが使用されているかどうかを確認します

● リクエストデータ形式の解析:リクエストデータの形式解析プロセスをチェックします

● ウォレットのロック解除攻撃:ノードがウォレットをロック解除すると、RPCによって資金を盗むように求められます。

● 伝統的なWebセキュリティ:次の脆弱性をチェックします:クロスサイトスクリプティング(XSS)/テンプレートインジェクション/サードパーティーコンポーネントの脆弱性/HTTPパラメータの汚染/SQLインジェクション/XXEエンティティインジェクション/逆シリアル化の脆弱性/SSRF脆弱性/コードインジェクション/ローカルファイルの組み込み/リモートファイルの組み込み/コマンド実行のインジェクションおよびその他の伝統的な脆弱性

● ネットワークノードの身元認証および識別メカニズム:ノードの身元識別メカニズムが存在するかを確認し、ノードの身元識別メカニズムが回避可能かをチェックします

● ルーティング テーブルの汚染:ルーティング テーブルを任意に挿入または上書きできるかどうかをチェック

● ノード検出アルゴリズム:ノード検出アルゴリズムがバランスが取れていて予測不可能かどうか(距離アルゴリズムが不均衡であるなど)をチェックします。

●接続使用状況の監査:P2Pネットワークに接続されるノード数の制限と管理が妥当かどうかを確認します

● ソーラーイクリプス攻撃:ソーラーイクリプス攻撃のコストと危険性を評価し、必要に応じて定量的な分析を提供します

● シビル攻撃: 投票の合意メカニズムの評価と投票の資格チェックの戦略の分析

● 盗聴攻撃:通信プロトコルがプライバシーを漏洩していないかを確認します

● エイリアンの攻撃:ノードが同じタイプのチェーンノードを認識できるかどうかを評価します

●タイムハイジャック:ノードのネットワーク時間計算メカニズムを確認します

● メモリ消費攻撃:大量のメモリ消費をチェックします

● ハードドライブ枯渇攻撃:大容量ファイルの保存場所を確認

● ソケット プレッシャー攻撃:リンク数の制限ポリシーを確認

● カーネル ハンドル枯渇攻撃:ファイル ハンドルなどのカーネル ハンドル作成の制限をチェック

● 持続的なメモリーリーク:メモリーリークをチェックしてください

● ハッシュアルゴリズムのセキュリティ:ハッシュアルゴリズムの衝突耐性をチェックします

● デジタル署名アルゴリズムのセキュリティ:署名アルゴリズムとアルゴリズム実装のセキュリティをチェックします。

● 暗号化アルゴリズムのセキュリティ: 暗号化アルゴリズムとアルゴリズムの実装のセキュリティを確認する

●乱数発生器のセキュリティ:キー乱数生成アルゴリズムが妥当かどうかを確認します

● BFT実装のセキュリティ: BFTアルゴリズムの実装セキュリティを評価します

● フォーク選択ルール:フォーク選択ルールをチェックしてセキュリティを確保

●集中度テスト:システム設計に過度に集中的な設計があるかどうかを特定します

●インセンティブ監査:セキュリティへのインセンティブの影響を評価する

● 二重支払い攻撃:コンセンサスが二重支払い攻撃を防御できるかどうかを確認

● MEV攻撃監査:ブロックパッケージノードのMEVがチェーンの公平性に与える影響を検証

● ブロック同期プロセスの監査:同期中のセキュリティ問題のチェック

● ブロック形式の解析プロセスの監査:解析エラーによるクラッシュなどのセキュリティ問題をチェックします

● ブロック生成プロセス監査:ブロック生成プロセスにおけるセキュリティの問題をチェックし、Merkleツリールートが適切な方法で構築されているかどうかを確認します

● ブロック検証プロセスの監査:ブロック署名項目と検証ロジックが十分かどうかを確認します

● ブロック検証ロジック監査: ブロック検証アルゴリズムと実装が妥当かどうかをチェックします。

● ブロック ハッシュ コリジョン:ブロック ハッシュ コリジョンの構築方法と、コリジョンが合理的に処理されているかどうかを確認します。

● ブロック処理リソース制限:孤児ブロックプール、検証計算、ハードディスクアドレッシングなどのリソース制限が適切かどうかを確認します

● トランザクション同期プロセスの監査:同期プロセスでのセキュリティの問題をチェックします

● トランザクション ハッシュの衝突: トランザクション ハッシュの衝突がどのように構築され、どのように処理されるかを調べます。

● トランザクション形式の解析:フォーマット解析中に、クラッシュの原因となる解析エラーなどのセキュリティ上の問題をチェックします。

● トランザクションの有効性チェック: 各タイプのトランザクションの署名明細と検証ロジックが十分かどうかをチェックします。

● トランザクション処理リソース制限:トランザクションプール、検証コンピューティング、ハードディスクアドレッシングなどのリソース制限が妥当かどうかをチェックします。

● トランザクション展性攻撃: トランザクションが内部フィールド(ScriptSigなど)を変更して、トランザクションの有効性に影響を与えずにトランザクションハッシュを変更できるかどうか

● トランザクションリプレイ攻撃監査:トランザクションリプレイのシステム検出をチェックします。

● コントラクトのバイトコードチェック:仮想マシンのコントラクト検証プロセスのセキュリティを確認します。例えば、整数オーバーフローとデッドループのチェックです。

● コントラクトバイトコードの実行:仮想マシンのバイトコード実行プロセスのセキュリティを確認します。たとえば、整数オーバーフロー、デッドループなど

● ガスモデル:トランザクション処理/契約実行の各アトミック操作の手数料がリソース消費に比例していることを確認します

● ログの整合性:重要な情報が記録されているかどうかを確認します

● ログセキュリティ:ログの不適切な処理によって、整数オーバーフローなどのセキュリティ上の問題が発生していないかチェックします。

● ログにプライバシー情報が含まれている:ログにキーなどのプライバシー情報が含まれているかどうかを確認します

● ログストレージ:ノードリソースを消費する過剰な内容がログに記録されていないか確認

● ノードコード サプライチェーンのセキュリティ:パブリックチェーンフレームワークのすべてのサードパーティライブラリ、コンポーネント、およびバージョンで既知の問題を確認してください

免責事項:

  1. この記事は[beosin]. All copyrights belong to the original author [ベオシン]. この転載に異議がある場合は、お問い合わせください。ゲートラーンチーム、そして彼らはそれを迅速に処理します。
  2. 免責事項:この記事で表明された見解や意見は、著者のものであり、投資アドバイスを構成するものではありません。
  3. 記事の翻訳は Gate Learn チームによって他の言語に翻訳されます。特に記載されていない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!