암호화폐 지갑에서 토큰 승인은 어떤 권한을 부여하는 것인가요?

목차
지갑을 애플리케이션에 연결한다고 해서 해당 애플리케이션이 토큰을 이동할 수 있는 것은 아닙니다. 연결된 지갑의 공개 주소가 표시되고, 애플리케이션은 해당 주소와 관련된 공개 정보(예: 잔액)를 읽을 수 있게 됩니다. 토큰 승인은 별도의 작업입니다. 승인은 지정된 스펜더에게 해당 주소에서 특정 토큰을 지정된 한도까지 이동할 수 있는 권한을 부여합니다. 스펜더는 일반적으로 애플리케이션의 지시를 실행하는 소프트웨어인 스마트 계약입니다. 이후의 전송에서는 이 권한이 사용됩니다. 권한 취소는 사용되지 않은 권한을 제거하지만, 완료된 전송을 되돌릴 수는 없습니다.
승인 피싱은 복구 문구나 개인 키를 훔치는 대신 합법적인 권한을 악용하는 공격입니다. 체인얼리시스에 따르면 스핀캐스터 작전(Operation Spincaster) 기간 동안 처리된 7,000건 이상의 제보를 통해 수사관들은 1억 6,200만 달러 상당의 피해 사건을 추적할 수 있었습니다. 일반적인 승인은 애플리케이션이 사용자를 대신하여 토큰을 교환하거나 예치할 때 필요할 수 있습니다. 위험성은 승인된 내용, 권한을 받은 주체, 이동 가능한 토큰의 양, 그리고 해당 주체가 나중에 권한을 행사했는지 여부에 따라 달라집니다.
연결이 토큰 접근 권한을 부여하지 않습니다.
저자가 제작한 인포그래픽
사고 보고서에는 종종 지갑 연결, 사용자 서명, 자산 이동과 같은 여러 작업이 한 줄로 요약되어 나타납니다. 하지만 각 행위에는 별도의 증거가 필요합니다. 이를 이해하려면 알파와이어(AlphaWire)의 암호화폐 뉴스 처럼 암호화폐 전송 및 연결 관리의 다양한 요소를 다루는 자료를 살펴보는 것이 좋습니다. 이러한 사이트는 암호화폐 세계에 대한 탄탄한 기초 지식을 제공하며, 사용자는 이를 바탕으로 자신만의 활용법을 구축해 나갈 수 있습니다.
사용자는 먼저 서명을 확인한 후, 토큰, 승인된 사용자, 허용 금액, 완료된 이체 또는 취소 내역을 해당 세부 정보가 확인되는 대로 추가할 수 있습니다. 거래 내역이 완료되기 전에 게시된 정보는 전체 과정의 일부만을 설명할 수 있습니다. “연결됨”은 애플리케이션이 사용자가 선택한 공개 주소를 확인했음을 의미합니다. “승인됨”은 지갑 소유자가 특정 토큰에 대한 사용 권한을 사용자에게 부여했음을 의미합니다. “이체됨”은 사용자가 해당 권한을 사용했음을 의미합니다. “취소됨”은 남아 있는 권한이 모두 제거되었음을 의미합니다. 첫 번째 작업만 확인하는 보고서는 나머지 세 가지 작업을 입증하지 못합니다. 잔액이 변동되지 않았다고 해서 권한이 남아 있지 않다는 것을 증명하는 것은 아닙니다. 사용자가 아직 해당 권한을 사용하지 않았을 수도 있기 때문입니다. 결정적인 사실은 토큰, 사용자, 승인된 금액, 그리고 승인, 이체 및 취소가 기록된 순서입니다.
일반적으로 연결을 통해 애플리케이션은 선택된 주소를 인식하고 지갑에서 검토할 작업을 준비할 수 있습니다. 지갑 소유자는 이러한 작업을 승인하거나 거부해야 합니다. 나중에 연결을 해제하면 직접 연결은 종료되지만 블록체인에 이미 기록된 토큰 허용량은 변경되지 않습니다. 따라서 탭을 닫거나 지갑의 연결된 앱 목록에서 사이트를 제거하는 것은 승인 취소를 대체할 수 없습니다. 승인은 해당 토큰 및 승인된 지출자와 연결되어 있으며, 승인 기간이 만료되거나, 허용된 금액이 모두 소진되거나, 지갑 소유자가 변경할 때까지 유지됩니다.
서로 다른 결과를 가져오는 네 가지 행동
위에서 설명한 바와 같이, 지갑 사고는 네 가지 개별적인 조치로 구성될 수 있습니다.
- 연결: 애플리케이션은 선택된 공개 주소를 수신합니다. 해당 주소와 연결된 공개 블록체인 데이터를 읽을 수 있지만, 연결 자체만으로는 토큰 할당량이 생성되지 않습니다.
- 승인: 지갑 소유자가 지정된 한도 내에서 한 명의 사용자가 토큰을 이동할 수 있도록 승인합니다. 일반적으로 이 단계에서는 토큰이 이동하지 않습니다.
- 이체: 사용자가 해당 허용량의 일부 또는 전부를 사용합니다. 토큰은 이 별도의 작업이 성공적으로 완료된 경우에만 지갑에서 출금됩니다.
- 취소: 지갑 소유자가 사용하지 않은 허용량을 제거하거나 줄입니다. 그러면 사용자는 향후 송금에 대한 해당 권한을 잃게 됩니다.
지갑은 토큰 승인을 생성하지 않는 목적, 예를 들어 주소 제어권 증명과 같은 목적으로도 서명을 요청합니다. 누군가가 “메시지에 서명했다”는 보고는 토큰 할당량이 변경되었다는 것을 의미하지 않습니다. 서명된 요청 중 일부는 토큰 접근을 승인하지만, 그렇지 않은 요청도 있습니다. 요청 내용과 그에 따른 블록체인 기록을 통해 어떤 일이 발생했는지 알 수 있습니다. 또한, 전송은 하나의 워크플로 내에서 승인 및 완료될 수 있지만, 권한 부여와 이동은 서로 다른 결과를 가져오는 별개의 작업입니다.
승인이 유효한 상태로 유지될 수 있는 이유
제한적 승인은 최대 사용 금액을 설정하며, 항상 일회성 권한은 아닙니다. 사용자가 허용량의 일부만 사용하더라도 나머지 금액은 계속 사용할 수 있습니다. 유한한 허용량은 일반적으로 승인된 전송이 진행됨에 따라 감소합니다. 허용량이 0이 되면 다음 전송에는 새로운 승인이 필요합니다. 대규모 지속 승인은 지갑 소유자가 변경할 때까지 계속 유효합니다. 일부 서명된 승인에는 만료일이 포함되지만, 일반적인 토큰 허용량은 자동으로 만료되지 않습니다.
실질적인 확인은 구체적이어야 합니다. 토큰, 스폰서, 그리고 남은 허용량을 확인해야 합니다. 익숙하지 않은 컨트랙트 주소는 레이블만으로는 식별하기 어려울 수 있으므로, 축약되거나 불완전한 이름보다는 기록된 주소가 더 중요합니다. 사건 발생 순서 또한 중요합니다. 이체 후에 기록된 취소는 두 작업이 거의 동시에 발생했더라도 이전 이체를 막지는 못합니다.
취소로도 되돌릴 수 없는 것
취소는 향후 권한을 기준으로 작동합니다. 허용된 권한이 아직 사용되지 않은 경우, 이를 제거하면 해당 사용자가 나중에 동일한 권한에 의존하는 것을 방지할 수 있습니다. 이미 이체가 확인된 경우, 취소로는 이를 되돌릴 수 없습니다. 2026년 7월 Secjuice 분석에서는 이러한 한계를 설명하며, 공격자가 이미 서명된 권한을 보유하고 있는 경우 취소가 경쟁 조건으로 이어질 수 있다고 지적합니다.
대부분의 지갑 승인 사례는 다음 네 가지 사실 관계를 통해 구분됩니다. 지갑이 단순히 연결만 된 것인가? 어떤 토큰, 어떤 사용자가 어떤 금액을 승인한 것인가? 사용자가 실제로 이체를 완료한가? 남은 한도가 다른 이체 전에 취소되었는가? 연결 확인은 첫 번째 질문에 대한 답만 제공합니다. 승인 확인은 권한은 인정하지만 이체는 보장하지 않습니다. 이체 내역을 통해 남은 금액을 확인할 수 있으며, 취소 시점을 통해 사용되지 않은 권한이 충분히 빨리 삭제되었는지 판단할 수 있습니다.
면책 조항: 본 문서는 정보 제공 목적으로만 작성되었습니다. 법률, 세금, 투자, 재정 또는 기타 자문으로 제공되거나 사용될 의도가 없습니다.
이것만
댓글 0
첫 댓글을 남겨보세요.