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를 열어 보세요.
- 결정하고 공유. 지출자를 모른다면 지갑에서 요청을 거부하고 블록 탐색기에서 주소를 조회하세요. 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를 넘겨줄 수 있다는 뜻입니다. 잘 알려진 앱에 대한 승인도 주는 권한이 같으므로 Dangerous가 됩니다. 금액 0인 approve 같은 철회(revoke)는 Low risk로 표시됩니다. |
| 빨간색 spender 또는 operator | 사용자의 자산을 옮길 권리를 얻게 될 주소입니다. Permit2, Seaport, OpenSea conduit 등 일부 컨트랙트는 이름이 표시되며, 그 밖의 주소는 확인이 필요합니다. |
| 무제한 금액 | 2^256−1 또는 2^255 이상의 값, 그리고 Permit2 요청에서는 2^160−1일 때 표시됩니다. 지출자는 지금과 앞으로 그 토큰의 잔액 전부를 가져갈 수 있습니다. |
| 토큰 소수점이 적용된 금액 | Ethereum의 USDC, USDT, DAI, WETH는 원시 숫자가 변환됩니다. 예를 들어 1000000은 1 USDC가 됩니다. 다른 토큰은 소수점 18자리와 6자리로 읽은 원시 정수가 표시됩니다. |
| 만료와 기한 | 사실상 만료되지 않음(5000년 이후), 1년 넘게 유효함, 또는 이미 만료됨으로 표시됩니다. 만료되지 않는 permit이나 한도는 사용자가 잊어버린 뒤에도 계속 쓸 수 있습니다. |
| 32바이트 해시에 대한 블라인드 서명 | 지갑은 해시가 무엇을 뜻하는지 보여 줄 수 없으며, eth_sign의 경우 그것이 트랜잭션이나 permit일 수 있습니다. 직접 만든 해시에만 서명하세요. |
| Seaport 주문 검사 | 가격이 0인 리스팅, 다른 수령인이 제안자보다 더 많이 받는 경우, 제안된 항목이 다른 수령인 앞으로 다시 나타나는 경우입니다. 공격자에게 대금을 지급하는 가짜 NFT 리스팅의 전형적인 형태입니다. |
| Sign-In with Ethereum 도메인 | 로그인 메시지에는 요청한 사이트가 명시됩니다. 그 도메인이 지금 있는 사이트와 정확히 같지 않다면, 서명으로 다른 사람이 사용자로 로그인할 수 있습니다. |
| 하나의 셀렉터에 대한 두 가지 해석 | approve(address,uint256)은 ERC-20과 ERC-721에서 같은 호출입니다. 컨트랙트가 도구가 아는 몇 안 되는 토큰 중 하나가 아니면 두 해석이 모두 표시됩니다. |
더 많은 예시
컬렉션 전체에 대한 NFT 승인
0xa22cb465000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000000000000000000000000000000000000000000001Read as: transaction calldata(알려진 함수 셀렉터). 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자리)가 표시됩니다.
블라인드 eth_sign 요청
{"method":"eth_sign","params":["0x0000000000000000000000000000000000000001","0xabababababababababababababababababababababababababababababababab"]}Read as: JSON-RPC eth_sign request. Dangerous: Blind signature: 텍스트 대신 32바이트 해시이며, 드레이너가 악용했기 때문에 대부분의 지갑이 eth_sign을 비활성화하거나 숨겼다는 플래그가 붙습니다.
자주 묻는 질문
Signature Request Inspector는 무엇을 검사하나요?
EIP-712 타입 데이터, 트랜잭션 calldata, 트랜잭션 객체, personal_sign 또는 eth_sign 메시지를 디코딩하고 EIP-712 다이제스트를 계산합니다. 토큰 승인, setApprovalForAll, EIP-2612 및 DAI permit, Permit2 서명, 사용자가 아닌 다른 사람에게 대금을 지급하는 Seaport 주문, 32바이트 해시에 대한 블라인드 서명을 표시합니다.
빨간색으로 표시되지 않은 요청도 해로울 수 있나요?
네. 도구는 요청 자체만 읽습니다. 잔액, 기존 승인, 컨트랙트가 악성인지 여부는 알 수 없으며, 표에 없는 함수는 unknown으로 표시됩니다. 정상적인 앱에 대한 승인도 빨간색으로 표시됩니다. 어느 쪽이든 서명이 주는 권한은 같기 때문입니다.
붙여 넣은 요청이 어딘가로 전송되나요?
아니요. 디코딩과 해시 계산은 브라우저에서 실행되며, 페이지는 입력으로 어떤 네트워크 요청도 하지 않습니다. 서명 요청에는 비밀이 담겨 있지 않지만, 개인 키나 시드 문구는 어떤 웹사이트에도 절대 붙여 넣지 마세요.
금액이 작으면 승인이 안전한가요?
가져갈 수 있는 양이 그 금액으로 제한되지만, 지출자는 다시 묻지 않고 언제든 그것을 사용할 수 있습니다. 그래서 도구는 1 USDC 승인도 Dangerous로 표시합니다. 확인한 지출자에게 필요한 금액만 승인하세요.
approve 하나에 ERC-20과 ERC-721 해석이 모두 보이는 이유는 무엇인가요?
두 표준이 같은 함수 이름과 인자 유형을 쓰므로 0x 데이터만으로는 어느 쪽인지 알 수 없습니다. to 주소가 포함된 트랜잭션 전체를 붙여 넣고, 블록 탐색기에서 그 컨트랙트가 토큰인지 NFT 컬렉션인지 확인하세요.
여기서 빨간색으로 표시되는 요청에 이미 서명했습니다. 어떻게 해야 하나요?
빨리 행동하세요. 온체인 승인을 철회하고 남은 자산을 새 지갑으로 옮기세요. 서명했지만 아직 사용되지 않은 permit은 승인으로 나타나지 않으므로, 토큰을 옮기는 것이 더 안전한 조치입니다. 긴급 대처 가이드에 조치 순서가 나와 있습니다.