時価総額: $2.641T 0.40%
ボリューム(24時間): $98.8166B 16.07%
恐怖と貪欲の指数:

68 - 貪欲

  • 時価総額: $2.641T 0.40%
  • ボリューム(24時間): $98.8166B 16.07%
  • 恐怖と貪欲の指数:
  • 時価総額: $2.641T 0.40%
暗号
トピック
暗号化
ニュース
暗号造園
動画
トップクリプトスペディア

言語を選択する

言語を選択する

通貨の選択

暗号
トピック
暗号化
ニュース
暗号造園
動画

スマート コントラクトを再入攻撃から保護するにはどうすればよいですか?

Reentrancy vulnerabilities arise when external calls precede state updates, enabling malicious recursive calls—mitigated by Checks-Effects-Interactions, ReentrancyGuard, and cautious gas limits.

2026/01/23 10:39

再入可能性の脆弱性を理解する

1. 再入攻撃は、最初の関数の実行が完了する前に、脆弱なコントラクトにコールバックする外部コントラクトの機能を悪用します。

2. これは、外部呼び出しの前に状態の変更が完了していない場合に発生し、悪意のあるコードが残高やフラグを繰り返し操作できるようになります。

3. 2016 年の悪名高い DAO ハッキングでは、再帰的な引き出しパターンによって 6,000 万ドル相当の ETH がどのように流出するのかが実証されました。

4. このような脆弱性は、転送、引き出し、または状態更新に続く外部呼び出しを伴うロジックを処理する関数で顕著です。

5. 0.8.0 より前の Solidity バージョンには再入可能ガードが組み込まれていなかったため、従来の展開では手動による保護が不可欠でした。

チェック - 効果 - インタラクション パターンの実装

1. このアーキテクチャ規律では、すべての内部状態の変更が外部との相互作用の前に行われることが義務付けられています。

2. たとえば、ユーザーの残高の更新は、転送の呼び出しまたは別のアドレスでの呼び出しの前に行う必要があります。

3. この命令に違反すると、攻撃者が制御フローを乗っ取り、同じ機能に再度侵入する可能性が高まります。

4. 順序が適切であっても、開発者は、イベント エミッターや修飾子などの中間関数が意図しない外部呼び出しをトリガーしていないことを確認する必要があります。

5. Slither や MythX などのツールは、バイトコードとソースの静的分析中にこのパターンからの逸脱を検出できます。

ReentrancyGuard 修飾子の使用

1. OpenZeppelin のReentrancyGuardは、ブール値フラグを使用して関数をロックする、広く監査されているユーティリティです。

2. 修飾子は、実行前に_status_ENTEREDに設定し、完了後に_NOT_ENTEREDにリセットします。

3. 同じ保護された関数に再度入ろうとするネストされた呼び出しは、アクティブなロックにより元に戻ります。

4. すべての機密エントリ ポイントが同じガード インスタンスを共有しない限り、機能間の再入は防止されません。

5. 開発者は、継承階層がガード状態を正しく初期化し、内部変数のシャドウイングを回避することを確認する必要があります。

緩和戦略としてのガス制限

1. call.gas(2300)のような低レベルの呼び出しで転送されるガスを明示的に制限することで、受信者のコントラクトが複雑なロジックを実行するのを防ぎます。

2. この手法は、実行を 2300 ガスに制限するsendおよびtransferのガス支給を模倣します。

3. ただし、ガス制限のみに依存するのは脆弱です。将来の EVM アップグレードやカスタム オペコードにより、ガス コストが予期せず変化する可能性があります。

4. また、ロギングやリバランスを実行するなど、フォールバック ロジックに最小限以上のガスを必要とするコントラクトとの互換性も失われます。

5. ガスベースの緩和は、リエントラントガードや国家命令などの構造的安全策に代わるものではなく、補完するものであるべきです。

よくある質問

Q: ビューまたは純粋な関数で再入可能性は発生しますか? A: いいえ。これらの関数は状態変更操作や外部呼び出しを実行できないため、再帰的な干渉の可能性が排除されます。

Q: delegatecall を使用すると再入はできなくなりますか? A: 本質的にはそうではありません。 delegatecall は呼び出し元のストレージ コンテキストを保持しますが、ターゲット ロジックに保護されていない外部対話が含まれている場合、再入可能パターンはブロックされません。

Q: Payable フォールバック機能は常に危険ですか? A: 再入保護なしで状態の更新または外部呼び出しを実行する場合のみ。副作用なしで ETH を受け入れる最小限のフォールバックでは、無視できるリスクが生じます。

Q: アップグレード可能なプロキシ パターンは再入可能性を高めますか? A: はい。実装契約に適切な保護がなく、プロキシが検証なしで呼び出しを転送する場合、攻撃者はプロキシ ロジックとビジネス ロジックの両方を同時に悪用する可能性があります。

免責事項:info@kdj.com

提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。

このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。

関連知識

DOGE 先物の出来高と建玉を確認するにはどうすればよいですか?

DOGE 先物の出来高と建玉を確認するにはどうすればよいですか?

2026-09-12 08:39:38

DOGE 先物ボリュームを理解する1. 先物取引高とは、特定の時間枠内で取引される DOGE 件の先物契約の総数を指し、通常は 1 日または 1 時間ごとに測定されます。 2. 出来高が多いということは、多くの場合、市場への参加が強力であることを示しており、価格変動の状況に応じてトレンドの継続または...

BTC先物の出来高と建玉を確認するにはどうすればよいですか?

BTC先物の出来高と建玉を確認するにはどうすればよいですか?

2026-09-12 15:19:55

BTC先物指標のデータソース1. CoinGlass API v4 は、30 以上の取引所にわたるリアルタイムの資金調達レート、清算ヒートマップ、および詳細な建玉の内訳を提供します。 2. Binance Futures API は、ビッドアスク深度、契約固有の出来高履歴、マージン率スナップショット...

DOGEUSDT 無期限契約チャートの見方

DOGEUSDT 無期限契約チャートの見方

2026-09-11 19:19:48

DOGEUSDT 無期限チャートの価格アクションを理解する1. ローソク足の形成は、当面の市場センチメントを明らかにします。緑のローソクは買い優勢を示し、赤のローソクはその期間中の売り圧力を示します。 2. 本体の上下の芯は、価格の高値または低値の拒否を示します。不安定なミームコイン市場では、長い上...

BinanceでBTC先物ファンディング手数料を確認するにはどうすればよいですか?

BinanceでBTC先物ファンディング手数料を確認するにはどうすればよいですか?

2026-09-10 08:00:06

ファンディングレート表示の場所1. Binance Futures 取引インターフェイスに移動し、BTCUSDT 無期限契約を選択します。 2. 価格チャートの直下またはオーダーブックに隣接する領域を観察します。この領域には、「資金調達レート」とマークされたラベル付きボックスが含まれています。 3....

SOLUSDT 先物損益の計算方法

SOLUSDT 先物損益の計算方法

2026-09-10 19:19:37

SOLUSDT 先物契約仕様の理解1. 各 SOLUSDT 先物契約は USDT で見積もられ、USDT で決済されるため、線形永久契約となります。 2. 基本資産は SOL ですが、見積資産は USDT です。すべての損益計算は USDT で直接表示されます。 3. 価格変動の最小ティック サイズ...

XRPUSDT 先物損益計算方法

XRPUSDT 先物損益計算方法

2026-09-09 17:40:21

XRPUDT先物契約の仕様を理解する1. 各 XRPSDT 永久契約は USDT で見積もられ、USDT で決済されます。額面は契約ごとに 1 XRP です。 2. Binance や Bybit を含むほとんどの主要取引所の最小価格増分 (ティック サイズ) は $0.0001 です。 3. レバ...

DOGE 先物の出来高と建玉を確認するにはどうすればよいですか?

DOGE 先物の出来高と建玉を確認するにはどうすればよいですか?

2026-09-12 08:39:38

DOGE 先物ボリュームを理解する1. 先物取引高とは、特定の時間枠内で取引される DOGE 件の先物契約の総数を指し、通常は 1 日または 1 時間ごとに測定されます。 2. 出来高が多いということは、多くの場合、市場への参加が強力であることを示しており、価格変動の状況に応じてトレンドの継続または...

BTC先物の出来高と建玉を確認するにはどうすればよいですか?

BTC先物の出来高と建玉を確認するにはどうすればよいですか?

2026-09-12 15:19:55

BTC先物指標のデータソース1. CoinGlass API v4 は、30 以上の取引所にわたるリアルタイムの資金調達レート、清算ヒートマップ、および詳細な建玉の内訳を提供します。 2. Binance Futures API は、ビッドアスク深度、契約固有の出来高履歴、マージン率スナップショット...

DOGEUSDT 無期限契約チャートの見方

DOGEUSDT 無期限契約チャートの見方

2026-09-11 19:19:48

DOGEUSDT 無期限チャートの価格アクションを理解する1. ローソク足の形成は、当面の市場センチメントを明らかにします。緑のローソクは買い優勢を示し、赤のローソクはその期間中の売り圧力を示します。 2. 本体の上下の芯は、価格の高値または低値の拒否を示します。不安定なミームコイン市場では、長い上...

BinanceでBTC先物ファンディング手数料を確認するにはどうすればよいですか?

BinanceでBTC先物ファンディング手数料を確認するにはどうすればよいですか?

2026-09-10 08:00:06

ファンディングレート表示の場所1. Binance Futures 取引インターフェイスに移動し、BTCUSDT 無期限契約を選択します。 2. 価格チャートの直下またはオーダーブックに隣接する領域を観察します。この領域には、「資金調達レート」とマークされたラベル付きボックスが含まれています。 3....

SOLUSDT 先物損益の計算方法

SOLUSDT 先物損益の計算方法

2026-09-10 19:19:37

SOLUSDT 先物契約仕様の理解1. 各 SOLUSDT 先物契約は USDT で見積もられ、USDT で決済されるため、線形永久契約となります。 2. 基本資産は SOL ですが、見積資産は USDT です。すべての損益計算は USDT で直接表示されます。 3. 価格変動の最小ティック サイズ...

XRPUSDT 先物損益計算方法

XRPUSDT 先物損益計算方法

2026-09-09 17:40:21

XRPUDT先物契約の仕様を理解する1. 各 XRPSDT 永久契約は USDT で見積もられ、USDT で決済されます。額面は契約ごとに 1 XRP です。 2. Binance や Bybit を含むほとんどの主要取引所の最小価格増分 (ティック サイズ) は $0.0001 です。 3. レバ...

すべての記事を見る

User not found or password invalid

Your input is correct