Tiền mã hóa và ví

Trình kiểm tra yêu cầu chữ ký

Chạy cục bộMới

Công cụ này được hiển thị bằng tiếng Anh; trang này giải thích về công cụ đó bằng ngôn ngữ của bạn.

Sử dụng Trình kiểm tra yêu cầu chữ ký

Chức năng của nó là gì?

Dán nội dung mà ví hoặc trang web yêu cầu bạn ký vào và xem bằng tiếng Anh dễ hiểu rằng việc đó sẽ cho phép điều gì. Các giao dịch phê duyệt token, giấy phép, chữ ký Permit2 và danh sách Seaport liên quan đến việc thanh toán cho người khác sẽ được đánh dấu màu đỏ.

Ứng dụng này hoạt động hoàn toàn trên trình duyệt của bạn: mọi thông tin bạn nhập vào đều không được tải lên.

Cách sử dụng Trình kiểm tra yêu cầu chữ ký

  1. Sao chép yêu cầu thô. Hãy lấy chính xác đoạn văn bản mà bạn được yêu cầu ký: tệp JSON EIP-712, dữ liệu 0x của một giao dịch, toàn bộ đối tượng giao dịch, một yêu cầu JSON-RPC hoặc nội dung tin nhắn.
  2. Dán và kiểm tra. Dán nội dung vào ô. Quá trình kiểm tra sẽ bắt đầu ngay khi bạn dán; bạn cũng có thể nhấn nút “Inspect” hoặc tổ hợp phím Ctrl+Enter.
  3. Kiểm tra xem nó đã được đọc như thế nào. Dòng đầu tiên cho biết dữ liệu đầu vào được đọc là gì, ví dụ như đối tượng giao dịch. Nếu thông tin này không chính xác, hãy chọn loại đúng trong mục “Đọc dữ liệu đầu vào là”.
  4. Hãy xem hình minh họa có màu. Biểu tượng, tiêu đề và phần tóm tắt giải thích bằng tiếng Anh đơn giản những gì việc ký kết sẽ mang lại. Danh sách bên dưới liệt kê các cảnh báo; những cảnh báo nghiêm trọng nhất được in đậm.
  5. Kiểm tra các trường. Hãy xem các trường “người chi tiêu” hoặc “người thực hiện giao dịch”, “token”, “số tiền”, “thời hạn” và “chuỗi” trong bảng. Mở các trường “Decoded arguments” hoặc “Message” để xem các giá trị thô.
  6. Quyết định và chia sẻ. Nếu bạn không biết người chi tiêu là ai, hãy từ chối yêu cầu đó trong ví của bạn và tra cứu các địa chỉ đó trên trình khám phá khối. Báo cáo sao chép sẽ cung cấp một bản tóm tắt dưới dạng văn bản thuần túy với các liên kết đã được vô hiệu hóa.

Ví dụ

Chữ ký Permit2 để cấp hạn mức USDC không giới hạn

Dữ liệu đầu vào
{
  "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"
  }
}
Kết quả (ghi lại vào ngày 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
…

Bảng màu đỏ: người chi tiêu 0xbBbB…BBbB có thể chuyển một lượng USDC không giới hạn qua Permit2, và cả hạn mức lẫn chữ ký đều không hết hạn. Bản tóm tắt EIP-712 đã được tính toán.

Nó kiểm tra những gì

Tín hiệuÝ nghĩa của điều đó là gì
Biểu tượng rủi ro: Nguy hiểm, Kiểm tra kỹ lưỡng, Rủi ro thấp hoặc Lưu ý“Nguy hiểm” có nghĩa là yêu cầu đó có thể chuyển giao token hoặc NFT. Ngay cả với một ứng dụng nổi tiếng, việc cấp quyền vẫn được coi là nguy hiểm, vì quyền hạn được cấp là như nhau. Việc thu hồi quyền (chẳng hạn như cấp quyền với số lượng bằng 0) sẽ được hiển thị là “Rủi ro thấp”.
Người chi tiêu hay người điều hành đang thua lỗĐịa chỉ sẽ được cấp quyền chuyển nhượng tài sản của bạn. Một số hợp đồng đã được nêu tên, chẳng hạn như Permit2, Seaport và kênh OpenSea; bất kỳ địa chỉ nào khác đều cần được kiểm tra.
Số lượng không giới hạnXuất hiện đối với giá trị 2^256−1 hoặc bất kỳ giá trị nào từ 2^255 trở lên, và trong các yêu cầu Permit2 đối với giá trị 2^160−1. Người chi tiêu có thể chiếm toàn bộ số dư của bạn trong token đó, cả ngay bây giờ lẫn sau này.
Số tiền có số thập phân biểu thị bằng mã thông báoĐối với USDC, USDT, DAI và WETH trên Ethereum, số nguyên sẽ được chuyển đổi; ví dụ: 1000000 sẽ trở thành 1 USDC. Đối với các token khác, bạn sẽ thấy số nguyên được hiển thị kèm theo hệ số 18 và 6 chữ số thập phân.
Hạn sử dụng và thời hạnTrên thực tế, không bao giờ hết hạn (kể cả sau năm 5000), có hiệu lực trên một năm, hoặc đã hết hạn. Một giấy phép hoặc khoản trợ cấp không bao giờ hết hạn vẫn có thể sử dụng được ngay cả khi bạn đã quên mất nó từ lâu.
Chữ ký mù của một hàm băm 32 byteVí không thể hiển thị ý nghĩa của giá trị băm đó, và với hàm eth_sign, giá trị băm đó có thể là một giao dịch hoặc một lệnh cho phép. Chỉ ký vào giá trị băm do chính bạn tạo ra.
Kiểm tra đơn hàng tại cảng biểnDanh sách niêm yết giá 0, những người nhận khác nhận được nhiều hơn người rao bán, hoặc các mặt hàng được rao bán lại xuất hiện với một người nhận khác: đây là những dấu hiệu điển hình của các danh sách NFT giả mạo nhằm trả tiền cho kẻ tấn công.
Đăng nhập bằng tên miền EthereumMột thông báo đăng nhập sẽ nêu tên trang web yêu cầu đăng nhập. Nếu tên miền đó không hoàn toàn trùng khớp với trang web bạn đang truy cập, chữ ký đó có thể khiến người khác đăng nhập dưới danh nghĩa của bạn.
Hai cách đọc của một bộ chọnapprove(address, uint256) là lệnh gọi giống nhau trong ERC-20 và ERC-721. Trừ khi hợp đồng đó thuộc một trong số ít các token mà công cụ này nhận diện được, cả hai giá trị đọc được sẽ được hiển thị.

Các ví dụ khác

Phê duyệt NFT cho toàn bộ bộ sưu tập

Dữ liệu đầu vào
0xa22cb465000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000000000000000000000000000000000000000000001
Kết quả

Đọc là: dữ liệu gọi giao dịch (bộ chọn hàm đã biết). Nguy hiểm: setApprovalForAll: quyền kiểm soát TẤT CẢ các NFT của bạn trong bộ sưu tập này. Người thực hiện 0x000000000000000000000000000000000000dEaD, Approved true, Bộ sưu tập (đích) không được chỉ định.

Số lượng USDC được phê duyệt trong một giao dịch bị giới hạn

Dữ liệu đầu vào
{"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0x0","chainId":1}
Kết quả

Đọc là: đối tượng giao dịch. Nguy hiểm: sự chấp thuận theo tiêu chuẩn ERC-20. Tóm tắt cho biết 0x000000000000000000000000000000000000dEaD có thể chuyển tối đa 1.000.000 đơn vị token USDC trên Ethereum mà không cần xin phép lại. Bảng hiển thị Chuỗi Ethereum (ID chuỗi 1), Giá trị 0 ETH (0 wei) và Số lượng 1.000.000 kèm chú thích 1 USDC (6 chữ số thập phân).

Yêu cầu eth_sign không xác định

Dữ liệu đầu vào
{"method":"eth_sign","params":["0x0000000000000000000000000000000000000001","0xabababababababababababababababababababababababababababababababab"]}
Kết quả

Đọc là: Yêu cầu eth_sign qua JSON-RPC. Nguy hiểm: Chữ ký mù: một hàm băm 32 byte thay vì văn bản, kèm theo thông tin rằng hầu hết các ví đã vô hiệu hóa hoặc ẩn chức năng eth_sign vì những kẻ lừa đảo đã lợi dụng nó.

Câu hỏi thường gặp

Trình kiểm tra Yêu cầu Chữ ký kiểm tra những gì?

Nó giải mã dữ liệu có kiểu EIP-712, dữ liệu gọi giao dịch (calldata), các đối tượng giao dịch và các thông điệp `personal_sign` hoặc `eth_sign`, đồng thời tính toán bản tóm tắt (digest) theo tiêu chuẩn EIP-712. Nó đánh dấu các trường hợp phê duyệt token, setApprovalForAll, các quyền EIP-2612 và DAI, chữ ký Permit2, các lệnh Seaport thanh toán cho người khác ngoài bạn, và các chữ ký mù trên một hàm băm 32 byte.

Một yêu cầu không được đánh dấu màu đỏ liệu có thể gây hại không?

Đúng vậy. Công cụ này chỉ đọc nội dung yêu cầu: nó không thể xem số dư, các phê duyệt hiện có hay liệu một hợp đồng có độc hại hay không, và các chức năng nằm ngoài bảng dữ liệu của nó sẽ được hiển thị là “không xác định”. Các phê duyệt dành cho các ứng dụng hợp pháp cũng được đánh dấu màu đỏ, bởi vì chữ ký vẫn cấp cùng một quyền hạn trong cả hai trường hợp.

Yêu cầu đã được dán có được gửi đi đâu không?

Không. Quá trình giải mã và băm được thực hiện ngay trong trình duyệt của bạn và trang web sẽ không gửi bất kỳ yêu cầu mạng nào liên quan đến dữ liệu bạn nhập. Yêu cầu chữ ký không chứa thông tin bí mật nào, nhưng bạn tuyệt đối không được dán khóa riêng tư hoặc cụm từ hạt giống vào bất kỳ trang web nào.

Một số tiền nhỏ có đảm bảo việc phê duyệt diễn ra an toàn không?

Tính năng này giới hạn số tiền có thể rút ở mức đó, nhưng người chi tiêu có thể sử dụng số tiền đó bất cứ lúc nào mà không cần phải xin phép bạn lần nữa. Đó là lý do tại sao công cụ này vẫn hiển thị việc phê duyệt 1 USDC là “Nguy hiểm”. Chỉ nên phê duyệt số tiền bạn cần, dành cho người chi tiêu mà bạn đã kiểm tra kỹ lưỡng.

Tại sao tôi lại thấy hai giá trị ERC-20 và ERC-721 cho một lệnh phê duyệt?

Cả hai tiêu chuẩn đều sử dụng cùng tên hàm và các kiểu tham số, do đó chỉ riêng dữ liệu 0x không đủ để xác định đó là tiêu chuẩn nào. Hãy dán toàn bộ giao dịch kèm theo địa chỉ người nhận, sau đó kiểm tra trên trình khám phá khối để xác định xem hợp đồng đó là token hay bộ sưu tập NFT.

Tôi đã ký vào đơn yêu cầu mà ở đây hiển thị màu đỏ rồi. Giờ phải làm sao?

Hãy hành động nhanh chóng. Hủy các quyền phê duyệt trên chuỗi và chuyển số token còn lại sang một ví mới. Một giấy phép đã được ký nhưng chưa được sử dụng sẽ không hiển thị dưới dạng quyền phê duyệt, do đó việc chuyển các token là bước an toàn hơn. Hướng dẫn Khẩn cấp liệt kê thứ tự các bước cần thực hiện.

Giải thích các thuật ngữ

Nghiên cứu của PhishDestroy