-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
スマート コントラクトにおけるリエントランシー攻撃を理解する (DAO ハックの説明)
A reentrancy attack exploits Ethereum’s execution model by recursively calling a vulnerable function before state updates, as seen in The DAO hack—where $50M was drained due to updating balances after external calls.
2026/01/16 01:40
リエントランシー攻撃とは何ですか?
1. 再入攻撃は、最初の実行が完了する前に外部コントラクトが現在のコントラクトにコールバックするときに発生します。
2. この脆弱性は、不適切な状態管理、特に状態変数が外部呼び出しの前ではなく後に更新された場合に発生します。
3. 攻撃者は、ターゲット コントラクト内の脆弱な関数を再帰的に呼び出すフォールバック関数を含む悪意のあるコントラクトをデプロイします。
4. 各再帰呼び出しは同じ論理パスに再び入り、呼び出しスタック全体が巻き戻されるまで残高が更新されずに繰り返し資金が排出されます。
5. このような攻撃は、外部呼び出しが呼び出しコンテキスト内の制御フローを保持するイーサリアムの同期シングルスレッド実行モデルを悪用します。
DAO事件:歴史的破綻
1. DAO は、2016 年にイーサリアム上に設立された分散型自律組織であり、スマート コントラクト ルールによって管理されるベンチャー キャピタル ファンドとして設計されました。
2. そのコードにより、トークン所有者は、 splitDAO関数を呼び出すことで DAO から分割し、イーサを回収することができました。
3. この関数は、内部残高を更新する前に要求者のアドレスにイーサを転送し、古典的な再入ウィンドウを作成しました。
4. 攻撃者は、資金を受け取ると再びSplitDAO をトリガーするフォールバック機能を備えたコントラクトを展開しました。
5. 複数のネストされたコールを通じて、トランザクションが元に戻るか停止される前に、360 万 ETH 以上 (当時 5,000 万ドル以上に相当) が吸い上げられました。
イーサリアムの実行モデルがどのように再入可能を可能にするか
1. Solidity のすべての外部呼び出しは同じトランザクション コンテキストで実行され、メモリ、ストレージ、呼び出しスタックの可視性が維持されます。
2. Checks-Effects-Interactions のようなパターンを介して明示的に実装されない限り、自動再入ガードはありません。
3. ガス制限は再発を防止しません。これらは総計算量を制限するだけであり、フォールバック関数の実行に必要なガスは最小限です。
4. EVM は呼び出し元と呼び出し先の間の分離を強制しません。呼び出し先によって行われた状態の変更は、実行中の呼び出し元に表示されます。
5. 開発者は、特にサードパーティのトークンやオラクルが関与する場合、契約のやり取りがどれほど深く相互依存する可能性があるかを過小評価することがよくあります。
再入を招く一般的なコード パターン
1. イーサを送信する前ではなく、外部コントラクトを呼び出した後に、残高やフラグを更新します。
2. 戻り値の検証や再帰の深さを制限せずにcall.value()()を使用する。
3. ストレージ変数の残高を追跡するのではなく、 this.balanceに基づいて計算します。
4. ロック、ミューテックス、または OpenZeppelin のReentrancyGuardなどの再入可能修飾子を使用しない撤退パターンを実装します。
5. 継承されたロジックの監査に失敗する (特に、delegatecall がコンテキストを保持するプロキシ パターンまたはアップグレード可能なコントラクトを使用する場合)。
よくある質問
Q: ERC-20 転送ではリエントラントが発生する可能性がありますか? A: 標準の ERC-20 転送関数は外部呼び出しをトリガーしないため、ネイティブの再入は不可能です。ただし、 transferFromのような拡張機能とフック (ERC-777 など) の組み合わせでは、再入可能性が発生する可能性のあるコールバック サーフェスが導入されます。
Q: DAO ハッキングはハード フォークにより元に戻すことができましたか? A: はい。イーサリアムコミュニティはチェーン履歴を書き換えることで盗まれた資金を復元するためにハードフォークを実行し、その結果イーサリアムとイーサリアムクラシックが分裂した。
Q: 最新の Solidity バージョンでは、デフォルトで再入が禁止されていますか? A: いいえ。Solidity v0.8.x には、より安全な算術演算と元に戻す動作が含まれていますが、再入保護は自動挿入されません。開発者は依然として防御パターンを手動で適用する必要があります。
Q: require(msg.sender.call{value: amount}(''))を使用することは、 address.send()より安全ですか? A: どちらも本質的に安全ではありません。どちらも、状態を更新する前に使用すると、再入可能になります。重要な要素は、特定の呼び出しメカニズムではなく、対話の順序です。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
- ビットコイン、eCash フォーク、Airdrop のダイナミクス: 暗号通貨の最新の論争を深く掘り下げる
- 2026-05-03 12:55:01
- コンセンサス 2026 マイアミ: Web3、ブロックチェーン、暗号通貨、NFT、メタバース、カンファレンス、5 月 5 日 — ウォール街とデジタル フロンティアが出会う場所
- 2026-05-02 12:45:01
- FRBが金利を据え置き、地政学的な緊張の中、ビットコイン価格の下落を引き起こす
- 2026-05-01 06:45:01
- ビットコインマイナーが送電網を電化:オハイオ州のガス工場買収がデジタルゴールドの新時代を加速
- 2026-05-01 00:45:01
- MegaETH の MEGA トークンがビッグアップルに到達: リアルタイム ブロックチェーンの新しいパフォーマンス ベンチマークを設定
- 2026-05-01 00:55:01
- ソラナの滑りやすい坂道: 価格予測は抵抗力の損失とさらなる下落の可能性を示している
- 2026-05-01 06:45:01
関連知識
AVAX 先物証拠金要件はどのように計算されますか?
2026-07-23 15:40:03
AVAX先物証拠金構造1. AVAX 先物証拠金は、当初証拠金と維持証拠金という 2 つの異なる要素で構成されます。これらは、現在の市場価格、ボラティリティ、建玉、契約サイズに基づいてリアルタイムで計算されます。 2. 当初証拠金は、短期間(通常は 1 回の取引セッション)にわたる潜在的な不利な価格...
ADA 契約マージン率によって警告がトリガーされるのはなぜですか?
2026-07-22 09:00:26
ADA 契約マージン率の仕組み1. 主要取引所の ADA 無期限契約では、ポジション サイズ、レバレッジ レベル、および現在のマーク価格に基づいてリアルタイムで計算される動的証拠金比率が使用されます。 2. 証拠金率は、(ウォレット残高 + 未実現損益) を維持証拠金要件で割ったものに等しく、パーセ...
ADUSDT の永久契約ファンディング レートとは何ですか?
2026-07-24 20:19:46
ADUSDT 無期限契約ファンディング レートの定義と目的1. ADUSDT 永久契約ファンディング レートは、主要な仮想通貨取引所におけるテザー (USDT) のデリバティブ ポジションに対してカルダノ (ADA) に適用される定期的な手数料交換メカニズムです。 2. 価格アンカーツールとして機能...
TON永久取引にはどのくらいのレバレッジが推奨されますか?
2026-07-27 17:20:10
TON永久取引の仕組み1. TON 無期限契約は、さまざまな証拠金モデルを備えた分散型取引所と集中型取引所で運用されます。 2. 資金調達率は時間ごとに計算され、スポット価格と永久価格の間の基準に依存し、ロング/ショートのコストダイナミクスに影響を与えます。 3. 維持証拠金が取引所で定義されたしき...
TON 先物清算価格計算式とは何ですか?
2026-07-23 09:19:45
TON先物清算メカニズム1. TON先物における清算は、トレーダーの証拠金残高が取引所が設定した維持証拠金要件を下回った場合に発生します。 2. (利用可能証拠金 / 必要証拠金) × 100% で計算される証拠金比率が 100% 以下になると、システムは自動的に強制清算をトリガーします。 3. 清...
TONUSDT 無期限契約ファンディング レートとは何ですか?
2026-07-27 02:39:50
定義とコアメカニズム1. TONUSDT 無期限契約ファンディング レートは、主要な仮想通貨取引所で取引される TON/USDT 無期限先物にのみ適用される定期的な手数料交換メカニズムです。 2. 価格アンカーツールとして機能し、TONUSDT 永久市場価格と基礎となる TON/USDT スポットイ...
AVAX 先物証拠金要件はどのように計算されますか?
2026-07-23 15:40:03
AVAX先物証拠金構造1. AVAX 先物証拠金は、当初証拠金と維持証拠金という 2 つの異なる要素で構成されます。これらは、現在の市場価格、ボラティリティ、建玉、契約サイズに基づいてリアルタイムで計算されます。 2. 当初証拠金は、短期間(通常は 1 回の取引セッション)にわたる潜在的な不利な価格...
ADA 契約マージン率によって警告がトリガーされるのはなぜですか?
2026-07-22 09:00:26
ADA 契約マージン率の仕組み1. 主要取引所の ADA 無期限契約では、ポジション サイズ、レバレッジ レベル、および現在のマーク価格に基づいてリアルタイムで計算される動的証拠金比率が使用されます。 2. 証拠金率は、(ウォレット残高 + 未実現損益) を維持証拠金要件で割ったものに等しく、パーセ...
ADUSDT の永久契約ファンディング レートとは何ですか?
2026-07-24 20:19:46
ADUSDT 無期限契約ファンディング レートの定義と目的1. ADUSDT 永久契約ファンディング レートは、主要な仮想通貨取引所におけるテザー (USDT) のデリバティブ ポジションに対してカルダノ (ADA) に適用される定期的な手数料交換メカニズムです。 2. 価格アンカーツールとして機能...
TON永久取引にはどのくらいのレバレッジが推奨されますか?
2026-07-27 17:20:10
TON永久取引の仕組み1. TON 無期限契約は、さまざまな証拠金モデルを備えた分散型取引所と集中型取引所で運用されます。 2. 資金調達率は時間ごとに計算され、スポット価格と永久価格の間の基準に依存し、ロング/ショートのコストダイナミクスに影響を与えます。 3. 維持証拠金が取引所で定義されたしき...
TON 先物清算価格計算式とは何ですか?
2026-07-23 09:19:45
TON先物清算メカニズム1. TON先物における清算は、トレーダーの証拠金残高が取引所が設定した維持証拠金要件を下回った場合に発生します。 2. (利用可能証拠金 / 必要証拠金) × 100% で計算される証拠金比率が 100% 以下になると、システムは自動的に強制清算をトリガーします。 3. 清...
TONUSDT 無期限契約ファンディング レートとは何ですか?
2026-07-27 02:39:50
定義とコアメカニズム1. TONUSDT 無期限契約ファンディング レートは、主要な仮想通貨取引所で取引される TON/USDT 無期限先物にのみ適用される定期的な手数料交換メカニズムです。 2. 価格アンカーツールとして機能し、TONUSDT 永久市場価格と基礎となる TON/USDT スポットイ...
すべての記事を見る














