WETH 승인은 WETH9 컨트랙트에서 approve()를 호출하는 것으로, DEX 라우터, 대출 풀, NFT 마켓플레이스와 같은 다른 주소가 transferFrom()으로 사용자의 WETH를 최대 설정된 금액만큼 이동하게 합니다. 래핑과 언래핑에는 승인이 필요하지 않습니다. 제3자 컨트랙트가 사용자의 WETH로 하는 모든 것에는 필요합니다. 2026년 10월 2일 Ethereum의 WETH9로 전송된 최근 100개 트랜잭션 중 24개가 승인이었고, 그 중 20개는 약 46,000 가스를 사용했습니다. 이는 영(0)에서 허용량을 생성했기 때문입니다(Etherscan). 규칙은 사용하려는 컨트랙트를 승인하고, 사용하려는 것을 위해 승인하고, 더 이상 사용하지 않는 것을 취소하는 것입니다.

핵심 내용
  • 승인은 제3자를 위한 것입니다: deposit(), withdraw()와 transfer()는 사용자 자신의 잔액에 작용하며 승인이 필요하지 않습니다. 라우터, 풀, 마켓플레이스의 transferFrom()은 필요합니다.
  • 트래픽 비율: 2026년 10월 2일 블록 26,105,189-26,105,250에서 WETH9로 전송된 100개 트랜잭션 중 승인이 24개였으며, 입금 46개, 출금 26개였습니다(Etherscan).
  • 첫 승인 비용이 2배: 이 24개 중 20개는 새로운 허용량을 생성하기 위해 46,000-46,400 가스를 사용했으며, 기존 허용량을 변경하려면 24,000-29,000 가스가 필요합니다 - 46,000 / 24,000 = 1.9배 더 많습니다.
  • 무제한은 무제한을 의미합니다: WETH9는 2^256-1의 허용량을 무한대로 취급하며 절감하지 않습니다 - 약 1.16 x 10^59 WETH이며, 블록 26,105,247에서 Ethereum에 존재하는 2,031,131 WETH에 대해(Ethereum RPC).

WETH 승인이란 무엇인가요

WETH 승인은 WETH9 컨트랙트의 허용량 테이블에 있는 항목입니다: 소유자, 스펜더, 금액. approve(spender, amount)가 이를 쓰고 Approval 이벤트를 발행합니다. 스펜더가 호출한 transferFrom(owner, recipient, amount)는 항목을 확인하고 WETH를 이동하며 이동한 금액만큼 허용량을 낮춥니다. 승인은 그 자체로 WETH를 이동하지 않으며 잠그지 않습니다. WETH는 스펜더가 허용량을 사용할 때까지 사용자의 주소에 남습니다.

ERC-20 토큰은 이 방식으로 작동합니다. 컨트랙트는 절대 승인받지 않은 토큰을 끌어올 수 없기 때문이고, WETH는 정확히 ETH가 그 흐름에 참여할 수 있게 하기 위해 존재합니다(WETH란 무엇인가). 네이티브 ETH에는 허용량 테이블이 없습니다. 끌어오지 않고 전송되며, 이것이 DeFi 컨트랙트가 대신 WETH를 요청하는 이유입니다(왜 WETH가 존재하나요).

언제 WETH 승인이 필요한지, 필요하지 않은지

질문은 항상 WETH를 이동하는 주체가 누구인지입니다. 사용자 자신인가, 아니면 사용자를 대신하는 컨트랙트인가요.

액션 승인 필요 이유
ETH를 WETH로 래핑 (deposit) 아니요 WETH9 컨트랙트가 호출자에게 주조합니다
WETH를 ETH로 언래핑 (withdraw) 아니요 호출자가 자신의 잔액을 소각합니다
WETH를 주소로 전송 (transfer) 아니요 소유자가 자신의 잔액을 이동합니다
DEX에서 WETH 스왑 예, 라우터로 라우터가 transferFrom()으로 WETH를 끌어옵니다
대출 시장에 WETH 공급 예, 풀로 풀이 입금을 끌어옵니다
NFT 마켓플레이스에서 WETH로 입찰 예, 마켓플레이스 컨트랙트로 판매가 입찰자로부터 WETH를 끌어서 결제됩니다
브리지를 통해 WETH 브리지 예, 브리지 또는 게이트웨이로 브리지가 전송하기 전에 WETH를 끌어옵니다

처음 세 행은 WETH를 언래핑하는 방법과 ETH에서 WETH로에서 설명하는 것입니다. 승인 단계는 없습니다. 래핑이나 언래핑 전에 승인을 요청하는 인터페이스는 WETH9를 직접 호출하지 않고 다른 컨트랙트를 통해 라우팅합니다.

정확한 허용량 vs 무제한 허용량

허용량은 다음 액션의 정확한 금액이거나 컨트랙트가 받아들이는 최대값입니다. WETH9에서 최대값인 2^256-1은 특별합니다. transferFrom()은 허용량이 이와 같으면 차감을 건너뜁니다. 따라서 한 번의 승인이 그 스펜더의 모든 향후 이전을 커버합니다(WETH9 검증된 소스, Etherscan).

  • 정확한 금액: 각 스왑이나 입금은 먼저 자신의 approve()가 필요합니다. 스펜더는 승인된 금액 이상을 가져올 수 없습니다.
  • 무제한: 모든 향후 사용을 위한 일회성 approve(). 승인이 취소될 때까지 스펜더는 주소가 보유한 모든 WETH를 이동할 수 있습니다.

트레이드오프는 가스 vs 노출입니다. 무제한 승인은 매번 약 24,000-46,000 가스의 일회성 승인을 절약합니다. 또한 나중에 업그레이드되거나, 악용되거나, 버려질 수 있는 컨트랙트와의 지속적인 권한을 남깁니다.

WETH 승인 비용

승인은 하나의 네트워크 수수료(ETH)이며 그 이상은 없습니다. 가스는 허용량이 이미 존재하는지 여부에 따라 달라집니다.

승인 유형 사용된 가스 (Etherscan, 2026년 10월 2일) 5.6 gwei의 메인넷 수수료, ETH $2,690.75
영에서의 새로운 허용량 46,000-46,400 약 $0.70
기존 허용량 변경 24,000-29,000 약 $0.36-$0.44

가스 단위는 개별 승인의 수수료와 가스 가격에서 유래되며, USD 열은 Etherscan의 2026년 9월 28일 평균 가스 가격과 ETH 가격을 사용합니다. 레이어 2에서 가스 단위는 유사하고 가스 가격은 수백 배 더 낮으며, 래핑과 언래핑도 마찬가지입니다(WETH 가스 비용). 어느 쪽이든 수수료는 ETH로 지불되므로, WETH만 보유하는 주소는 아무것도 승인할 수 없습니다.

WETH에 Permit 함수가 없는 이유

WETH9는 2017년 12월에 배포되었으며, EIP-2612가 permit()을 정의하기 전입니다. permit()은 토큰 보유자가 트랜잭션 대신 오프체인 서명으로 허용량을 부여할 수 있게 합니다. WETH9에는 deposit, withdraw, totalSupply, approve, transfer, transferFrom만 있고, 코드를 변경할 수 없으므로 Ethereum의 모든 WETH 승인은 ETH로 지불하는 온체인 트랜잭션입니다.

두 가지 해결책이 존재합니다. Uniswap의 Permit2 컨트랙트는 WETH의 일회성 일반 승인을 수락한 후 나중의 지출이 서명으로 승인되도록 합니다. 더 새로운 래핑된 토큰은 permit을 내장합니다. Lido의 wstETH는 EIP-2612를 구현합니다(wstETH vs WETH). WETH9 자체로는 첫 번째 승인이 항상 트랜잭션입니다.

WETH 승인을 확인하고 취소하는 방법

  1. 허용량을 나열합니다: 네트워크의 익스플로러(Etherscan, Basescan, Arbiscan)의 토큰 승인 검사기를 열거나 revoke.cash와 같은 전용 도구를 사용하고 주소를 입력합니다.
  2. WETH 항목을 찾습니다: 각 행은 스펜더 컨트랙트, 허용량(정확하거나 무제한)과 설정된 시기를 표시합니다.
  3. 더 이상 사용하지 않는 것을 취소합니다: 취소는 사용자 주소에서 approve(spender, 0)를 전송합니다. 지갑에서 확인하고 ETH로 수수료를 지불합니다.
  4. 모든 네트워크에서 반복합니다: Base WETH의 승인은 Ethereum WETH와 별도입니다. 각 네트워크는 자신의 WETH 컨트랙트를 가지기 때문입니다(Base의 WETH)).

승인이 할 수 없는 것

  • ETH를 이동할 수 없습니다: 허용량은 그 컨트랙트의 WETH 잔액만 커버하며, 같은 주소의 네이티브 ETH는 절대 커버하지 않습니다.
  • 잔액을 초과할 수 없습니다: 소유자가 요청된 것보다 적은 WETH를 보유하면 transferFrom()이 실패하며, 허용량이 무엇이든 상관없습니다.
  • 네트워크를 넘을 수 없습니다: 승인은 각 네트워크의 WETH 컨트랙트에서 별도로 존재합니다.
  • 되돌릴 수 없습니다: 취소는 향후 끌어오기를 중지합니다. 스펜더가 이미 이동한 WETH는 이동한 상태로 남아있습니다.

WETH 승인 FAQ

아니요. WETH9의 허용량은 transferFrom()으로 모두 사용되거나 새로운 approve() 호출로 대체될 때까지 유지되며, 컨트랙트에는 시간 제한이 없습니다.