S9. ブロックチェーンデータと状態管理 (Blockchain Data and State Management)

管理目標

ブロックチェーンのデータと状態を効果的に管理するプラクティスを確立して、コントラクトインタラクションのセキュリティ、効率性、完全性を確保します。

S9.1 状態管理 (State Management)

管理目標

スマートコントラクト内の状態を効率的かつ安全に処理して、データ破損や予期しない動作を防ぐことを確認します。

S9.1.A 効率的で安全な状態処理 (Efficient and Secure State Handling)

参照コード
要件
L1
L2
L3
SWE

S9.1.A1

コントラクト内の payable 関数が msg.value で渡されるすべての ETH を処理して、ETH がコントラクト内でロックされることを避けるように withdraw のメカニズムを提供していることを確認します。

S9.1.A2

ネストされた構造の変数を削除すると、ネストされたすべてのレベルのフィールドをデフォルト値に正しくリセットして、予期しない動作を回避することを検証します。

S9.1.A3

実験的な ABIEncoderV2 を使用してストレージから直接エンコードした際にデータ破損を回避し、32 バイトより短い型を持つストレージ構造体と配列が正しく処理されることを検証します。

S9.1.A4

構造体やその他の静的サイズの配列を含むストレージ配列が外部関数呼び出しで適切に読み込まれてエンコードされ、データ破損を防いでいることを検証します。

S9.1.A5

memory または calldata からストレージにバイト配列をコピーする際に空の配列を正しく処理し、新しいデータを格納せずにターゲット配列の長さを後で増やした場合にデータ破損を回避することを確認します。

S9.1.B 状態チャンネル (State Channels)

参照コード
要件
L1
L2
L3
SWE

S9.1.B1

メモリコピーを行う際にグローバル状態の更新が正しく処理され、正確な状態管理を確保することを検証します。

S9.2 データプライバシー (Data Privacy)

管理目標

コントラクト内の機密データが保護され、プライバシー対策が効果的に実施されていることを確認します。

S9.2.A 機密データの安全性の確保 (Ensuring Sensitive Data is Secure)

参照コード
要件
L1
L2
L3
SWE

S9.2.A1

コントラクトに記載された個人データがブロックチェーン分析を通じた認可されていないアクセスから保護されていることを確認します。

S9.2.B ゼロ知識証明 (Zero-Knowledge Proofs)

参照コード
要件
L1
L2
L3
SWE

S9.2.B1

ゼロ知識証明が実装され、基礎となるデータを公開することなくプライバシーを確保していることを検証します。

S9.2.B2

証明生成と検証プロセスの正確性を検証して、潜在的な漏洩や悪用を防ぎます。

S9.2.B3

ゼロ知識証明がブロックチェーンとシームレスに統合され、パフォーマンスとセキュリティを維持していることを確認します。

S9.2.C プライベートトランザクション (Private Transactions)

参照コード
要件
L1
L2
L3
SWE

S9.2.C1

プライベートトランザクションメカニズム (zk-SNARKs, zk-STARKs など) が正しく実装され、トランザクションの詳細の機密性を確保していることを検証します。

S9.2.C2

プライベートトランザクションがブロックチェーンの完全性と有効性を維持していることを確認します。

S9.2.D 機密コントラクト (Confidential Contracts)

参照コード
要件
L1
L2
L3
SWE

S9.2.D1

機密コントラクトでは暗号技法を使用して、認可されていないパーティからコントラクト状態と実行詳細を隠していることを検証します。

S9.2.D2

適切なパーミッションを持つパーティのみが機密コントラクト内のデータにアクセスできることを確認します。

S9.3 イベントログ記録 (Event Logging)

管理目標

透明性があり安全なログ記録プラクティスを実装して、追跡可能性を確保し、認可されていない変更を検出します。

S9.3.A 透明性があり安全なログ記録プラクティス (Transparent and Secure Logging Practices)

参照コード
要件
L1
L2
L3
SWE

S9.3.A1

イベントが適切に発行され、特に重要な変更について、追跡可能性と透明性を確保していることを検証します。

S9.3.A2

コントラクトのイベントログ記録が重要な変更を正しく反映して、透明性と追跡可能性を確保していることを検証します。

S9.3.B ログ解析 (Log Analysis)

参照コード
要件
L1
L2
L3
SWE

S9.3.B1

イベントログを分析するためのツールとプロセスを導入して、異常や認可されていない変更を検出します。

S9.3.B2

ログ記録されたイベントの異常なパターンや不整合に対してアラートをセットアップします。

S9.4 分散ストレージ (Decentralized Storage)

管理目標

分散ストレージソリューションに保存されているデータの完全性、セキュリティ、可用性を確保します。

S9.4.A IPFS, Arweave (IPFS, Arweave)

参照コード
要件
L1
L2
L3
SWE

S9.4.A1

IPFS や Arweave などの分散プラットフォームに保存されているデータが暗号化され、アクセス制御されていることを確認します。

S9.4.A2

データの冗長性とバックアップのメカニズムを実装して、データの可用性を確保します。

Last updated