궁금한 주제를 찾아보세요

비트코인, 스테이블코인, 온체인 데이터처럼 주제로 검색하세요.

다시 읽을 이야기

저장한 글은 이 브라우저에만 보관됩니다.

해설기술·생태계

ERC-4626 금고: 예치 자산과 지분 토큰의 교환비율

ERC-4626에서 underlying 자산과 shares가 오가는 deposit·mint·withdraw·redeem 차이와 교환비율, 반올림, 초기 금고 위험을 설명합니다.

자산 구슬이 금고를 거쳐 지분 동전으로 이어지는 ERC-4626 교환비율 개념도
주제의 이해를 돕기 위해 imagegen으로 제작한 AI 생성 개념 일러스트
먼저 읽는 핵심

share 가격은 고정 1대1이 아니며 totalAssets와 지분 공급의 관계로 변한다.
convert 함수는 이상적 평균값이고 preview 함수는 특정 작업의 수수료·반올림 방향을 반영한다.
초기 예치자는 donation 기반 inflation attack과 최소 지분·슬리피지 보호를 확인해야 한다.

ERC-4626 금고는 하나의 ERC-20 underlying 자산을 받아 지분 토큰 shares를 발행하는 표준 인터페이스입니다. 수익·손실이나 기부로 금고의 총자산이 변하면 1 share가 나타내는 자산량도 달라질 수 있습니다. deposit은 넣을 자산량, mint는 받을 지분량을 기준으로 하고 withdraw는 꺼낼 자산량, redeem은 태울 지분량을 기준으로 하므로 preview 함수와 실제 한도를 함께 읽어야 합니다.

금고 자산과 지분은 서로 다른 수량이다

ERC-4626은 하나의 ERC-20 토큰을 underlying asset으로 삼는 토큰화 금고 표준입니다. 사용자가 자산을 예치하면 금고는 소유권 비율을 나타내는 ERC-20 shares를 발행합니다. 예치 토큰과 share 토큰은 계약 주소와 decimals가 다를 수 있어 화면 숫자를 그대로 비교하면 안 됩니다.

금고가 전략 수익을 얻으면 totalAssets가 늘고 같은 share가 더 많은 자산을 나타낼 수 있습니다. 손실이나 부실 채권이 생기면 반대입니다. 자산 가격이 외부 시장에서 변한 것과 금고 내부의 asset-per-share 변화도 구분합니다. 금고 지분의 가치는 underlying 시장 가격과 교환비율 두 요인의 영향을 받습니다.

ERC-4626 네 가지 자산 이동 함수
함수 사용자가 지정 계산되는 값
deposit(assets) 넣을 자산량 받을 shares
mint(shares) 받을 shares 필요한 assets
withdraw(assets) 꺼낼 자산량 태울 shares
redeem(shares) 태울 shares 받을 assets

convert와 preview는 같은 질문이 아니다

convertToShares와 convertToAssets는 평균 교환비율에 따른 이상적 환산값을 제공합니다. ERC-4626 표준은 이를 특정 사용자의 가격 견적이나 조작 가능한 단기 oracle로 사용하지 않도록 구분합니다. 호출자별 제한과 실제 작업 수수료를 반영하지 않을 수 있습니다.

previewDeposit·previewMint·previewWithdraw·previewRedeem은 현재 블록에서 해당 작업을 실행했을 때의 결과에 가깝게 설계됩니다. 입출금 수수료와 표준이 정한 반올림 방향 때문에 convert 결과와 다를 수 있습니다. 프런트엔드는 작업 종류에 맞는 preview를 쓰고 사용자는 최소 수령 shares 또는 최대 지불 assets 조건을 확인합니다.

같은 교환비율도 어떤 수량을 고정하느냐에 따라 반올림 위험이 달라진다.

JOBCOIN 해설

반올림은 항상 금고에 유리한 방향을 확인한다

정수 산술에서는 나눗셈 나머지가 생깁니다. 표준은 deposit과 redeem 등 각 함수가 사용자에게 과도한 이익을 주지 않도록 반올림 방향을 정합니다. 작은 예치가 교환비율에 비해 너무 적으면 받을 shares가 0에 가까워져 예치 가치 대부분을 잃을 수 있습니다.

UI에 표시된 소수점 수량이 충분해 보여도 실제 기본 단위로 preview를 호출합니다. slippage 보호가 없는 직접 deposit은 상태 변화 사이에서 예상보다 적은 shares를 받을 수 있습니다. 라우터나 래퍼를 쓴다면 minShares·maxAssets 같은 사용자 제한이 실제 호출 데이터에 들어가는지 확인합니다.

  • asset과 share 계약 주소·decimals를 각각 확인한다.
  • 작업에 맞는 preview 함수 결과를 읽는다.
  • 최소 수령 또는 최대 지불 조건을 설정한다.
  • maxDeposit·maxMint·maxWithdraw·maxRedeem 한도를 함께 확인한다.

초기 금고는 기부로 교환비율이 왜곡될 수 있다

금고가 비어 있거나 shares 공급이 매우 작을 때 공격자가 먼저 소량을 예치한 뒤 asset을 직접 기부하면 자산 대비 지분 비율을 크게 움직일 수 있습니다. 뒤 사용자의 deposit이 반올림돼 거의 0 shares를 받으면 기부자가 기존 지분으로 그 가치를 흡수하는 inflation attack이 가능합니다.

OpenZeppelin 가이드는 가상 assets와 shares, decimals offset을 두어 초기 환율과 반올림 손실을 완화하는 방식을 설명합니다. 모든 ERC-4626 구현이 같은 방어를 쓰는 것은 아닙니다. 배포 코드의 `_convertToShares`, 초기 공급, 최소 예치, 라우터 보호를 확인하고 빈 금고에 큰 금액을 첫 예치하지 않습니다.

max 함수는 유동성과 정책 제한을 보여 준다

maxWithdraw와 maxRedeem은 소유권만 아니라 현재 출금 가능한 범위를 나타낼 수 있습니다. 전략 자산이 잠겨 있거나 출금 큐, 일일 한도, pause가 있으면 totalAssets가 충분해 보여도 즉시 인출량은 작을 수 있습니다. preview가 값을 보여도 max 제한 때문에 실제 호출이 실패할 수 있습니다.

totalAssets의 정의도 구현을 읽어야 합니다. 외부 전략의 미실현 가치, 받을 이자, 회수 불가능 자산을 어떤 방식으로 평가하는지에 따라 share 가격이 달라집니다. ERC-4626 호환은 전략 건전성이나 항상 가능한 상환을 보증하지 않습니다.

예치 전 회계와 권한을 함께 점검한다

금고 contract가 업그레이드 가능한지, 자산을 옮기는 관리자와 전략 주소가 누구인지 확인합니다. asset()이 반환하는 underlying 계약과 공식 문서가 일치하는지 보고, approve 대상이 금고인지 라우터인지 구분합니다. 무제한 승인은 share 교환비율과 별개의 지갑 권한 위험입니다.

소액 deposit 뒤 실제 받은 shares와 preview 결과를 비교하고, 바로 previewRedeem과 maxRedeem을 조회합니다. 수익률 표시는 과거 교환비율 변화일 수 있으며 보상 토큰과 underlying 손익을 섞을 수 있습니다. 거래 영수증의 Deposit·Withdraw 이벤트와 자산·share 잔액을 함께 기록합니다.

자주 묻는 질문

ERC-4626 share는 underlying과 항상 1대1인가요?

아닙니다. totalAssets와 총 shares의 관계, 수익·손실·수수료에 따라 교환비율이 변할 수 있습니다.

deposit과 mint는 무엇이 다른가요?

deposit은 투입 assets를 고정하고 받을 shares를 계산하며, mint는 받을 shares를 고정하고 필요한 assets를 계산합니다.

표준 금고면 원금 상환이 보장되나요?

아닙니다. ERC-4626은 인터페이스와 회계 함수 규칙을 표준화할 뿐 전략 손실, 유동성, 관리자 위험을 보증하지 않습니다.

직접 확인한 자료

자료 확인 2026.09.27
  1. ERC-4626: Tokenized Vaultseips.ethereum.org
  2. ERC-4626docs.openzeppelin.com
AI 활용 안내

이 글은 AI로 초안을 구성한 뒤 공개 원문과 기술 문서를 대조해 작성했습니다. 대표 이미지는 AI 생성 개념 일러스트이며 실제 사건 사진이나 가격 차트가 아닙니다.

이해를 위한 정보 콘텐츠

이 글은 특정 자산의 매수·매도 또는 수익을 권유하지 않습니다. 자료의 발표 시점과 이후 변경 사항을 함께 확인해 주세요.

편집 원칙과 정정 안내 →