Aave V3 예치금을 공식 사이트 없이 출금하는 절차

계약 주소와 필수 확인 사항을 먼저 읽고 순서대로 확인합니다.

핵심 · 총 4단계입니다. 실행 전 주소·단위 확인을 마치세요.

Aave에 넣은 돈은 aToken(예: aEthUSDC)으로 내 지갑에 있습니다. 인출은 Pool 컨트랙트의 withdraw 한 번이고, 앱이 없어도 됩니다.

01

먼저 읽어 주세요

쓰기 함수를 부르기 전에 꼭 지켜야 하는 주의입니다.

이 페이지는 설명서일 뿐입니다. Pagu.info는 지갑을 연결하지 않고, 서명이나 거래를 만들지도 않습니다. 아래 절차는 사용자가 Etherscan에서 직접 수행합니다.

  • 주소를 눈으로 믿지 마세요. 각 주소 옆에 "읽기 전용으로 확인하는 방법"을 적어 뒀습니다. 먼저 그 확인을 통과한 뒤에 쓰기 함수를 부르세요. 비슷한 주소로 만든 가짜 컨트랙트가 있습니다.
  • 서두르지 마세요. 프론트엔드가 멈춰도 자금은 컨트랙트에 그대로 있습니다. 프론트는 창구일 뿐입니다. 먼저 공식 트위터·디스코드에서 알려진 사고인지 확인하는 편이 거의 항상 낫습니다.
  • 이 문서는 투자 조언이 아니고, 결과를 보장하지 않습니다. 금액과 단위를 잘못 넣어 생긴 손실은 되돌릴 수 없습니다.

02

컨트랙트 주소

쓰기 전에 "확인 방법"의 읽기 함수를 먼저 불러 보세요.

4곳

컨트랙트 주소

3체인

네트워크

4단계

빼는 절차

이름체인주소확인 방법
Pool Ethereum 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2 getReserveAToken(내가 넣은 토큰 주소)를 Read as Proxy로 호출 → 내 aToken 주소가 나온다. 그 aToken의 POOL()이 다시 이 주소면 짝이 맞는 것이다.
Pool Arbitrum 0x794a61358D6845594F94dc1DB02A252b5b4814aD 같은 방법. 확인했을 때 USDC → aArbUSDCn 이 나왔다.
Pool Base 0xA238Dd80C259a72e81d7e4664a9801593F98d1c5 같은 방법. 확인했을 때 USDC → aBasUSDC 가 나왔다.
aEthUSDC (예시) Ethereum 0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c UNDERLYING_ASSET_ADDRESS()가 USDC, POOL()이 위 Pool 주소임을 확인했다.

03

빼는 절차

번호 순서대로 진행합니다.

Fig. 1

한눈에 보는 순서

  1. 1차입 먼저 갚기
  2. 2Pool 주소 확인
  3. 3withdraw 호출
  4. 4실패 원인 보기
총 4단계입니다. 실행 전 주소·단위 확인을 마치세요.

1차입이 있으면 먼저 갚는다

Aave에서 돈을 빌린 상태라면 담보를 다 뺄 수 없습니다. 건강계수가 1 아래로 가는 인출은 컨트랙트가 거부합니다. 먼저 Pool의 repay(asset, amount, interestRateMode, onBehalfOf)로 갚거나, 건강계수가 버티는 만큼만 부분 인출하세요.

빌린 것이 없으면 이 단계를 건너뜁니다.

2Pool 주소가 맞는지 Read로 확인한다

Read as Proxy에서 getReserveAToken에 내가 예치한 토큰 주소(예: USDC)를 넣고 호출합니다. 돌아온 주소가 내 지갑에 있는 aToken 주소와 같아야 합니다. 다르면 체인이나 Pool 주소가 틀렸습니다.

3withdraw를 부른다 — approve는 필요 없다

Write as Proxy → withdraw

  • asset — 처음 넣은 토큰 주소 (aToken 주소가 아닙니다. 예: USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)
  • amount — 뺄 수량. 전액은 115792089237316195423570985008687907853269984665640564039457584007913129639935(uint256 최대값)을 넣으면 됩니다. Aave가 "잔고 전부"로 해석합니다.
  • to — 받을 주소. 보통 내 지갑 주소입니다.

Pool이 내 aToken을 직접 소각하므로 approve를 미리 할 필요가 없습니다. 이 점이 뒤에 나오는 Lido·Curve와 다릅니다.

4실패하면 이유를 본다

  • 건강계수 부족 — 차입이 남아 있습니다. 1단계로 돌아갑니다.
  • 풀 유동성 부족 — 다른 사람들이 많이 빌려 간 상태입니다. 금액을 줄여 여러 번 빼거나 기다립니다.
  • 동결·일시 중지 — 거버넌스가 그 자산을 멈춰 둔 상태입니다. 컨트랙트 수준의 조치라 프론트를 바꿔도 풀리지 않습니다. 공식 공지를 확인하세요.
  • 격리 모드·전자동 이자율 같은 설정도 인출을 제한할 수 있습니다.

04

Etherscan에서 함수를 부르는 법 (공통)

어느 설명서에서 부르든 같은 다섯 단계입니다.

0을 하나 더 붙이거나 덜 붙이는 것이 이 작업에서 가장 흔한 사고입니다. 먼저 아주 작은 금액으로 한 번 성공시킨 다음 전액을 처리하는 편이 안전합니다.

다섯 단계 전부 보기

1맞는 탐색기를 연다

체인마다 탐색기가 다릅니다. Ethereum은 etherscan.io, Arbitrum은 arbiscan.io, Base는 basescan.org, Polygon은 polygonscan.com, OP Mainnet은 optimistic.etherscan.io입니다. 주소창에 컨트랙트 주소를 붙여넣습니다.

2먼저 Read로 진짜인지 확인한다

Contract → Read Contract(프록시면 Read as Proxy)에서 아래 표의 "확인 방법"에 적힌 읽기 함수를 불러 봅니다. 기대한 값이 나오지 않으면 그 주소는 쓰지 않습니다. 읽기는 가스가 들지 않고 위험도 없습니다.

3Write Contract로 넘어간다

Contract → Write Contract를 누르고 Connect to Web3로 지갑을 연결합니다. 연결은 Etherscan에서 하는 것이고 Pagu.info와는 아무 상관이 없습니다. 화면에 Write as Proxy 탭이 있으면 그쪽을 써야 합니다 — 프록시로 배포된 컨트랙트는 일반 Write 탭에 실제 함수가 보이지 않습니다. 이 문서에서 Aave V3 Pool과 Lido 출금 큐가 프록시임을 직접 확인했습니다.

4금액은 소수점 자리만큼 0을 붙인다

컨트랙트는 소수점을 모릅니다. 토큰의 decimals()만큼 0을 붙인 정수를 넣습니다.

  • USDC·USDT (6자리): 100 USDC → 100000000
  • DAI·WETH·stETH 등 (18자리): 1개 → 1000000000000000000
  • WBTC (8자리): 0.5개 → 50000000

자리수를 모르면 그 토큰 컨트랙트의 decimals()를 Read로 먼저 확인하세요. 0을 하나 더 붙이거나 덜 붙이는 것이 이 작업에서 가장 흔한 사고입니다. 먼저 아주 작은 금액으로 한 번 성공시킨 다음 전액을 처리하는 편이 안전합니다.

5"전액"에 쓰는 숫자

프로토콜에 따라 특정 최대값이 "전액"을 뜻합니다.

  • uint256 최대값: 115792089237316195423570985008687907853269984665640564039457584007913129639935
  • uint128 최대값: 340282366920938463463374607431768211455

단, 아무 함수에나 최대값을 넣으면 되는 것은 아닙니다. 각 설명서에서 허용한다고 적은 곳에만 씁니다.

온체인 확인 이 페이지의 주소는 2026-10-13에 공개 RPC로 직접 호출해 확인했습니다. 주소에 코드가 있는지만 본 것이 아니라, 각 컨트랙트가 서로를 가리키는지(예: aToken이 그 Pool을 가리키는지)까지 맞춰 봤습니다. 그래도 쓰기 전에 각자 Read로 다시 확인하세요. 컨트랙트는 교체될 수 있습니다.