時価総額: $2.6437T 0.10%
ボリューム(24時間): $40.0551B -59.47%
恐怖と貪欲の指数:

68 - 貪欲

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

言語を選択する

言語を選択する

通貨の選択

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

tx.origin と msg.sender の違いは何ですか?また、tx.origin を避けるべき理由は何ですか?

Always use `msg.sender` for access control in smart contracts—`tx.origin` can be exploited by malicious contracts in call chains, leading to unauthorized withdrawals or phishing attacks.

2025/11/23 19:39

Ethereum スマート コントラクトの tx.origin と msg.sender について理解する

1. tx.origin は、途中で発生したコントラクト呼び出しの数に関係なく、トランザクションを開始した元の外​​部アカウントを指します。これは、ユーザーがコントラクト A と対話するトランザクションを送信し、その後コントラクト B を呼び出す場合でも、コントラクト B の tx.origin の値は依然としてユーザーのウォレット アドレスを指すことを意味します。

2.一方、msg.sender は、外部所有アカウント (EOA) であっても、別のコントラクトであっても、現在の関数の直接の呼び出し元を表します。同じ例で、契約 A が契約 B を呼び出すと、契約 B 内の msg.sender は元のユーザーではなく契約 A のアドレスになります。

3. この区別は、アクセス制御や取り消しメカニズムなど、許可に依存する機能において重要になります。 tx.origin に依存すると、ロジックが認証に tx.origin に依存している場合、ユーザーによって呼び出された悪意のあるコントラクトが (間接的であっても) 権限を偽装できるため、脆弱性が生じる可能性があります。

4. たとえば、tx.origin が所有者のアドレスと一致する場合にのみ引き出しを許可するスマート コントラクトを考えてみましょう。攻撃者は、所有者が知らずに操作する悪意のあるコントラクトを作成する可能性があります。そのコントラクトがトリガーされると、被害者コントラクトの撤回関数が呼び出されます。 tx.origin は所有者のアドレスのままであるため、チェックはパスし、適切な所有権チェックにもかかわらず盗難が可能になります。

5. この動作は、安全なコーディングにおける最小特権の原則を損なうものです。スマート コントラクトは、誰がチェーンを開始したかではなく、誰が直接呼び出したかに基づいて検証する必要があります。 msg.sender を使用すると、構成可能性が向上し、コントラクトが日常的に相互作用する分散型アプリケーションで予期されるパターンに適合します。

tx.origin の使用に伴うリスク

1. tx.origin を認証に使用すると、フィッシング攻撃が容易になります。ユーザーは、より深い呼び出しチェーンをトリガーする一見無害なトランザクションを承認する可能性があり、攻撃者が tx.origin を誤って信頼する契約から資金を流出させる可能性があります。

2. tx.origin の存在により、誤った安心感が生まれます。開発者はエンドユーザーを検証していると思っているかもしれませんが、実際には、中間コントラクトを通じてシステムをプロキシエクスプロイトにさらしていることになります。

3. tx.origin を制限またはサニタイズする組み込みメカニズムはありません。直接スプーフィングすることはできませんが、イーサリアムの実行環境に固有の委任モデルをバイパスするため、その性質上、アクセス制御には適していません。

4. アップグレード可能な契約や複雑な DeFi プロトコルは、多くの場合、階層化された相互作用に依存しています。 tx.origin がコア ロジックに埋め込まれている場合、これらのシステムは正規のコントラクト間操作中に中断する危険があり、予期しない取り消しや権限エラーが発生します。

5. コミュニティ標準や Consensys Best Practices などの監査フレームワークでは、認可目的で tx.origin を使用しないことを明示的に推奨しています。主要なプロトコル監査では、その使用が高リスクであるとのフラグが立てられ、初期世代のトークン契約における現実世界の悪用の一因となっています。

安全な契約設計のベスト プラクティス

1. 元のトランザクション開始者を参照する非常に具体的かつ正当な理由がない限り、コントラクト内のアクセス許可を確認するときは常にmsg.senderを使用します。その場合でも、細心の注意が必要です。

2. OpenZeppelin の Ownable や AccessControl などの確立されたライブラリを使用してロールベースのアクセス制御を実装します。これらのライブラリは msg.sender を中心に設計されており、tx.origin に依存せずに詳細な権限管理をサポートします。

3. カスタム認証ロジックを最初から作成することは避けてください。十分にテストされ、コミュニティで精査されたパターンを活用して、分散環境での本人確認に関連するよくある落とし穴を防ぎます。

4. 認証フローに焦点を当てた徹底的なセキュリティレビューを実施します。静的分析ツールと正式な検証方法は、tx.origin の不適切な使用を検出し、より安全な代替手段を提案できます。

5. EVM の実行モデルについて開発チームを教育します。コールスタックがどのように伝播するか、およびコントラクト呼び出し中に送信者のコンテキストがどのように変化するかを理解することは、tx.origin セマンティクスの誤解に根ざした設計上の欠陥を防ぐのに役立ちます。

よくある質問

tx.origin は安全に使用できるのでしょうか?はい、ただし、分析や非クリティカルな状態の追跡のために元のイニシエーターをログに記録するなど、非常に限定されたシナリオでのみ可能です。その場合でも、開発者はアクセスの決定や資金移動に影響を与えないようにする必要があります。

msg.sender を使用すると、なりすましのリスクはすべて回避できますか?単一の変数ですべてのリスクを排除することはできませんが、msg.sender はイーサリアムが意図するセキュリティ モデルと一致しています。なりすましを防止するには、入力検証、再入ガード、安全な設計パターンなどの追加の対策も必要です。

コントラクトが tx.origin を使用し、別のコントラクトによって呼び出された場合はどうなりますか? tx.origin は元のユーザーのアドレスのままであるため、意図しない認可結果が生じる可能性があります。 EOA からの直接対話を期待する契約では、元の署名者が有効であるという理由だけで、誤って悪意のある仲介契約へのアクセスを許可する可能性があります。

tx.origin の悪用を検出するツールはありますか?はい、Slither、MythX、Solhint などのセキュリティ スキャナーは、承認コンテキストで tx.origin の使用にフラグを立てます。これらのツールは CI/CD パイプラインに統合されており、展開前に危険なパターンを特定するのに役立ちます。

免責事項: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 の ETHUSDT 先物チャートを読むには?

Binance の ETHUSDT 先物チャートを読むには?

2026-09-13 05:20:26

Bitcoin 半減力学1. 210,000 ブロックごとに、Bitcoin 名のマイナーのブロック報酬が半分になります。 2. このイベントは約 4 年ごとに発生し、Bitcoin のプロトコルにハードコードされています。 3. 最新の半減により、報酬はブロックあたり 6.25 BTC から 3....

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

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

2026-09-13 18:00:17

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

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

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

2026-09-10 08:00:06

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

Binance の ETHUSDT 先物チャートを読むには?

2026-09-13 05:20:26

Bitcoin 半減力学1. 210,000 ブロックごとに、Bitcoin 名のマイナーのブロック報酬が半分になります。 2. このイベントは約 4 年ごとに発生し、Bitcoin のプロトコルにハードコードされています。 3. 最新の半減により、報酬はブロックあたり 6.25 BTC から 3....

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

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

2026-09-13 18:00:17

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

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

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

2026-09-10 08:00:06

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

すべての記事を見る

User not found or password invalid

Your input is correct