教育目的の参考情報であり、投資助言ではありません。投資により損失が生じる可能性があります。
直接の答え
ERC-2612 は EIP-712 署名で ERC-20 トークンの allowance を設定するため、別の approve トランザクションは不要です。この記事では Owner、Spender、Value、Nonce、Deadline と、チェーン上の結果を確認します。
有効なpermitがマイニングされると、トークンコントラクトはallowance(owner, spender)をvalueに設定し、所有者のnonceを 1 増やします。リレイヤーなど第三者が署名を送信できるため、所有者はトランザクションを送信したりガスを支払ったりする必要がありません。deadlineはpermitの送信時だけ検査され、既に設定されたallowanceを自動的に失効させません。残高が残る間、Spenderは上限内でtransferFromを呼び出せます。
すべて確認しても、資産・取引・システムの安全性が証明されるわけではありません。
仕組み
メッセージは owner、spender、value、nonce、deadline に結び付けられ、EIP-712 ドメインは対象のトークンコントラクトとチェーン ID に署名を結び付けます。コントラクトは block.timestamp <= deadline の場合だけ受理し、成功時に allowance を書き込んで nonce を増やします。後の期限が既に書き込まれた allowance を短くすることはありません。悪意のあるページは Spender を攻撃コントラクトに置き換え、value を 2^256-1 にしたり期限を遠くしたりします。
オンチェーンの操作は、ウォレット インターフェイス、RPC ブロードキャスト、コントラクトの実行、ブロック ファイナリティの 4 つの層に分割する必要があります。どのレイヤーの成功も、他のレイヤーの検証に代わることはできません。実際の結果は、正しいチェーン上のトランザクションの受信、イベント、コントラクトの保管および残高に基づいています。
例
ユーザーは 100 USDC だけを承認したいのに、署名された value は 2^256-1 で deadline は 10 年後です。成功した呼び出しはこの上限を設定して nonce を増やします。最初に 100 だけ送っても、allowance が残る限り攻撃者は後から入金された USDC を送れます。期限後は未使用の permit を送信できませんが、既に書き込まれた allowance は自動的に 0 になりません。approve(spender, 0) など信頼できる方法で取り消します。
この場合のガス、税率、ブロック時間は桁違いにしか表示されません。現在の契約ステータス、プールの流動性、権限を操作前に読み取る必要があります。金額は、精度エラーを避けるために、人間が判読できる金額、ドルの値、生の整数をチェーン上で同時に記録します。
リスク
プロトコルのゲインと最悪の場合の出口損失を比較します。 Gas が 5 倍に拡大し、価格への影響が 2 倍に拡大し、ステーブルコインが 5% 割引されると仮定します。あと 1 日参加すると退会できなくなります。週次または月次の収益がこうした摩擦をカバーできない場合、いわゆる高収益は十分な補償にはなりません。単一のプロトコルに障害が発生しても、ウォレット全体がガスの支払いや資産の転送ができなくなることはありません。
よくある誤解
-
誤解 1: フロントエンドの表示は事実です。フロントエンドはキャッシュされているか、インデックス付けが遅れているか、間違ったネットワークに接続されている可能性があるため、相互検証する必要があります。
-
誤解 2: ガスや滑りを増やすと、どんな故障も解決できる。ガスは仕分けにのみ影響し、スリッページは価格を緩和するだけです。許可、Nonce、および契約条件のエラーは自動的に修復されません。
-
誤解 3: 少量のテストが成功すれば、永続的な安全性が保証されます。管理者のアップグレード、動的なパラメータ、流動性の変更により結果が変化するため、ポジションを拡大する前に確認する必要があります。
関連トピック
出典
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (accessed: 2026-07-28)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (accessed: 2026-07-28)