dApp은 왜 승인을 요구하나
ERC-20 토큰에는 Web3 UX의 절반을 만들어낸 특성이 있습니다. 스마트 컨트랙트는 당신이 원할 때조차 당신의 주소에서 토큰을 그냥 가져갈 수 없습니다. USDC를 스왑해 주는 DEX는 먼저 당신의 명시적 허락이 필요합니다. 그래서 수많은 상호작용이 두 단계입니다 — 먼저 approve 트랜잭션, 그다음 실제 스왑이나 예치. 승인은 형식적 절차가 아닙니다. 지속적인 지출 권한의 부여이며, 그것을 준 트랜잭션보다 오래 살아남습니다.
approve()가 실제로 부여하는 것
승인에 서명하면 토큰 컨트랙트는 allowance를 기록합니다. 주소 X(dApp의 컨트랙트)가 당신의 토큰을 최대 N개까지, allowance가 소진되거나 변경될 때까지, 원할 때 언제든 쓸 수 있다는 기록입니다. 두 가지 성질이 중요합니다. 첫째, allowance는 방문했던 웹사이트가 아니라 당신이 승인한 컨트랙트가 보유합니다 — UI는 사라져도 권한은 남습니다. 둘째, 지출 시점에 당신의 개입은 전혀 필요 없습니다. 한번 부여되면 승인된 컨트랙트는 추가 서명 없이 이후 어떤 트랜잭션에서든 토큰을 끌어갈 수 있습니다. 바로 그것이 승인을 유용하게 만드는 점이자 — 그대로 공격 표면으로 만드는 점입니다.
무제한 승인: 편리하지만 상시적인 위험
승인마다 가스가 들기 때문에 많은 dApp이 다시는 승인하지 않아도 되도록 사실상 무제한 allowance를 요청합니다. 편리함은 진짜지만 거래 조건도 진짜입니다. 어떤 컨트랙트에 무제한 allowance를 주면, 그 토큰의 전체 잔액이 영원히 그 컨트랙트의 보안에 달리게 됩니다. 몇 년 뒤 그 컨트랙트가 뚫리면 — 혹은 처음부터 악의적이었다면 — 공격자에게 당신의 키나 서명은 필요 없습니다. 당신이 준 allowance면 충분합니다. 최대 규모의 지갑 탈취 사건 상당수는 키 도난이 아니라 오래된 승인이 현금화된 것이었습니다.
Permit과 Permit2: 서명으로 하는 승인
현대적 개선이 Permit(EIP-2612)입니다. 온체인 approve 트랜잭션 대신, dApp이 자기 동작과 함께 제출하는 오프체인 메시지에 서명합니다 — 두 번의 트랜잭션이 한 번으로, 별도의 승인 가스 없이, 게다가 권한에 기한을 걸 수 있습니다. Permit2는 이 아이디어를 EIP-2612를 구현하지 않은 토큰으로 일반화해, 만료되고 금액이 제한된 권한을 다루는 공유 승인 허브 역할을 합니다. 진짜 개선이지만, 무엇이 바뀌었는지 주의하세요. 예전에 트랜잭션이 하던 일을 이제 서명이 합니다. 잘못된 Permit 메시지에 서명하게 만드는 피싱 사이트는 악성 승인과 같은 결과를 얻습니다 — 그래서 서명하는 내용을 읽는 것이 그 어느 때보다 중요합니다.
공격 표면: 드레이너와 방치된 allowance
승인 악용은 두 가지 형태로 옵니다. 능동형: 드레이너 사이트가 진짜 dApp을 사칭해 '클레임'이나 '지갑 인증' 같은 무해해 보이는 동작으로 위장한 승인(또는 Permit 서명)을 요구합니다. 수동형: 몇 년 전 정상 컨트랙트에 준 allowance가 그 컨트랙트나 관리자 키, 업그레이드 경로가 침해될 때까지 잠들어 있습니다. 둘 다 연결-승인 흐름을 Web3 보안의 결정적 순간으로 다뤄야 할 이유입니다 — 안전한 방법은 지갑을 dApp에 안전하게 연결하는 법에서 다룹니다.
실제로 통하는 승인 위생 습관
세 가지 습관이 위험 대부분을 막습니다. dApp이 허용한다면, 특히 큰 잔액에는 한정된 금액만 승인하세요 — 나중의 추가 승인은 값싼 보험입니다. 평판 좋은 승인 검사 도구로 allowance를 주기적으로 검토하고 철회하고, 더는 쓰지 않는 것은 제거해야 할 죽은 짐으로 취급하세요(철회 자체도 트랜잭션입니다). 그리고 중요한 자산은 승인에 아예 서명하지 않는 주소에, 활발히 쓰는 dApp 지갑과 분리해 보관하세요. 더 다층적인 습관은 지갑 보안 모범 사례에 있습니다.
WATS는 어디에 들어맞나
승인은 서명이고, 서명은 지갑의 영역입니다. WATS는 완전한 논커스터디얼입니다 — 키는 당신이 보유하고, WATS는 결코 키를 보유하지 않습니다 — 따라서 모든 승인, Permit 서명, 철회는 브라우저 확장이나 모바일 앱에서, EVM·솔라나·TON 전반에 걸쳐, 오직 당신의 키가 서명할 때만 일어납니다. 수수료 쪽은 WATS가 무엇과도 다른 지점입니다. 승인과 철회 트랜잭션을 포함한 모든 동작이 체인의 네이티브 가스 대신 하나의 토큰 ATS로 과금됩니다 — EVM에서는 ERC-4337 페이마스터, 솔라나와 TON에서는 동등한 수수료 대납자/릴레이어를 통해 — 그래서 오래된 allowance 정리가 그 네트워크의 가스 토큰이 없어 멈추는 일이 없습니다. 걷힌 ATS는 1억 개 공급량에서 3천만 개 바닥을 향해 소각되며, ATS는 LayerZero OFT라서 하나의 잔액이 모든 체인을 커버합니다. WATS는 ERC-4337과 OFT 단일 토큰 수수료를 이 소각과 결합한 최초이자 유일한 지갑입니다 — 자세한 내용은 ATS 수수료 페이지에.
자주 묻는 질문
토큰 allowance란 무엇인가요?
Allowance는 ERC-20 토큰 컨트랙트에 기록되는 지속적 허가입니다. 특정 컨트랙트가 당신의 토큰을 특정 수량까지 쓸 수 있다고 명시합니다. approve 트랜잭션에 서명할 때 생성되고 — 사용했던 웹사이트와 무관하게 — 소진되거나 변경되거나 철회될 때까지 지속됩니다. 지출 시점에 승인된 컨트랙트는 당신의 추가 서명이 전혀 필요 없습니다.
무제한(인피니트) 토큰 승인은 안전한가요?
편리하지만 영구적인 꼬리 위험을 안고 있습니다. 그 토큰의 전체 잔액이, 승인된 컨트랙트가 무기한으로 결코 뚫리지도 악의적이지도 않다는 데 달려 있게 됩니다. 소액의 활성 잔액에는 편리함이 이기는 경우가 많지만, 큰 보유분에는 한정 금액을 선호하고, 더는 쓰지 않는 allowance는 주기적으로 철회하세요. 대형 탈취 사건 다수는 도난당한 키가 아니라 악용된 오래된 승인이었습니다.
Permit과 일반 승인의 차이는 무엇인가요?
일반 승인은 dApp이 행동하기 전에 가스를 소모하는 독립적인 온체인 트랜잭션입니다. Permit(EIP-2612)은 이를 dApp이 자기 트랜잭션에 묶어 넣는 오프체인 서명으로 대체합니다 — 한 단계로, 선택적 기한과 함께. Permit2는 이 패턴을 네이티브 Permit을 지원하지 않는 토큰으로 확장합니다. 보안 모델도 그에 따라 이동합니다. 이제 서명이 지출 권한을 부여할 수 있으므로, 서명 요청을 승인과 똑같이 꼼꼼히 검토하세요.

