暗号資産・ウォレット

署名リクエスト検査ツール

ローカルで動作新着

ツール自体は英語ですが、このページではお客様の言語でその使い方を説明しています。

署名リクエスト検査ツール を使用してください

機能の説明

ウォレットやサイトが署名を求めている内容を貼り付けると、それが何を許可するのかを平易な英語で確認できます。トークン承認、permit、Permit2の署名、他人に支払われるSeaportの出品は赤で示されます。

すべてブラウザ上で動作します。入力した内容は一切アップロードされません。

署名リクエスト検査ツール の使い方

  1. 元のリクエストをコピーする. 署名を求められている正確なテキストを取得します。EIP-712のJSON、トランザクションの0xデータ、トランザクションオブジェクト全体、JSON-RPCリクエスト、またはメッセージのテキストです。
  2. 貼り付けて検査する. 枠に貼り付けます。貼り付けると検査が始まります。Inspect(検査)またはCtrl+Enterを押してもかまいません。
  3. どう読まれたかを確認する. 最初の行には、入力が何として読まれたか(たとえばtransaction object)が示されます。誤っている場合は、Read the input asで正しい種類を選びます。
  4. 色付きのプレートを読む. バッジ、タイトル、概要が、署名すると何が許可されるのかを平易な英語で示します。その下の一覧にフラグがあり、最も重大なものは太字です。
  5. 各フィールドを確認する. 表のspenderまたはoperator、トークン、金額、期限、チェーンを確認します。生の値はDecoded argumentsまたはMessage fieldsを開いて確認します。
  6. 判断して共有する. spenderに心当たりがなければ、ウォレットでリクエストを拒否し、ブロックエクスプローラーでアドレスを調べてください。Copy reportで、リンクをデファングしたプレーンテキストの概要が得られます。

例

無制限のUSDC許可を与えるPermit2の署名

入力
{
  "types": {
    "EIP712Domain": [
      {
        "name": "name",
        "type": "string"
      },
      {
        "name": "chainId",
        "type": "uint256"
      },
      {
        "name": "verifyingContract",
        "type": "address"
      }
    ],
    "PermitSingle": [
      {
        "name": "details",
        "type": "PermitDetails"
      },
      {
        "name": "spender",
        "type": "address"
      },
      {
        "name": "sigDeadline",
        "type": "uint256"
      }
    ],
    "PermitDetails": [
      {
        "name": "token",
        "type": "address"
      },
      {
        "name": "amount",
        "type": "uint160"
      },
      {
        "name": "expiration",
        "type": "uint48"
      },
      {
        "name": "nonce",
        "type": "uint48"
      }
    ]
  },
  "primaryType": "PermitSingle",
  "domain": {
    "name": "Permit2",
    "chainId": 1,
    "verifyingContract": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
  },
  "message": {
    "details": {
      "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "amount": "1461501637330902918203684832716283019655932542975",
      "expiration": "281474976710655",
      "nonce": "0"
    },
    "spender": "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB",
    "sigDeadline": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
  }
}
出力(2026-10-20に記録)
Read as: EIP-712 typed data. Change this with “Read the input as”.

DangerousPermit2 PermitSingle: token allowance by signature (UNLIMITED)

Signing lets 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB move an unlimited amount of 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 (USDC token on Ethereum) out of your wallet through Permit2. The allowance never expires in practice. The spender submits this signature itself, so you will not see another prompt. Drainers favour Permit2 because many wallets have already approved Permit2 for apps such as Uniswap.

Unlimited amount: the spender can take your whole balance of the token.
The allowance never expires in practice.
The signature never expires in practice.
SPENDER	0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB
TOKEN	0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
USDC token on Ethereum

AMOUNT	Unlimited: 2^160−1, the Permit2 maximum (1461501637330902918203684832716283019655932542975)
ALLOWANCE EXPIRES	2^48−1 (Permit2 maximum): no practical expiry (beyond the year 5000)
NONCE	0
SIGNATURE VALID UNTIL (SIGDEADLINE)	2^256−1: no practical expiry (beyond the year 5000)
DOMAIN	name "Permit2"
CHAIN	Ethereum (chain ID 1)
VERIFYING CONTRACT	0x000000000022D473030F116dDEE9F6B43aC78BA3
Permit2 (Uniswap)

EIP-712 DIGEST (WHAT IS SIGNED)	0x579baa31b8f7279c82034e935d103d07caa27a817903937e201389d81d55984c
DOMAIN SEPARATOR	0x866a5aba21966af95d6c7ab78eb2b2fc913915c28be3b9aa07cc04ff903e3f28
MESSAGE HASH (HASHSTRUCT)	0xb646364eb4dc82faf68b61d79beb585797490532ff745845f3821e6f8573463c
PRIMARY TYPE	PermitSingle(PermitDetails details,address spender,uint256
…

赤のプレート:spender 0xbBbB…BBbBはPermit2を通じて無制限の量のUSDCを移動でき、許可も署名も期限切れになりません。EIP-712ダイジェストが計算されます。

チェック対象

シグナルその意味
リスクのバッジ:Dangerous、Check carefully、Low risk、NoteDangerousは、リクエストによってトークンやNFTを引き渡せることを意味します。承認は、よく知られたアプリに対するものでもDangerousになります。与えられる権限が同じだからです。金額0のapproveのような取り消しは、Low riskと表示されます。
赤で示されたspenderまたはoperatorあなたの資産を移動する権利を得るアドレスです。Permit2、Seaport、OpenSeaのconduitなど、いくつかのコントラクトには名前が表示されます。それ以外のアドレスは確認が必要です。
無制限の金額2^256−1、または2^255以上の値の場合に表示され、Permit2のリクエストでは2^160−1の場合に表示されます。spenderは、そのトークンの残高を今後の分も含めてすべて持ち出せます。
トークンの小数桁を反映した金額Ethereum上のUSDC、USDT、DAI、WETHでは、生の数値が換算されます。たとえば1000000は1 USDCになります。その他のトークンでは、生の整数を18桁と6桁の小数で読んだ値が表示されます。
期限と締め切り実質的に期限なし(5000年以降)、1年以上有効、またはすでに期限切れのいずれかです。期限のないpermitや許可は、あなたが忘れた後も長く使える状態のまま残ります。
32バイトのハッシュへのブラインド署名ウォレットはハッシュが何を表すのかを表示できず、eth_signの場合はトランザクションやpermitである可能性があります。自分で作成したハッシュにだけ署名してください。
Seaportの注文のチェック価格0の出品、出品者より他の受取人のほうが多く受け取る、提供したアイテムが別の受取人のものとして再び現れる、などです。攻撃者に支払われる偽のNFT出品に典型的なものです。
Sign-In with Ethereumのドメインログインメッセージには、求めているサイトの名前が書かれています。そのドメインが今いるサイトと完全に一致しなければ、その署名で他人があなたとしてログインできてしまう可能性があります。
1つのセレクターの2通りの読み方approve(address,uint256)は、ERC-20でもERC-721でも同じ呼び出しです。コントラクトがツールの知っている少数のトークンのいずれかでない限り、両方の読み方が表示されます。

その他の例

コレクション全体に対するNFTの承認

入力
0xa22cb465000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000000000000000000000000000000000000000000001
結果

Read as: transaction calldata (known function selector)。Dangerous:setApprovalForAll、つまりこのコレクションのすべてのNFTの管理権限です。Operator 0x000000000000000000000000000000000000dEaD、Approved true、Collection (to)は指定なしです。

トランザクション内の限定的なUSDC承認

入力
{"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0x0","chainId":1}
結果

Read as: transaction object。Dangerous:ERC-20 approval。概要には、0x000000000000000000000000000000000000dEaDがEthereum上のUSDCトークンを最大1000000単位まで、改めて確認を求めることなく移動できると示されます。表にはChain Ethereum (chain ID 1)、Value 0 ETH (0 wei)、Amount 1000000(注記:1 USDC (6 decimals))が表示されます。

ブラインドのeth_signリクエスト

入力
{"method":"eth_sign","params":["0x0000000000000000000000000000000000000001","0xabababababababababababababababababababababababababababababababab"]}
結果

Read as: JSON-RPC eth_sign request。Dangerous:ブラインド署名(テキストではなく32バイトのハッシュ)です。ドレイナーに悪用されたため、ほとんどのウォレットがeth_signを無効化または非表示にしたというフラグが付きます。

よくある質問

Signature Request Inspectorは何を確認しますか?

EIP-712の型付きデータ、トランザクションのcalldata、トランザクションオブジェクト、personal_signやeth_signのメッセージをデコードし、EIP-712ダイジェストを計算します。トークン承認、setApprovalForAll、EIP-2612とDAIのpermit、Permit2の署名、あなた以外に支払うSeaportの注文、32バイトのハッシュに対するブラインド署名を警告します。

赤で示されないリクエストでも有害なことはありますか?

あります。ツールが読むのはリクエストそのものだけです。残高、既存の承認、コントラクトが悪意あるものかどうかは見えず、表にない関数はunknownとして表示されます。正規のアプリに対する承認も赤で示されます。どちらの場合も、署名によって与えられる権限は同じだからです。

貼り付けたリクエストはどこかへ送信されますか?

いいえ。デコードとハッシュ計算はブラウザ内で行われ、ページが入力を使ってネットワークリクエストを行うことはありません。署名リクエストには秘密情報は含まれませんが、秘密鍵やシードフレーズは決してどのWebサイトにも貼り付けないでください。

金額が小さければ承認は安全ですか?

持ち出せる量はその金額に限られますが、spenderはあなたに再度確認することなく、いつでもそれを使えます。そのため、ツールは1 USDCの承認でもDangerousと表示します。必要な金額だけを、確認済みのspenderに承認してください。

1つのapproveについて、ERC-20とERC-721の2通りの読み方が表示されるのはなぜですか?

どちらの規格も同じ関数名と引数の型を使うため、0xデータだけではどちらなのか判別できません。toアドレスを含むトランザクション全体を貼り付け、そのコントラクトがトークンなのかNFTコレクションなのかをブロックエクスプローラーで確認してください。

ここで赤く表示されるリクエストにすでに署名してしまいました。どうすればよいですか?

すぐに行動してください。オンチェーンの承認を取り消し、残っているものを新しいウォレットに移してください。署名済みでまだ使われていないpermitは承認としては表示されないため、トークンを移すほうが安全な手段です。Emergency Guideに対処の順番が記載されています。

用語解説

PhishDestroyの調査