العملات المشفرة والمحافظ

فاحص طلبات التوقيع

تعمل محليًاجديدة

الأداة نفسها باللغة الإنجليزية؛ وهذه الصفحة تشرحها بلغتك.

استخدم فاحص طلبات التوقيع

ما الذي يفعله

الصق ما تطلب منك محفظة أو موقع توقيعه، واعرف بلغة بسيطة ما الذي سيفوّض به. تُعلَّم بالأحمر موافقات الرموز (token approvals) وتواقيع permit وPermit2 وقوائم Seaport التي تدفع لطرف آخر.

يعمل التطبيق بالكامل داخل متصفحك: ولا يتم تحميل أي شيء تدخله.

كيفية استخدام فاحص طلبات التوقيع

  1. انسخ الطلب الخام. خذ النص الدقيق المطلوب منك توقيعه: JSON الخاص بـ EIP-712، أو بيانات 0x لمعاملة، أو كائن المعاملة كاملًا، أو طلب JSON-RPC، أو نص الرسالة.
  2. الصق وافحص. الصقه في المربع. يبدأ الفحص عند اللصق؛ ويمكنك أيضًا الضغط على Inspect (فحص) أو Ctrl+Enter.
  3. تحقق من كيفية قراءته. يذكر السطر الأول كيف قُرئت المدخلات، مثل transaction object. وإذا كان ذلك خاطئًا، فاختر النوع الصحيح في Read the input as.
  4. اقرأ اللوحة الملوّنة. تقول الشارة والعنوان والملخص بلغة بسيطة ما الذي سيتيحه التوقيع. وتضم القائمة تحتها العلامات؛ وأخطرها بخط عريض.
  5. افحص الحقول. انظر إلى spender أو operator، والرمز، والمبلغ، والانتهاء، والشبكة في الجدول. وافتح Decoded arguments أو Message fields للقيم الخام.
  6. قرّر وشارك. إذا كنت لا تعرف الطرف المصرَّح له بالإنفاق، فارفض الطلب في محفظتك وابحث عن العناوين في مستكشف كتل. ويعطيك Copy report ملخصًا نصيًا عاديًا مع روابط محيَّدة.

مثال

توقيع Permit2 لسماح غير محدود بـ USDC

الإدخال
{
  "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
…

لوحة حمراء: يستطيع الطرف المصرَّح له بالإنفاق 0xbBbB…BBbB نقل كمية غير محدودة من USDC عبر Permit2، ولا ينتهي السماح ولا التوقيع. ويُحسب ملخص EIP-712 (digest).

ما الذي يتحقق منه

إشارةماذا يعني ذلك
شارة الخطورة: Dangerous أو Check carefully أو Low risk أو Noteتعني Dangerous أن الطلب قد يسلّم رموزًا أو NFT. وتحصل عليها الموافقات حتى لتطبيق معروف، لأن الصلاحية الممنوحة هي نفسها. أما الإلغاء، مثل approve بمبلغ 0، فيُعرض على أنه Low risk.
spender أو operator بالأحمرالعنوان الذي سيحصل على حق نقل أصولك. تُسمّى بعض العقود، مثل Permit2 وSeaport وOpenSea conduit؛ وأي عنوان آخر يحتاج إلى فحص.
مبلغ غير محدوديُعرض للقيمة 2^256−1 أو أي قيمة تساوي 2^255 أو أكثر، وفي طلبات Permit2 للقيمة 2^160−1. ويستطيع الطرف المصرَّح له أخذ رصيدك كاملًا من ذلك الرمز، الآن ولاحقًا.
المبلغ مع المنازل العشرية للرمزبالنسبة لـ USDC وUSDT وDAI وWETH على Ethereum يُحوَّل الرقم الخام، فمثلًا يصبح 1000000 هو 1 USDC. أما الرموز الأخرى فترى العدد الصحيح الخام مقروءًا بـ 18 منزلة عشرية وبـ 6.
الانتهاء والمهلةلا ينتهي عمليًا (بعد عام 5000)، أو صالح لأكثر من سنة، أو منتهٍ بالفعل. والـ permit أو السماح الذي لا ينتهي يبقى قابلًا للاستخدام طويلًا بعد أن تنساه.
توقيع أعمى لبصمة من 32 بايتلا تستطيع المحفظة إظهار ما تمثله البصمة، ومع eth_sign قد تكون معاملة أو permit. لا توقّع إلا بصمة أنتجتها بنفسك.
فحوص أوامر Seaportقائمة بيع بسعر صفري، أو مستلمون آخرون يحصلون على أكثر مما يحصل عليه صاحب العرض، أو عناصر معروضة تظهر مجددًا بمستلم آخر: وهذا نمط قوائم NFT المزيفة التي تدفع للمهاجم.
نطاق Sign-In with Ethereumتسمّي رسالة تسجيل الدخول الموقع الذي يطلبها. وإذا لم يكن ذلك النطاق هو الموقع الذي أنت عليه بالضبط، فقد يتيح التوقيع لشخص آخر تسجيل الدخول باسمك.
قراءتان لمحدِّد دالة واحد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 يستطيع نقل ما يصل إلى 1000000 وحدة من رمز USDC على Ethereum دون أن يسأل مجددًا. ويعرض الجدول 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: Blind signature: بصمة من 32 بايت بدلًا من نص، مع التنبيه إلى أن معظم المحافظ عطّلت eth_sign أو أخفته لأن أدوات الاستنزاف استخدمته.

الأسئلة الشائعة

ماذا يفحص فاحص طلبات التوقيع؟

يفك ترميز بيانات EIP-712 المنظَّمة (typed data)، وبيانات استدعاء المعاملات (calldata)، وكائنات المعاملات، ورسائل personal_sign أو eth_sign، ويحسب ملخص EIP-712. وينبّه إلى موافقات الرموز، وsetApprovalForAll، وتواقيع permit وفق EIP-2612 وDAI، وتواقيع Permit2، وأوامر Seaport التي تدفع لشخص غيرك، والتواقيع العمياء على بصمة من 32 بايت.

هل يمكن أن يكون الطلب غير المعلَّم بالأحمر ضارًا مع ذلك؟

نعم. تقرأ الأداة الطلب نفسه فقط: فلا ترى الأرصدة ولا الموافقات الموجودة ولا ما إذا كان العقد خبيثًا، وتُعرض الدوال غير الموجودة في جدولها على أنها غير معروفة. وتُعلَّم موافقات التطبيقات المشروعة بالأحمر أيضًا، لأن التوقيع يمنح الصلاحية نفسها في الحالتين.

هل يُرسل الطلب الملصوق إلى أي مكان؟

لا. يجري فك الترميز وحساب البصمة داخل متصفحك ولا تُجري الصفحة أي طلبات شبكية بمدخلاتك. لا يحمل طلب التوقيع أي سر، لكن لا تلصق أبدًا مفتاحًا خاصًا أو عبارة استرداد في أي موقع ويب.

هل يجعل المبلغ الصغير الموافقة آمنة؟

يحدّ ما يمكن أخذه بذلك المبلغ، لكن الطرف المصرَّح له يستطيع استخدامه في أي وقت دون أن يسألك مجددًا. ولهذا تظل الأداة تعرض موافقة على 1 USDC على أنها Dangerous. لا توافق إلا على المبلغ الذي تحتاجه، ولطرف تحققت منه.

لماذا أرى قراءة ERC-20 وقراءة ERC-721 لاستدعاء approve واحد؟

يستخدم المعياران اسم الدالة نفسه وأنواع الوسائط نفسها، لذا لا تقول بيانات 0x وحدها أيهما المقصود. الصق المعاملة كاملة مع عنوان to، وتحقق في مستكشف كتل مما إذا كان ذلك العقد رمزًا أم مجموعة NFT.

وقّعت بالفعل طلبًا يظهر هنا بالأحمر. ماذا الآن؟

تصرّف بسرعة. ألغِ الموافقات على السلسلة (on-chain) وانقل ما تبقى إلى محفظة جديدة. والـ permit الموقّع الذي لم يُستخدم بعد لا يظهر كموافقة، لذا فنقل الرموز هو الخطوة الأكثر أمانًا. ويسرد دليل الطوارئ (Emergency Guide) ترتيب الإجراءات.

شرح المصطلحات

أبحاث PhishDestroy