setApprovalForAll 설명: 전체 컬렉션을 고갈시키는 NFT 승인

— By Tony Rabbit in Tutorials

setApprovalForAll 설명: 전체 컬렉션을 고갈시키는 NFT 승인

setApprovalForAll 사기는 단일 서명으로 전체 NFT 컬렉션에 대한 운영자 제어 권한을 부여하도록 속이는 방식으로 작동합니다. 이 기능이 어떻게 작동하는지, ERC-20 허용량과 어떻게 다른지, 서명하기 전에 요청을 읽는 방법, 그리고 이를 취소하는 방법을 알아보세요.

setApprovalForAll 사기NFT 컬렉션이 고갈되는 가장 흔한 방법이며, 거의 항상 완전히 읽지 않은 하나의 서명으로 시작됩니다. setApprovalForAll 함수는 ERC-721 및 ERC-1155 토큰 사양의 표준 부분입니다. 이 함수를 호출하면 다른 주소를 "운영자"로 지정하고, 해당 운영자에게 현재와 미래에 특정 컬렉션 계약에서 보유한 모든 NFT를 이동할 수 있는 권한을 부여합니다. 항목별 제한이나 금액 필드는 없습니다. 공격자가 귀하의 운영자로 설정되면, 다시 서명을 요청할 필요 없이 단 한 번의 작업으로 해당 계약에서 귀하의 전체 컬렉션을 전송할 수 있습니다. 이 가이드는 이 권한이 정확히 무엇을 하는지, 토큰 허용량과 기계적으로 어떻게 다른지, 악성 사이트가 요청을 어떻게 위장하는지, 그리고 이를 감사하고 취소하는 방법을 설명합니다.

주요 내용

  • setApprovalForAll은 단일 항목이 아닌, 하나의 계약에서 전체 NFT 컬렉션에 대한 운영자 제어 권한을 부여합니다.
  • 수량 또는 금액 필드가 없으므로, 이 권한은 취소될 때까지 사실상 무제한이며 영구적입니다.
  • 가짜 민팅 및 위조 마켓플레이스는 NFT를 "활성화"하거나 "상장"하는 명목으로 이를 요청합니다.
  • 운영자 승인을 취소하는 것은 ERC-20 토큰 허용량을 취소하는 것과는 별개의 작업입니다.

setApprovalForAll이 실제로 부여하는 것

setApprovalForAll은 두 가지 인수를 받습니다: 운영자 주소와 부울 값(true 또는 false). 값을 true로 설정하여 서명하면, NFT 계약은 지정된 운영자가 해당 계약 내에서 귀하가 소유한 모든 토큰 ID에 대해 transferFrom 및 safeTransferFrom을 호출할 수 있도록 허용한다고 기록합니다. 이는 컬렉션 전체에 대한 권한입니다. 오늘 한 프로젝트에서 NFT 10개를 보유하고 다음 달에 5개를 더 민팅하더라도, 운영자는 새로운 서명 없이 15개 모두를 이동할 수 있습니다.

이것이 이해해야 할 가장 중요한 단 한 가지입니다: 승인은 특정 NFT가 아닌 컬렉션 계약 및 운영자와 연결됩니다. 귀하는 "이 하나의 ape"를 승인하는 것이 아닙니다. 귀하는 "이 운영자 키를 가진 누구든지 이 계약에서 제가 소유한 모든 것을 무기한으로 가져갈 수 있다"는 것을 승인하는 것입니다. 이는 누군가에게 방의 마스터 키를 건네주고 계속 소유하게 하는 NFT 버전입니다. 이러한 영속성 때문에 setApprovalForAll이 대부분의 NFT 지갑 고갈 뒤에 있습니다.

ERC-20 지출 한도 허용량과의 차이점

대부분의 사람들은 ERC-20 토큰을 통해 "승인"이라는 단어를 처음 접합니다. 거기서 approve 함수는 지출 한도를 설정합니다: 100 USDC와 같이 지출자가 인출할 수 있는 숫자 허용량입니다. ERC-20의 위험은 편의를 위해 dApp이 무제한 한도를 요청하는 무한 승인 패턴입니다. 그러나 무한 ERC-20 허용량조차도 여전히 하나의 토큰에 한정됩니다. setApprovalForAll은 숫자 대신 부울 스위치이며, 컬렉션 내의 전체 보유량을 한 번에 다루기 때문에 다른 형태의 위험입니다. 이 개념이 처음이라면, 저희의 승인 거래 가이드에서 기본 메커니즘을 더 자세히 다룹니다.

속성ERC-20 approvesetApprovalForAll (NFT)
제어 대상설정된 금액까지 하나의 토큰 유형하나의 컬렉션에서 보유한 모든 NFT
제한 필드숫자 한도 (무한할 수 있음)없음, true/false 스위치임
미래 자산 포함 여부아니요, 허용량으로 제한됨예, 새로운 민팅도 노출됨
취소 방법허용량을 0으로 재설정setApprovalForAll을 false로 호출

가짜 민팅 및 위조 마켓플레이스가 이를 요청하는 방법

공격자들은 setApprovalForAll을 맥락 없이 요청하는 경우가 거의 없습니다. 그들은 이를 정상적으로 보이는 행동으로 위장합니다. 무료 또는 할인된 드롭을 약속하는 가짜 민팅 페이지는 "민팅"을 클릭하는 순간 지갑 요청을 띄울 것이며, 그 요청은 사실 귀하가 이미 소유한 컬렉션에 대한 setApprovalForAll입니다. 해킹된 소셜 계정이나 유료 광고를 통해 자주 광고되는 위조 마켓플레이스 복제품은 무엇이든 상장하기 전에 "활성화"하거나 "거래 승인"을 요청할 것입니다. 합법적인 마켓플레이스도 setApprovalForAll을 사용하며, 이것이 바로 가짜 버전이 설득력 있게 보이는 이유입니다.

이러한 속임수는 귀하가 예상하는 행동(민팅, 상장, 클레임)이 그럴듯하고, 지갑이 대부분의 사용자가 인식하지 못하는 함수 이름을 보여주기 때문에 작동합니다. 이 패턴은 악성 거래가 명백한 전송이 아닌 승인인 아이스 피싱과 광범위한 서명 피싱 전술과 크게 겹칩니다. 서명 단계에서는 자산이 지갑을 떠나지 않으므로 아직 아무것도 도난당한 것처럼 보이지 않습니다. 고갈은 운영자가 transferFrom을 호출하여 컬렉션을 쓸어갈 때 몇 분 또는 몇 시간 후에 발생합니다. 그때쯤이면 승인은 이미 제 역할을 다한 상태입니다.

서명하기 전에 요청을 읽는 방법

가장 좋은 단일 방어책은 지갑 프롬프트를 읽는 법을 배우는 것입니다. 사이트가 거래를 트리거할 때, 최신 지갑은 호출되는 계약 메서드를 표시합니다. 필요하지 않은 작업에 대해 "setApprovalForAll"과 "true"로 설정된 매개변수를 본다면 멈추세요. 눈앞의 작업이 진정으로 컬렉션 전체에 대한 권한을 요구하는지 질문하세요. 에어드롭을 클레임하거나, 갤러리를 보거나, 사이트에 연결하는 데는 절대 필요하지 않습니다.

세 가지를 확인하세요. 첫째, 함수 이름: setApprovalForAll인가요? 둘째, 운영자 주소: 사용하려던 플랫폼의 검증된 계약과 일치하나요, 아니면 알 수 없는 주소인가요? 셋째, 부울 값: true는 권한을 부여하는 것을 의미하고, false는 취소하는 것을 의미합니다. 많은 드레이너 사이트는 귀하가 자동적으로 프롬프트를 클릭할 것이라고 예상합니다. 위조 마켓플레이스는 또한 이전에 상호 작용한 적이 없는 사이트에서 컬렉션에 대한 승인을 요청하는 경우가 많으며, 이는 강력한 위험 신호입니다. 익숙하지 않은 것이 있다면 요청을 거부하고 다시 시도하기 전에 URL을 독립적으로 확인하세요. 이러한 흐름의 대부분은 프롬프트가 일상적으로 보이도록 설계된 기성품 지갑 드레이너 키트에 의해 구동됩니다.

운영자 승인을 감사하고 취소하는 방법

운영자 승인은 ERC-20 허용량과는 다른 표면에 존재하므로, 토큰 지출 한도만 표시하는 도구나 대시보드에는 전혀 나타나지 않을 수 있습니다. 제대로 감사하려면, NFT 운영자 승인을 명시적으로 나열하는 취소 도구를 사용하세요. 이는 종종 "모두에 대한 승인"으로 표시되거나 컬렉션별로 표시됩니다. 읽기 모드로 지갑을 연결하고, 운영자가 설정된 모든 컬렉션을 검토하고, 인식하지 못하거나 더 이상 사용하지 않는 운영자 주소를 식별하세요.

취소하려면, 동일한 컬렉션 계약에서 setApprovalForAll을 다시 호출하되, 이번에는 해당 운영자에 대해 부울 값을 false로 설정합니다. 이는 온체인 거래이므로 gas가 소모되며, 컬렉션별, 운영자별로 수행해야 합니다. 모든 계약에 걸쳐 모든 NFT 승인을 한 번에 지우는 단일 버튼은 없습니다. 저희의 단계별 취소 안내는 토큰 허용량과 운영자 승인 모두에 대한 프로세스를 보여줍니다. 특히 새로운 민팅 사이트나 마켓플레이스를 사용한 후에는 이를 일회성 정리 작업이 아닌 주기적인 습관으로 만드세요.

알 수 없는 계약에 대한 포괄적 승인을 피하는 습관

예방이 정리보다 저렴합니다. 활발하게 사용하는 자금과 NFT만 보유하는 전용 "민팅" 지갑을 유지하여, 잘못된 승인이 장기 보유 자산을 노출시키지 않도록 하세요. 모든 setApprovalForAll 요청을 형식적인 것이 아닌 신중한 결정으로 취급하고, 광고, 다이렉트 메시지 또는 원치 않는 링크를 통해 접속한 사이트에서는 절대 승인하지 마세요. 마켓플레이스 및 민팅 URL은 검색 광고가 아닌 공식 출처에서 확인하세요. 검색 광고는 드레이너 운영자에게 일상적으로 하이재킹됩니다.

마지막으로, 루틴을 만드세요: 매월 승인을 검토하고, 오래된 것은 취소하며, 일회성 민팅 사이트 사용을 마친 후 즉시 취소하세요. 운영자 승인은 자체적으로 만료되지 않으므로, 잊혀진 프로젝트의 오래된 권한은 활성 상태로 두는 한 계속해서 공격 표면으로 남아 있습니다. 몇 분의 감사는 취소에 드는 gas 비용보다 훨씬 더 가치 있는 자산을 보호합니다.

이 기사는 교육 목적으로만 제공되며 재정적 조언이 아닙니다.

Originally published by DEXTools News. © 2026 DEXTools News (STRADEXT DEFI SOLUTIONS, S.L.). Reproduction or republication without written permission is prohibited.