메인 콘텐츠로 건너뛰기

지갑 연결, 메시지 서명, 트랜잭션 서명, 토큰 승인에는 어떤 차이가 있나요?

U
작성자: UKey Wallet

개인 정보 보호, 권한 및 서명 보안

EVM 기반 DApp에서는 지갑 연결, 메시지 서명, 트랜잭션 서명, 암호화 토큰 사용 권한 부여라는 네 가지 작업이 차례로 나타나는 경우가 많습니다. 이러한 작업은 동일한 액세스를 제공하지 않습니다. 연결은 계정과 웹사이트 사이에 통신 채널을 생성합니다. 메시지 서명은 신원을 증명하거나 의도를 표현합니다. 트랜잭션 서명은 브로드캐스트할 수 있는 트랜잭션을 생성합니다. 토큰 권한을 통해 승인된 당사자(Spender) 정의된 한도 내에서 자산을 사용합니다. 금액이 0이거나 네트워크 수수료가 없는 경우(Gas) 요청을 안전하게 만들지 않습니다. 각 요청을 확인하기 전에 이해하십시오.

1. 네 가지 작업은 어떻게 다릅니까?

액션

주요 목적

일반적으로 블록체인에 기록됨 / 일반적으로 네트워크 요금이 필요함(Gas)

주요 위험

지갑을 연결하세요

선택한 공개 주소와 네트워크를 웹사이트와 공유하고 나중에 요청할 수 있는 채널을 제공합니다.

아니오 / 아니오

주소 관련 정보를 공개하고 나중에 서명을 요청할 수 있도록 합니다.

메시지에 서명하세요

텍스트 또는 구조화된 데이터에 대한 암호화 서명을 생성합니다.

대개 그렇지 않다 / 대개 그렇지 않다

메시지는 로그인에 대한 의도를 표현하거나, 주문을 하거나, 서명된 권한을 부여할 수 있습니다(Permit)

거래에 서명하세요

네트워크에 제출할 수 있는 거래 또는 계약 작업을 승인합니다.

예, 브로드캐스트 및 성공적인 실행 후 / 일반적으로 예

성공적인 실행은 자산을 이전하거나 계약 상태를 변경할 수 있습니다.

토큰 권한 부여

승인된 당사자를 허용합니다(Spender) 금액이나 규칙 내에서 토큰이나 NFT를 사용합니다.

권한 생성 방법에 따라 다름

허가가 발효된 후 승인된 당사자는 자산 소유자의 다른 서명 없이 이를 사용할 수 있습니다.

중요한 차이점: 토큰 권한은 권한 상태이며 처음 세 가지 작업과 평행한 네 번째 유형의 서명이 아닙니다. 블록체인 트랜잭션은 승인 기능(approve) 권한을 생성하거나 변경합니다. 또는 서명된 권한 메시지(Permit) 나중에 제출할 수 있습니다. 서명만으로는 블록체인가 변경되지 않습니다. 서명된 메시지가 성공적으로 제출된 후에만 권한이 기록될 수 있습니다.

2. 지갑 연결과 메시지 서명은 무엇을 의미하나요?

지갑을 연결하세요

지갑 연결은 일반적으로 지갑 연결 인터페이스(Provider). 표준 연결 요청은 웹 사이트에 개인 키 또는 시드 구문를 제공하지 않으며 자동으로 자산에 서명하거나 전송하지 않습니다. 그러나 웹사이트는 사용자가 선택한 공개 주소와 네트워크를 수신할 수 있으며 나중에 지갑에 요청을 보낼 수 있습니다. 웹사이트가 공개 주소를 알고 나면 연결이 종료된 후에도 해당 주소의 공개 블록체인 기록을 계속 쿼리할 수 있습니다. 웹사이트에서 시드 구문 또는 개인 키를 요청하면 즉시 중지하고 공식 진입점을 확인하세요.

메시지에 서명하세요

메시지 서명은 일반적으로 로그인, 조건 수락, 오프체인 주문, 투표 또는 EIP-712에서 정의한 구조화된 데이터에 사용됩니다. 일반적으로 블록체인에 데이터를 기록하지 않으며 서명자는 일반적으로 네트워크 요금을 지불하지 않습니다(Gas). 그러나 수수료를 지불하지 않는다고 해서 해당 요청에 자산 위험이 없다는 의미는 아닙니다. 지갑에 읽을 수 있는 정보가 표시되면 표시된 각 필드를 검토하세요. 도메인, 네트워크 식별자(Chain ID), 계약 주소 필드(verifyingContract), 승인된 당사자(Spender), 금액, 만료 시간이 표시됩니다. 지갑에 이해할 수 없는 원시 데이터나 16진수 콘텐츠만 표시되면 중지하세요. 요청을 진행하지 마세요. 참조 16진수 데이터와 0원 거래를 이용한 사기란 무엇인가요?.

3. 거래 서명과 토큰 권한는 언제 적용되나요?

트랜잭션에 서명한다고 해서 블록체인에서 실행되었다는 의미는 아닙니다.

서명은 서명된 트랜잭션을 생성합니다. 블록체인 상태 자체는 변경되지 않습니다. 거래가 브로드캐스트되고, 블록에 포함되고, 성공적으로 실행된 후에만 계정 잔액, 계약 상태 또는 권한이 변경됩니다. 서명된 트랜잭션이 네트워크로 전송되지 않을 수 있습니다. 실행 중에 교체되거나, 만료되거나, 실패할 수도 있습니다. 인터페이스가 표시되는 경우 0 ETH, 이는 거래에 ETH가 직접 포함되지 않는다는 의미일 뿐입니다. 사용자는 여전히 네트워크 요금을 지불할 수 있습니다(Gas), 계약 작업은 여전히 권한을 생성하거나 암호화 토큰을 전송하거나 다른 블록체인 상태를 변경할 수 있습니다.

권한 메시지에 서명한다고 해서 권한이 적용되었다는 의미는 아닙니다.

서명된 권한 작업(Permit)는 일반적으로 나중에 제출할 수 있는 메시지를 생성합니다. 서명을 생성해도 블록체인의 권한 양은 변경되지 않습니다. 서명된 메시지가 성공적으로 제출되어야 합니다. 이때 해당 시퀀스 값(nonce), 만료 시간 및 기타 유효성 검사 조건이 여전히 유효해야 합니다. 그래야만 권한이 블록체인에 기록될 수 있습니다. 허가가 발효된 후 승인된 당사자(Spender)는 나중에 해당 규칙, 승인 금액 및 계정 잔액 내에서 권한을 사용할 수 있습니다. 수명이 긴 권한의 위험에 대해서는 다음을 참조하세요. 무제한 승인이란 무엇입니까?.

4. DApp 상호작용은 항상 네 가지 고정된 단계를 따르지는 않습니다.

암호화-토큰 교환(Swap)에는 지갑 연결과 거래 서명이라는 두 가지 작업만 필요할 수 있습니다. 그 외의 경우에는 DApp가 먼저 별도의 동작을 요청할 수도 있습니다. 예를 들어 사용자에게 로그인 메시지에 서명하도록 요청할 수 있습니다. 승인 기능을 실행하는 블록체인 트랜잭션에 서명하도록 사용자에게 요청할 수 있습니다(approve). 또는 사용자에게 권한 메시지에 서명하도록 요청할 수도 있습니다(Permit). 계정이 이미 충분한 지출 권한을 부여한 경우 DApp는 일반적으로 새로운 권한을 요청하지 않습니다. ERC-20 토큰 대신 네트워크의 기본 자산을 사용하는 거래소에는 일반적으로 ERC-20 지출 권한이 필요하지 않습니다. 단계 번호로 안전을 판단하지 마십시오. 모든 메시지를 별도의 요청으로 검토하세요.

지갑에서 웹사이트 연결을 끊으면 로컬 연결만 종료됩니다. 블록체인에 이미 기록된 권한은 변경되지 않습니다. 권한가 저장되는 위치, 유효 기간 및 취소 작동 방식을 알아보려면 다음을 참조하세요. DApp 연결을 해제하면 기존 권한도 취소되나요?.

5. 확인 전 무엇을 확인해야 하나요?

  • 연결: 웹사이트 도메인, 계정, 네트워크가 예상한 것과 맞는지 확인하세요.

  • 메시지: 요청 목적을 확인하고 읽을 수 있는 프로토콜, 계약, 승인된 당사자(Spender), 금액, 만료 시간을 확인할 수 있습니다.

  • 거래: 네트워크, 거래 유형, 수취인 또는 계약, 자산, 금액, 네트워크 수수료를 확인하세요. 에 대한 설명을 위해 Gas, 참조 가스란 무엇입니까? 가스 한도, 가스 가격, 네트워크 수수료는 어떻게 계산되나요?.

  • 허가: 승인된 당사자를 확인하세요(Spender), 토큰 계약, 금액, 네트워크 및 범위. 불필요한 무제한 권한를 피하세요.

  • 장치 화면: 장치가 실제로 디코딩하고 표시할 수 있는 정보에 의존합니다. 일부 계약 필드는 장치에서 설명되지 않은 상태로 남아 있을 수 있습니다. 필수 정보가 누락되었거나, 기대한 것과 다르거나, 이해할 수 없는 경우 요청을 거부하고 다시 확인하세요.

더 완전한 체크리스트를 보려면 다음을 참조하세요. 하드웨어 지갑에서 거래를 확인하기 전에 무엇을 확인해야 하나요?. 읽을 수 있는 거래 정보 및 피싱 위험에 대해서는 다음을 참조하세요. SignGuard와 Clear Signing은 Web3 피싱을 어떻게 방지하나요?.

주요 원칙: 하드웨어 지갑는 서명 키를 보호할 수 있지만 웹 사이트, 메시지, 거래 또는 권한이 사용자의 실제 의도와 일치하는지 여부를 결정할 수는 없습니다.

답변이 도움되었나요?