EIP-55, Bitcoin, TRON और Solana एड्रेस जाँचें और सही चेकसम वाला रूप देखें।
सिग्नेचर रिक्वेस्ट इंस्पेक्टर
यह उपकरण स्वयं अंग्रेज़ी में है; यह पृष्ठ इसे आपकी भाषा में समझाता है।
सिग्नेचर रिक्वेस्ट इंस्पेक्टर का उपयोग करें
यह क्या करता है
वॉलेट या कोई साइट आपसे जो साइन करने को कहती है, उसे पेस्ट करें और सरल अंग्रेज़ी में देखें कि वह किस चीज़ की अनुमति देगा। टोकन अप्रूवल, permit, Permit2 सिग्नेचर और ऐसी Seaport लिस्टिंग जो किसी और को भुगतान करती हैं, लाल रंग में चिह्नित की जाती हैं।
यह पूरी तरह से आपके ब्राउज़र में चलता है: आप जो कुछ भी दर्ज करते हैं वह अपलोड नहीं होता।
सिग्नेचर रिक्वेस्ट इंस्पेक्टर का उपयोग कैसे करें
- मूल रिक्वेस्ट कॉपी करें. जिस टेक्स्ट पर आपसे साइन करने को कहा जा रहा है, उसे ठीक वैसा ही लें: EIP-712 JSON, किसी ट्रांज़ैक्शन का 0x डेटा, पूरा ट्रांज़ैक्शन ऑब्जेक्ट, कोई JSON-RPC रिक्वेस्ट या मैसेज का टेक्स्ट।
- पेस्ट करें और जाँचें. उसे बॉक्स में पेस्ट करें। पेस्ट करते ही जाँच शुरू हो जाती है; आप Inspect (जाँचें) या Ctrl+Enter भी दबा सकते हैं।
- देखें कि इनपुट कैसे पढ़ा गया. पहली लाइन बताती है कि इनपुट को किस रूप में पढ़ा गया, जैसे transaction object। अगर यह गलत है, तो Read the input as (इनपुट को इस रूप में पढ़ें) में सही प्रकार चुनें।
- रंगीन प्लेट पढ़ें. बैज, शीर्षक और सारांश सरल अंग्रेज़ी में बताते हैं कि साइन करने से क्या करने की अनुमति मिल जाएगी। उसके नीचे की सूची में चेतावनियाँ होती हैं; सबसे गंभीर चेतावनियाँ बोल्ड में होती हैं।
- फ़ील्ड जाँचें. तालिका में spender या operator, टोकन, राशि, एक्सपायरी और चेन देखें। मूल मान देखने के लिए Decoded arguments या Message fields खोलें।
- फ़ैसला करें और शेयर करें. अगर आप 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"
}
}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 या Note | Dangerous का मतलब है कि रिक्वेस्ट टोकन या NFT किसी और को सौंप सकती है। अप्रूवल को यह बैज किसी जाने-माने ऐप के लिए भी मिलता है, क्योंकि दिया गया अधिकार वही रहता है। रिवोक, जैसे amount 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 के बाद), एक साल से ज़्यादा के लिए मान्य, या पहले ही समाप्त। जो permit या अलाउंस कभी समाप्त नहीं होता, वह आपके भूल जाने के बहुत बाद तक इस्तेमाल किया जा सकता है। |
| 32-बाइट हैश का ब्लाइंड सिग्नेचर | वॉलेट यह नहीं दिखा सकता कि हैश किस चीज़ का है, और eth_sign के साथ यह कोई ट्रांज़ैक्शन या permit हो सकता है। सिर्फ़ उसी हैश पर साइन करें जो आपने खुद बनाया हो। |
| Seaport ऑर्डर की जाँच | ज़ीरो कीमत वाली लिस्टिंग, दूसरे प्राप्तकर्ताओं को offerer से ज़्यादा मिलना, या ऑफ़र की गई चीज़ों का किसी दूसरे प्राप्तकर्ता के साथ फिर से दिखना: ये हमलावर को भुगतान करने वाली नकली NFT लिस्टिंग के आम लक्षण हैं। |
| Sign-In with Ethereum डोमेन | लॉगिन मैसेज में उस साइट का नाम होता है जो साइन करने को कह रही है। अगर वह डोमेन ठीक वही साइट नहीं है जिस पर आप हैं, तो सिग्नेचर किसी और को आपके नाम से लॉग इन करा सकता है। |
| एक selector की दो व्याख्याएँ | approve(address,uint256) ERC-20 और ERC-721 में एक ही कॉल है। जब तक कॉन्ट्रैक्ट उन गिने-चुने टोकन में से न हो जिन्हें टूल जानता है, दोनों व्याख्याएँ दिखाई जाती हैं। |
और उदाहरण
पूरे कलेक्शन के लिए NFT अप्रूवल
0xa22cb465000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000000000000000000000000000000000000000000001Read as: transaction calldata (known function selector)। Dangerous: setApprovalForAll: control of ALL your NFTs in this collection (इस कलेक्शन के आपके सभी NFT पर नियंत्रण)। Operator 0x000000000000000000000000000000000000dEaD, Approved true, Collection (to) not given (नहीं दिया गया)।
ट्रांज़ैक्शन में सीमित 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: Blind signature: a 32-byte hash instead of text (टेक्स्ट की जगह 32-बाइट हैश), साथ में यह चेतावनी कि ज़्यादातर वॉलेट ने eth_sign को बंद कर दिया या छिपा दिया, क्योंकि ड्रेनर इसका इस्तेमाल करते थे।
अक्सर पूछे जाने वाले प्रश्न
Signature Request Inspector क्या जाँचता है?
यह EIP-712 typed data, ट्रांज़ैक्शन calldata, ट्रांज़ैक्शन ऑब्जेक्ट और personal_sign या eth_sign मैसेज डिकोड करता है और EIP-712 डाइजेस्ट की गणना करता है। यह टोकन अप्रूवल, setApprovalForAll, EIP-2612 और DAI permit, Permit2 सिग्नेचर, आपके अलावा किसी और को भुगतान करने वाले Seaport ऑर्डर और 32-बाइट हैश पर ब्लाइंड सिग्नेचर को चिह्नित करता है।
क्या लाल रंग में चिह्नित न की गई रिक्वेस्ट भी नुकसानदेह हो सकती है?
हाँ। टूल सिर्फ़ रिक्वेस्ट को ही पढ़ता है: वह बैलेंस, पहले से दिए गए अप्रूवल या यह नहीं देख सकता कि कोई कॉन्ट्रैक्ट दुर्भावनापूर्ण है या नहीं, और उसकी तालिका से बाहर के फ़ंक्शन अज्ञात के रूप में दिखाए जाते हैं। वैध ऐप के अप्रूवल भी लाल रंग में दिखते हैं, क्योंकि दोनों ही स्थितियों में सिग्नेचर वही अधिकार देता है।
क्या पेस्ट की गई रिक्वेस्ट कहीं भेजी जाती है?
नहीं। डिकोडिंग और हैशिंग आपके ब्राउज़र में होती है और पेज आपके इनपुट के साथ कोई नेटवर्क रिक्वेस्ट नहीं करता। सिग्नेचर रिक्वेस्ट में कोई गुप्त जानकारी नहीं होती, फिर भी किसी भी वेबसाइट में कभी प्राइवेट की या सीड फ़्रेज़ पेस्ट न करें।
क्या छोटी राशि होने से अप्रूवल सुरक्षित हो जाता है?
इससे ली जा सकने वाली रकम उसी राशि तक सीमित हो जाती है, लेकिन spender आपसे दोबारा पूछे बिना किसी भी समय उसका इस्तेमाल कर सकता है। इसी वजह से टूल 1 USDC के अप्रूवल को भी Dangerous दिखाता है। सिर्फ़ उतनी ही राशि अप्रूव करें जितनी ज़रूरी हो, और सिर्फ़ ऐसे spender के लिए जिसकी आपने जाँच की हो।
एक ही approve के लिए मुझे ERC-20 और ERC-721 दोनों व्याख्याएँ क्यों दिखती हैं?
दोनों स्टैंडर्ड एक ही फ़ंक्शन नाम और आर्गुमेंट टाइप इस्तेमाल करते हैं, इसलिए सिर्फ़ 0x डेटा से यह पता नहीं चलता कि यह कौन-सा है। to एड्रेस के साथ पूरा ट्रांज़ैक्शन पेस्ट करें, और ब्लॉक एक्सप्लोरर पर जाँचें कि वह कॉन्ट्रैक्ट कोई टोकन है या NFT कलेक्शन।
मैंने ऐसी रिक्वेस्ट पर पहले ही साइन कर दिया है जो यहाँ लाल दिखती है। अब क्या करें?
जल्दी कदम उठाएँ। ऑन-चेन अप्रूवल रिवोक करें और जो बचा है उसे नए वॉलेट में ट्रांसफ़र करें। साइन किया गया permit, जिसका अभी इस्तेमाल नहीं हुआ है, अप्रूवल के रूप में नहीं दिखता, इसलिए टोकन ट्रांसफ़र करना ज़्यादा सुरक्षित कदम है। आपातकालीन गाइड में कार्रवाइयों का क्रम दिया गया है।