[DeFi 탐험 #1] Curve Finance

Coinone Tech Team
Coinone Tech Blog
Published in
58 min readOct 28, 2020

안녕하세요. 코인원에서 이번에 새롭게 디파이(DeFi: Decentralized Finance, 탈중앙화 금융) 탐험 시리즈를 기획해 여러분께 공유드립니다.
이번에 기획한 디파이 탐험 시리즈는 여러 디파이 서비스들을 실제로 사용해보면서 하나하나 체험해보는 가이드 컨셉으로 제작되었습니다.

콘텐츠의 특성상 분량이 많아 풀버전을 코인원 기술 블로그에 올려, 더 깊이있게 다뤄보고자 합니다.

코인원은 암호화폐 동향 및 디파이 관련 콘텐츠를 코인원 웹사이트 내 코인원 크립토 뉴스에서 꾸준히 다뤄왔으며, 아래 코인원 크립토 뉴스 배너를 클릭해 다른 콘텐츠도 만나보실 수 있습니다.

코인원 크립토 뉴스 바로가기: https://coinone.co.kr/talk/

디파이란 블록체인 위에서 구축된 분산 금융 시스템을 뜻하며, 블록체인 네트워크를 기반으로 운영되는 분산화된 금융 서비스, 기술, 탈중앙화 애플리케이션(DApp) 등 넓은 범위에서 디파이라 불리는 서비스들이 생겨나고 있습니다.
디파이는 스마트 컨트랙트를 기반으로 블록체인 위에 구축되어 있으며, 스마트 컨트랙트를 동작할 수 있는 웹사이트에 지갑을 연결해 스마트 컨트랙트를 실행하는 방식으로 작동합니다.

본 디파이 탐험 콘텐츠는 디파이 서비스를 사용하면서 블록체인에서 실제로 어떤 일이 발생하게 되는가를 한땀한땀 스크린샷을 떠가며 함께 살펴보는 방식으로 구성되어 있습니다.
여러분께서는 본 콘텐츠를 통해 손에 잡히고, 눈에 보이는 블록체인 경험을 간접적으로 해 보실 수 있을 것입니다.

DeFi 탐험 계획

첫 탐험에서 다뤄볼 디파이 서비스는 커브 파이낸스(Curve Finance, 이하 “커브”)입니다.
커브는 2020년 1월 생겨난 이더리움 기반 디파이 서비스로, TVL(Total Value Locked, 예치 자산 합계) 기준으로 손에 꼽힐만큼 많은 자산이 예치되어 있습니다.
커브는 디파이 서비스로 유동성 풀을 통해 자산간 교환을 할 수 있도록 지원하거나, 자산을 유동성 풀에 넣어 이자를 얻을 수 있는 플랫폼을 제공합니다.

탐험할 서비스: Curve Finance (이더리움 블록체인 기반)준비물
💻 인터넷이 접속되는 안전한 컴퓨터
🌐 크롬 또는 파이어폭스 웹브라우저와 메타마스크 지갑(플러그인)
💎 블록체인 전송 수수료로 사용할 소량의 ETH
💵 디파이 서비스 입금할 연구 목적의 DAI
DeFi 탐험: Curve Finance

목차

  1. DeFi 세상으로 한 발짝
    1.1. Why DeFi?
    1.2. 지갑 설정하기
    1.3. 지갑으로 코인 전송하기
  2. Curve 둘러보기
    2.1. 커브 Home 둘러보기
    2.2. 커브 Pool 둘러보기
  3. Curve 이제 진짜 써보자
    3.1. Curve 웹사이트에 지갑 연결
    3.2. 커브 컴파운드 풀에 Deposit 하기
  4. Curve DAO에 LP 토큰을 Deposit 해보자
    4.1. Curve DAO가 뭔가요?
    4.2. Curve DAO 간단히 살펴보기
    4.3. Curve DAO 웹사이트에 지갑 연결하기
    4.4. Gauge에 LP 토큰 Deposit 하기
    4.5. 기다림의 시간
  5. 정리: Gauge Withdraw, CRV Claim, Pool Withdraw
    5.1. Gauge Withdraw
    5.2. CRV Claim
    5.3. Pool Withdraw
    5.4. 최종 잔고 비교
  6. 마치며

1. DeFi 세상으로 한 발짝

디파이(DeFi)는 시파이(CeFi: Centralized Finance, 중앙화 금융) 밖 세상입니다.
시파이에서 한 발짝 내딛으면 디파이 세상이 나옵니다.

1.1. Why DeFi?

왜 디파이를 하는 걸까요? 필자는 디파이를 왜 하는가, 왜 해야하는가에 대해 “필연적”이기 때문이라 말씀드리고 싶습니다.
블록체인은 비트코인이 탄생한 이후, 오늘날에 이르기까지 우여곡절이 있었지만 블록체인 생태계는 고도화를 꾸준히 이뤄왔습니다.
이제는 블록체인 위에 올라간 가치를 다양한 방법으로 활용하는 단계에 와있습니다. 이는 다분히 필연적입니다.

“필연적”이라는 말이 다소 추상적이네요. 그렇다면 디파이를 하는 이유는 무엇일까요?
디파이에 참여하는 대부분의 일반 투자자들은 “탈중앙화 금융을 통해 중앙화 금융보다 더 큰 수익을 낸다”는 목표를 갖고 있을 것입니다. 그게 아니면 굳이 디파이를 할 필요가 없으니까요.
디파이로 수익을 낼 수 있다/없다에 대한 부분은 본 콘텐츠에서 확답드리기 어렵습니다. 너무 다양한 변수가 있기 때문에 수익을 보장할 수 없기 때문입니다.
수익에 대한 부분은 여러분의 몫으로 남겨두겠습니다. 본 콘텐츠로 디파이 관련 지식이 늘어나 수익에 도움이 되길 바랍니다.

1.2. 지갑 설정하기

블록체인은 다양한 형태와 이름으로 이 세상에 존재하며, 이번 탐험에서 다뤄볼 서비스는 이더리움 블록체인을 활용하고 있습니다.
먼저 이더리움 지갑을 컴퓨터에 설치하는 작업부터 시작해보겠습니다.

이더리움 공식 사이트에서 여러 이더리움 지갑들을 확인하실 수 있습니다.(https://ethereum.org/ko/wallets/)
DeFi 탐험에서는 다양한 디파이 서비스에서 이미 널리 지원하고 있고, 이더리움 공식 웹사이트의 지갑 페이지에서 가장 먼저 언급되는 메타마스크(https://metamask.io/)를 사용해보겠습니다.

1. 메타마스크 공식 웹사이트(https://metamask.io/)에 접속합니다.
우측 상단의 “Download” 버튼을 클릭해 다운로드 페이지로 이동해, 웹 브라우저용 메타마스크 플러그인을 설치해야합니다.

2. 웹 브라우저는 크롬과 파이어폭스를 지원합니다. 본 콘텐츠에서는 크롬만 다뤄보겠습니다.
“Install MetaMask for Chrome”을 클릭합니다.

https://metamask.io

3. 크롬 웹 스토어에서 메타마스크 플러그인을 “Chrome에 추가” 버튼을 클릭해 설치하세요.

4. “Chrome에 추가”를 클릭해 뜬 팝업에서 “확장 프로그램 추가”를 클릭하면, 메타마스크 플러그인이 설치됩니다.

5. 크롬 우측상단 플러그인 아이콘을 클릭해, 확장 프로그램을 고정(핀 모양 아이콘)하면, 편리하게 이용할 수 있습니다.

6. 플러그인 설치 및 고정 했다면, 메타마스크 플러그인 아이콘을 클릭해, 지갑을 생성해야 합니다.
크롬 우측상단의 메타마스크 플러그인 아이콘을 클릭해 “시작하기” 버튼을 클릭합니다.

7. “지갑 생성하기” 버튼을 클릭해 지갑 생성을 시작합니다.

8. 메타마스크 개선을 도울지 말지 설명을 확인하고 직접 결정해서 “No Thanks” 혹은 “I agree”를 클릭하세요.

9. 비밀번호를 생성해야합니다. 이 비밀번호는 지갑 사용을 위해 메타마스크의 잠금을 푸는데 필요한 암호입니다.
최소 8자 이상의 강력한 비밀번호를 정해 설정해주시고, 입력칸 아래 체크 박스 항목의 “사용 지침”을 확인 후 체크하고, “생성” 버튼을 클릭하세요.

10. 비밀번호 생성만으로 지갑은 만들어집니다. 다만, 메타마스크 플러그인 유실 또는 웹 브라우저 초기화시 지갑을 복원할 수 있도록 “비밀 백업 구문”을 별도 보관하는 과정이 남아있습니다. 이 비밀 백업 구문은 나중에 지갑을 되살릴 때 사용할 수 있습니다.
화면에 표시된 비밀 백업 구문을 별도로 보관하셨다면, “다음”을 클릭하세요. (단어를 마스킹 처리했습니다.)

11. 별도로 백업해둔 비밀 백업 구문을 보고, 아래 버튼을 클릭해 순서대로 나열하세요.
모든 단어를 나열하고, “승인” 버튼을 클릭하세요.(단어를 마스킹 처리했습니다.)

12. 이제 지갑을 사용할 준비가 거의 다 되었습니다. “안전하게 시드 구문을 보관하는 팁”을 꼭 참고해주시고, “모두 완료” 버튼을 클릭해 지갑 생성 완료하세요.

13. 지갑 생성을 완료하면, 웹 브라우저의 메타마스크 플러그인 아이콘을 클릭해 지갑의 잔고를 확인할 수 있습니다.

1.3. 지갑으로 코인 전송하기

이제 방금 생성한 따끈따끈한 새 지갑으로 코인을 전송해볼 차례입니다.
이번 디파이 탐험에서 사용할 코인은 1 ETH와 3000 DAI로 정했습니다.
필자가 좋아하는 숫자로 정한 임의의 수량일 뿐, 꼭 이정도 필요하다는 최소 수량도 권장 수량도 아님을 밝힙니다.

  • ETH는 이더리움 블록체인을 이용하기 위한 수수료로 사용되기 때문에 소량 필요합니다.
    본 콘텐츠에서 1개의 이더리움을 수수료로 전부 소진할 일은 없습니다만, 가스 가격에 따라 수수료의 필요 수량이 변동성이 있어 넉넉하게 준비했습니다.
  • DAI는 블록체인 기반 스테이블 코인으로 디파이 서비스 Curve에 예치 가능한 다양한 토큰 종류 중 하나로, 예시로 정한 것입니다.
    수량 또한 예시로 정한 임의의 수량입니다.

실제로 디파이 서비스를 이용해보는 사용자 관점에서는 지출되는 이더리움 수수료와 디파이 서비스의 수익률을 고려해 초기자본을 산정하시기 바랍니다.
DAI는 ERC-20 토큰이기 때문에 이더리움 주소로 전송받을 수 있습니다.

1. 먼저 지갑으로 코인을 전송하기 위해서는 메타마스크에서 지갑 주소를 복사해야 합니다.
메타마스크 플러그인을 실행해, 주소 부분을 클릭하면, 입금주소가 복사됩니다.

2. 복사한 주소를 이더리움 블록체인 익스플로러 서비스에서 검색해 제대로 복사되었는지 확인해볼 수 있습니다.
본 콘텐츠에서는 가장 널리 쓰이는 이더리움 블록체인 익스플로러로 이더스캔(Etherscan)을 사용하겠습니다.

3. 복사한 주소로 앞에서 정한 두 종류의 코인(ETH, DAI)을 전송해 보겠습니다.
코인 전송은 사용하시는 거래소에서 지갑으로 진행하면 됩니다.

지갑으로 전송이 완료되면, 메타마스크 지갑에 1 ETH가 표시됩니다.
DAI는 처음에 표시되지 않을 수 있는데, 토큰을 추가해 표시할 수 있습니다.
토큰을 추가하는 방법은 “Assets” 탭에서 “토큰 추가” 버튼을 클릭하고, 종목을 검색해(“DAI” 입력) 토큰을 추가할 수 있습니다.

*다시 한번 강조드리지만, 지갑으로 전송한 1 ETH와 3000 DAI는 예시로 정한 수량일 뿐, 최소 수량이나 권장 수량이 아닙니다.

4. 이더리움 블록체인 익스플로러인 이더스캔에서도 입금된 자산을 확인할 수 있습니다.

https://etherscan.io/address/0x37642Bb53d537214D07CB25B65Bf4DD4c01516Fd

2. Curve 둘러보기

지갑에 코인을 준비해뒀으니, 이제 디파이 서비스인 커브(Curve)로 이동해, 커브가 어떤 곳인지 둘러보겠습니다.
먼저, 커브 웹사이트의 최상단 메뉴를 살펴보며 어떤 기능을 제공하는지 확인하고, 차례로 “Home”(홈)과 커브의 주요 기능인 “Pool”(풀)을 둘러보도록 하겠습니다.

  • (가로 세 줄 아이콘) 메뉴 버튼: 커브의 개별 풀을 이동할 수 있습니다.
  • “Home”: 커브 홈으로 이동합니다.
  • “DAO”: Curve DAO 메뉴로 이동합니다.
  • “Use CRV”: 커브를 ‘사용’할 수 있는 메뉴로, CRV 토큰 스테이킹과 관련된 메뉴입니다.
  • “Trade”: 커브의 여러 풀에서 발생한 거래 차트를 확인하고, 풀의 토큰간 교환이 가능합니다.
  • “Stats”: 커브 풀의 상태를 표시합니다.
  • “Pay”: Curve Pay 메뉴로 이동합니다.
  • “Risks”: 커브 사용에 대한 위험 안내 페이지입니다.
  • “?”: 컨트랙트 주소, 가이드 등 다른 메뉴로 이동할 수 있습니다.

2.1. 커브 Home 둘러보기

1. 홈의 첫번째 섹션은 “Swap using all Curve pools”입니다.
커브에는 다양한 풀(이하 ‘풀’로 부릅니다.)이 있는데, 모든 풀에 예치된 자산간 “Swap”(교환)이 가능하도록 지원하고 있습니다.

사용자는 Swap 과정에서 수수료를 커브 풀에 지불하게되며, 이 수수료가 커브 풀에 예치한 자산들에게 제공되는 기본적인 수익이라고 보시면 되겠습니다.
다만, 개별 풀마다 수익을 만드는 방법에는 차이가 있을 수 있습니다.

정리하면, 이 “Home” 화면의 최상단 섹션은 커브 서비스가 제공하는 핵심적인 Swap 기능을 표시한 화면이라고 보시면 되겠습니다.

2. 홈 화면의 두번째 섹션은 커브에서 지원하는 여러 풀의 전체 목록이 표시된 “Curve pools”입니다.
각각의 풀은 취급하는 자산이 정해져 있으며, 사용자가 예치한 자산으로 구성됩니다.

이 화면에서는 각 풀의 취급 자산, 년간 수익률(CRV 마이닝 포함), 거래량 등 상세 정보를 표시합니다.

3. “Curve pools”에 표시된 첫번째 풀인 “0. Compound”를 예시로 살펴보겠습니다.

  • 0. Compound: 해당 풀의 순번과 풀의 이름입니다.
    여기서 Compound는 컴파운드 디파이 서비스(https://compound.finance/)를 의미합니다.
    각 커프풀에 대한 자세한 내용은 커브 가이드 “Understanding Curve”(https://resources.curve.fi/base-features/understanding-curve)를 참고하세요.
  • [ (c)DAI, (c)USDC ]: 해당 풀에서 취급하는 자산, (c) 표시는 cDAI와 DAI, cUSDC와 USDC를 지원한다는 의미입니다.
    “Buy and sell”(Swap 기능), “Deposit”(입금) 화면에서 “~ wrapped” 체크박스를 클릭하면, cDAI나 cUSDC같은 wrapped(감싸진) 토큰을 입금하거나 교환할 수 있습니다.
  • APY: 해당 풀의 연간 유효 이자율 “Annual Percentage Yield”의 약자입니다.
    첫 줄에 표시된 “2.10%”는 앞서 언급한 풀 운용에 따른 “기본적인” 이자에 해당합니다.
    그 아래 줄의 “+23.47% to 58.68% CRV”는 해당 풀 토큰을 Curve DAO에 예치해, CRV(Curve DAO token)를 받았을 때의 예상 수익률입니다.
  • Vol: “Volume”의 줄임말로, 해당 풀의 최근 24시간 거래량입니다.

4. 세번째, 네번째 섹션은 “veCRV stats”“Total pool deposits and daily volume”입니다.

  • “veCRV stats”은 베스팅 CRV 토큰인 veCRV의 상태에 대해 표시됩니다.
    veCRV에 대해 궁금하신 분은 커브의 가이드 “What are veCRV?”(https://resources.curve.fi/faq/vote-locking-boost#what-are-vecrv )를 참고하시기 바랍니다.
  • “Total pool deposits and daily volume”에는 현재 모든 풀에 입금된 자산의 총 금액과, 일간 거래량이 표시됩니다.

2.2. 커브 Pool 둘러보기

커브 홈을 가볍게 살펴봤으니, 이제 커브의 핵심 기능인 Swap(교환)을 가능하게 해주는 개별 풀을 살펴보며 좀 더 서비스를 깊이있게 살펴보겠습니다.
커브에서 제공하는 다양한 풀의 구조는 대부분 비슷합니다. 여러 풀 중 대표로 첫번째 풀인 컴파운드 풀을 선택했습니다.
커브 홈의 좌측 상단 메뉴에서 컴파운드 풀로 이동합니다.

컴파운드 풀 상단 막대의 메뉴는 아래와 같습니다.

  • “[Compound]”: 현재 들어와 있는 풀의 이름이 표시됩니다. 클릭하면, 풀을 바꿀 수 있는 메뉴가 뜹니다.
  • “Root”: 커브 홈으로 이동합니다.
  • “DAO”: Curve DAO 메뉴로 이동합니다.
  • “Buy and sell”: 컴파운드 풀에 예치된 자산을 활용한 교환을 할 수 e있습니다.
  • “Deposit”: 컴파운드 풀에서 취급하는 자산을 예치할 수 있습니다.(예치시 컴파운드 풀 토큰을 받게됩니다.)
  • “Withdraw”: 컴파운드 풀 토큰을 반납하고, 컴파운드 풀에서 취급하는 자산을 출금할 수 있습니다.
  • “Stats”: 풀의 상태를 표시합니다.
  • “Profit”: 해당 풀에 관련된 내 자산의 입출금 및 수익을 확인합니다.
  • “Pay”: Curve Pay 메뉴로 이동합니다.
  • “?”: 컨트랙트 주소, 가이드 등 다른 메뉴로 이동할 수 있습니다.

2.2.1. Buy and Sell

1. 처음 컴파운드 풀에 들어오면, 바로 “Buy and sell”로 들어옵니다.
“Buy and sell”에서는 컴파운드 풀에 예치된 자산들을 이용해 풀에서 지원하는 자산간 Swap(교환)을 할 수 있습니다.
커브에서는 이 교환을 “Sell”로 표시하고 있습니다.

2. “Buy and sell”의 회색 배경 섹션을 살펴보겠습니다. 이 섹션에서 Swap(교환)을 할 수 있습니다.

  • “From”“To”에 교환을 원하는 자산의 종류를 선택하고, 수량을 입력할 수 있습니다.
  • “Infinite approval”을 체크하면, 이후 동일한 자산 취급시, 별도의 Approve 트랜잭션 단계를 생략할 수 있습니다.(Approve 트랜잭션은 이후 실제 트랜젝션을 발생시킬 때 더 알아보겠습니다.)
  • (앞에서 잠깐 언급하기도 했는데) “Swap wrapped”를 클릭하면 Compound 디파이 서비스에 자산을 예치하고 받을 수 있는 Wrapped 자산인 cDAI와 cUSDC를 교환할수도 있습니다.
  • “Advanced option”을 펼치면, “Max slippage”“Gas price”를 설정할 수 있습니다.
  • “Max slippage”: 요청 가격과 실제 체결 가격의 차이가 몇 %까지 거래를 허용하겠느냐에 대해 미리 정해두는 수치입니다. 기본값은 1%입니다.
  • “Gas price”: 이더리움 블록체인에 지불할 가스의 가격을 정할 수 있습니다. 기본값은 “Fast”이며, 숫자의 단위는 “gwei”입니다.
    대부분의 블록체인은 거래량과 전송 횟수가 늘어났을 때 전송 수수료가 증가하게 됩니다. 이유는 블록체인 블록에 태울 수 있는 트랜잭션 수는 한정되어 있으나, 블록의 크기는 제한되기 때문입니다. 채굴자 입장에서는 더 높은 비용을 지불하겠다는 트랜잭션을 선택해 블록에 태우게 되기 때문에 블록체인 네트워크에 트랜잭션이 많아지면 가스 값이 올라가 전송 수수료가 증가합니다.대부분의 디파이 서비스는 적정 가스 가격을 책졍해 제시하지만, 블록체인 네트워크가 과부하되었을 때는 빠르게 컨펌을 진행하기 위해 가스 가격을 높이 입력해야할 때가 있습니다.가스 트래커(Gas Tracker) 서비스를 이용해 적정 가스 가격을 찾고, 즉시 컨펌이 날만한 가스의 가격(gwei)을 확인할 수 있습니다.
  • “Sell” 버튼은 위에서 정한 대로 트랜잭션을 발생시킵니다.
  • “Estimated tx cost”는 가스 가격(gwei)를 고려한 예상 트랜잭션 수수료입니다.

3. 하단의 파란 배경 섹션은 “Currency reserves”가 표시되며, 컴파운드 풀에 예치된 전체 자산과 비중 등 상태를 확인할 수 있습니다.
이 섹션은 풀의 전반적인 상태라 여러 메뉴에서 자주 등장합니다.

2.2.2. Deposit

“Deposit” 메뉴를 살펴보겠습니다. 단어 그대로 풀에 자산을 입금하기 위한 기능을 제공합니다.

  • “Currencies”에서 입금 가능한(컴파운드 풀에서 취급하는) 자산의 종류를 표시하고, 수량을 입력할 수 있습니다.
  • “Gas price”에서 트랜잭션 발생에 사용할 가스 가격을 설정합니다. 4개의 체크박스가 있는데, 하나씩 알아보겠습니다.
  • “Add all coins in a balanced proportion”: 회색 섹션 하단의 “Currency reserves”에 적힌 자산 비중과 동일한 비율로 예치 수량이 입력됩니다. (기본값: 체크 안함)
  • “Use maximum amount of coins available”: 입력칸에 가능한 모든 자산의 수량이 자동으로 입력됩니다. (기본값: 체크 함)
  • “Infinite approval — trust this contract forever”: (Buy and sell에서도 언급했지만) 디파이 서비스에서 대부분의 컨트랙트 트랜잭션 발생에는 “Approve” 트랜잭션을 해야, 다음 단계인 실제 전송(컨트랙트 실행)을 진행할 수 있습니다. 한번의 승인으로 이후 동일한 컨트랙트에 대해 Approve를 생략하려면, 이 체크를 하고 입금을 진행하면 됩니다. (기본값: 체크 안함)
  • “Deposit wrapped”: 체크하면 해당 풀에서 취급하는 wrapped 자산으로 입력칸이 바뀝니다. (기본값: 체크 안함)
  • “Deposit” 버튼은 컴파운드 풀에 입력한 수량만큼의 토큰을 입금하는 기능입니다. “Deposit” 진행시, 이 컨트랙트 실행이 최초이거나, 이전에 “Infinite approval”을 하지 않았다면, Approve 트랜잭션을 하고, 실제 컨트랙트 트랜잭션을 발생시킵니다.
    즉, 총 2번의 트랜잭션이 순차적으로 발생하게 됩니다.(2번의 TX: Deposit에 대한 Approve TX → Deposit TX)
  • “Deposit & stake in gauge” 버튼은 입금과 같이 DAO gauge에 해당 풀 토큰을 예치하는 버튼입니다. “Deposit & stake in gauge” 진행시, “Deposit”과 마찬가지로 Approve 트랜잭션과 같이 진행해야하는데, 이번엔 “Stake in gauge” 트랜잭션도 같이 발생해야하므로, 총 4번의 트랜잭션이 순차적으로 발생하게 됩니다.(4번의 TX: Deposit에 대한 Approve TX → Deposit TX → Stake in gauge에 대한 Approve TX → Stake in gauge TX)
  • “Risks of using compound pool”은 해당 풀의 위험성에 대한 페이지입니다.
  • “You’ll receive minimum ~”은 입금시 예상 수령 compound LP token과 해당 토큰의 가격 등의 정보가 표시됩니다.
  • “Advenced option”은 (“Buy and sell”의 설명과 마찬가지로) 슬리피지를 설정하는 칸입니다.
  • “Bonus(plus pricing)”은 회색 섹션 하단의 “Currency reserves”에 표시된 해당 풀의 취급 자산 중 비중이 적은 자산을 입금할 때 주어지는 가격 혜택입니다.

2.2.3. Withdraw

“Withdraw”는 단어 그대로 해당 풀에서 내 자산을 출금하는 기능입니다. 풀 토큰을 돌려보내고, “Currencies”에 표시된 자산을 출금할 수 있습니다.

  • “Share of liquidity” 입력칸에서 %로 출금할 비율을 정할 수 있습니다.
  • “Currencies”에는 출금될 자산의 수량이 표시됩니다.
  • “Withdraw wrapped”를 체크하면, wrapped 자산(컴파운드에서는 cDAI, cUSDC)로 출금할 수 있습니다.(기본값: 체크 안함)
  • “Withdraw $ in”에서는 자산을 섞어 출금할지(해당 풀의 자산 비율대로 출금), 특정해서 출금할지를 정할 수 있습니다.
  • “Donate dust”는 자산의 먼지를 기부하는지에 대한 옵션이며, 툴팁 도움말에서는 이 기능의 사용시 전송 수수료가 줄어들 수 있다고 나옵니다.(기본값: 체크 함)
  • “Gas price”에서 가스 가격을 정할 수 있습니다.
  • “Infinite approval — trust zap contract forever”을 체크하면, 다음번엔 Approve를 없이 동일한 컨트랙트를 바로 실행할 수 있습니다.(기본값: 체크 안함)
  • “Withdraw” 버튼으로 트랜잭션을 발생시킵니다.
    (위 스크린샷에 표시되어있지는 않지만) DAO gauge에 풀 토큰을 예치했다면 회수가능한 CRV가 생기는데, CRV(Curve DAO 토큰)의 Claim(회수) 기능, DAO gauge에서 언스테이킹 기능도 여기서 할 수도 있습니다.

2.2.4. Stats

“Stats”에서는 해당 풀의 상태 — 유동성 제공자의 수익률 변화, 일간 APY의 변화 등을 확인할 수 있습니다.

2.2.5. Profit

“Profit”은 해당 풀의 내 자산 상태를 확인할 수 있습니다.

3. Curve 이제 진짜 써보자

커브 서비스를 간략하게나마 살펴본 것 같습니다.
여기까지 따라오셨다면, 대략적으로 커브 서비스가 어떻게 구성되어 있고, 어떤식으로 작동하는지 자세하게는 아니지만 대략적으로는 파악이 되었을 것입니다.

이제 커브 서비스에 직접 자산을 입금해 LP(Liquidity Provider: 유동성 공급자) 토큰을 민팅(Minting: 자산을 발행한다는 의미)하는 과정을 진행해보겠습니다.
여러분들이 콘텐츠를 이해하고 참고하기 유용하도록 본 콘텐츠에서 사용하는 용어는 가급적 커브의 화면에 쓰인 용어를 영어 그대로 사용하겠습니다.

3.1. Curve 웹사이트에 지갑 연결

1. 커브 웹사이트(https://www.curve.fi/)로 이동해, 지갑을 연결해 보겠습니다.
먼저, 웹사이트에 접속하면 지갑을 연결하라고 “Select a Wallet” 창이 뜨는데, 앞서 코인을 모아둔 지갑인 메타마스크로 접속합니다.

2. 연결할 지갑을 선택하고, 웹사이트에서 요청하는 권한을 확인하고 “연결”합니다.

  • 메타마스크 플러그인 좌측 상단에서 “Connected”를 클릭하면, 연결 상태를 확인할 수 있습니다.

3.2. 커브 컴파운드 풀에 Deposit 하기

이제 커브에서 지원하는 풀 중 하나인 컴파운드 풀을 예시로 “Deposit” 메뉴에서 실제 자산(DAI)을 커브 컴파운드 풀에 입금하는 트랜잭션(TX)를 발생시켜보겠습니다.
이 작업에는 실제 DAI와 수수료용 ETH가 사용되며, 블록체인 위에서 실제로 어떻게 기록이 남는지는 트랜잭션을 살펴보도록 하겠습니다.

1. 커브 컴파운드 풀의 “Deposit”(https://www.curve.fi/compound/deposit)으로 이동합니다.
(컴파운드 풀은 예시로 정한 것이며, 여러분들께서는 시장상황을 고려하여 선택하시기 바랍니다.)

필자는 이 입금 컨트랙트에 대해 다음번에는 “Approve” 트랜잭션을 추가로 하지 않기 위해 “Infinite approval”을 체크해서 “Deposit”을 진행하겠습니다.

잠깐! 트랜잭션을 실제로 발생시키는 작업에 앞서, 이더리움 블록체인 네트워크의 상태를 확인해 지금의 가스 가격이 트랜잭션을 발생시키기에 적절한 시기인가를 가늠해보는 것이 좋습니다. 이더리움 가스 가격은 참여자들이 어떤 트랜드에 따라 블록체인을 사용하는가에 따라 차이가 아주 크고, 너무 과도하게 가스 가격이 높으면 수수료를 터무니없이 많이 내야합니다.

필자가 가스 가격 상태를 확인하는데 사용하는 서비스 몇 곳을 소개해 드리겠습니다.

  • “이더스캔”의 “Gas Tracker”(https://etherscan.io/gastracker)
    가스 가격의 Low, Average, High 값과 평균 컨펌 시간과 가스 가격의 차트를 확인할 수 있습니다.
https://etherscan.io/gastracker
  • “이더리움프라이스”(https://ethereumprice.org/gas/)의 최근 7일간의 가스 가격(gwei) 차트
    가스 가격의 추세를 파악하기 좋습니다.
https://ethereumprice.org/gas/
  • “이더리움프라이스”(https://ethereumprice.org/gas/)의 최근 7일간의 요일별/시간대별 분포(히트맵)
    최근 요일/시간대별 가스 가격을 통해 최적의 요일과 시간대를 파악하기 좋습니다.
https://ethereumprice.org/gas/

2. 필자는 작성 시간 기준으로 “High”에 해당하는 96 gewi 보다 약간 더 높게 100 gwei 정도로 진행해보겠습니다.
High 보다 높게 수수료를 정하면, 거의 최우선 순위로 트랜잭션이 컨펌나게 됩니다.

*가스 가격은 네트워크 상황에 따라 계속 변하므로, 본 콘텐츠에서 작성한 가스 가격은 집필 당시 상황에 맞게 작성한 가격일 뿐, 그대로 따라하지 마십시오.

3. “Deposit” 버튼을 누르기 전에, 다시 한번 값이 똑바로 입력되어 있는지 두번 세번 확인합니다.
블록체인 위에서 거래는 “불가역적”(되돌릴 수 없음)이기 때문에 늘 실수하지 않게 늘 주의해야합니다.

  • “Currencies”: 미리 지갑에 준비해둔 DAI 3000개 (“Use maximum amount of coins available”이 체크되어 있기 때문에 자동으로 입금 가능 자산이 전량 입력됩니다.)
  • “Gas price”: 100 Fast(단위: gwei) (가스 가격은 매 순간 실시간으로 달라질 수 있습니다. 여기서 정하더라도, 지갑에서 컨펌할 때 변경 가능합니다.)
  • “Infinite approval — trust this contract forever” 체크했습니다.(본 체크박스는 선택사항이며, 필자는 다음에 같은 컨트랙트를 작동할 때, Approve 트랜잭션을 발생하지 않아도 되서 나중에 수수료 절약 효과가 있기 때문에 체크한 것입니다.)
  • (“Advanced options”의) “Max slippage”는 기본값인 1%로 그대로 진행하겠습니다.

4. “Deposit”을 클릭합니다.

5. 메타마스크에서 “Allow ~” 알림창이 뜹니다. 이 과정이 앞서 계속 말씀드렸던 “Approve 단계”입니다.
이 알림창에서 내가 진행중인 거래가 맞는지 정확히 확인해야합니다.

자세하게 알아보자면, 이더리움 블록체인에서 컨트랙트를 실행하기 전에 해당 컨트랙트를 허용하겠다는 의사표명을 블록체인 위에다 해야, 그 다음 컨트랙트 사용을 할 수 있습니다. 일종에 안전장치로 이렇게 설계되어있다고 보시면 되겠습니다. 이 Approve 단계는 실제로 트랜잭션을 이더리움 블록체인 네트워크 위로 보내야하며, 그 과정에서 “Approve”에 대한 데이터가 담긴 트랜잭션을 발생시키므로 소정의 ETH 수수료가 필요합니다.

처음이니 만큼, 이 트랜잭션 요청에 대해서 더 자세하게 살펴보겠습니다.

  • 메타마스크 알림창의 최상단에 표시된 “1~ 의 2”는 두개의 트랜잭션 중 한개(첫번째)를 의미합니다.
  • 그 아래로 내 지갑의 주소와 어떤 네트워크인지(이더리움 메인넷) 표시됩니다.
  • 큰 글자로 표시된 요청의 제목이 표시되는데, 한번 읽어보겠습니다. “Allow Https://www.curve.fi to spend your DAI?”
    (앞서 메타마스크 지갑과 연결한) 커브 웹사이트에 당신의 DAI를 보내는 것을 허용하겠냐 정도로 읽으면 되겠네요.
  • 그 아래로 보이는 “Edit Permission”(권한 편집)버튼을 클릭해보겠습니다. “Unlimited”와 그 숫자가 무한대 수준(1.157…62e+59)으로 깨진 상태로 표시되어 있네요. 이유는 앞에서 “Infinite approval”을 체크했기 때문입니다. 만약 앞에서 “Infinite approval”을 체크하지 않으면 “Unlimited”와 3000개만 표시됩니다.
    정리하면, “Edit Permission”에서는 해당 컨트랙트에 몇 개까지 자산을 취급을 허용하겠는가에 대한 권한을 정의한다고 볼 수 있습니다.
    이미 웹에서 설정이 된 상태로 지갑으로 요청이 들어오기 때문에 특별히 설정을 바꿀 필요는 없습니다.
  • “Transaction Fee”“Edit”도 살펴보겠습니다. 실제 트랜잭션 진행할 때, 꽤 자주 들어가는 화면입니다.
    웹에서 이미 가스 가격을 정해서 들어오더라도, 시시각각 변하는 가스 가격을 파악해 원하는 시간 내에 컨펌이 발생하도록 가스 가격을 조정해줄 수 있습니다.
    “가스 설정”“Basic” 탭에서는 자체적으로 “느림”, “평균”, “빠름”으로 실시간으로 온체인 데이터를 받아와 클릭가능한 버튼으로 제공해주며, “고급” 탭에서는 직접 가스 가격을 입력할 수 있습니다. (빠른 트랜잭션 컨펌을 위해 High 보다 높게 책정해줄 때, 이 화면에서 직접 가스 가격을 입력합니다.)
  • 마지막으로 “View full transaction details”를 클릭해 펼쳐보면, 이 트랜잭션 요청의 상세정보를 파악할 수 있습니다.
    “Permission”(권한)에서는 “어느 만큼의 자산을 어떤 컨트랙트 주소에 보내기를 허용하는가”를 요청하는 것이며, “Data”에서는 “컨트랙트 상에 정의된 Function(기능)이 무엇이며, 무슨 데이터를 블록체인에 보낼 것인가”가 표시되어 있습니다.

6. 이제 이 첫번째 트랜잭션인 “Approve” 트랜잭션을 진짜로 발생시켜보겠습니다.
“Allow Https://www.curve.fi to spend your DAI?” 알림창에서 “승인”을 클릭합니다.

7. “Allow ~” 메타마스크 창의 “승인” 클릭 즉시, 커브 웹 화면에서는 우측 상단에 “Your transaction has started” 알림이 표시되고, 다음 트랜잭션 “ADD_LIQUIDITY” 메타마스크 창이 뜹니다.

“ADD_LIQUIDITY” 트랜잭션은 영어 뜻 그대로 유동성을 제공하는 트랜잭션입니다.
블록체인 위에 올라갈 데이터가 “Approve” 트랜잭션보다 복잡하기 때문에 다소 많은 수수료가 필요하다고 표시됩니다.
다만, 표시된 수수료는 예상값으로 실제로 발생하는 수수료는 보통 더 적습니다.

“승인” 버튼을 클릭하면, “ADD_LIGUIDITY” 트랜잭션이 발생합니다.

이 트랜잭션 요청에서 표시되는 “자산”은 ETH 수수료가 전부인 것처럼 보이지만, 실제로 트랜잭션이 발생하게되면 커브 컴파운드 풀에 DAI가 전송되게 됩니다.
자세한 내용은 실제로 발생한 트랜잭션 이더스캔에서 살펴보며 확인해보겠습니다.

3.2.1. Deposit 트랜잭션 확인하기

1. 트랜잭션을 발생시키면, 트랜잭션 내역이 메타마스크의 “Activity” 탭의 목록에 쌓이는 것을 확인할 수 있습니다.
(수수료를 낮게 책정하여 컨펌이 되지 않을 때는 이 화면에서 수수료를 상향시키거나 거래를 취소시키도록 이미 발생한 트랜잭션을 업데이트할 수 있습니다.)

2. 트랜잭션을 자세히 살펴보겠습니다.
메타마스크에서 “Activity”의 트랜잭션 항목을 클릭하면, 트랜잭션의 세부사항을 확인할 수 있으며, (아래 두번째 스샷에 빨간 박스로 표시한) 우상향 화살표 버튼을 클릭하면 이더스캔에서 트랜잭션을 확인할 수 있습니다.

3. 블록체인 익스플로러 이더스캔에서 앞서 발생한 두개의 트랜잭션 “Approve DAI spend limit”“Add_liquidity” 트랜잭션을 살펴보겠습니다.

  • “Approve DAI spend limit” 트랜잭션
https://etherscan.io/tx/0xc341b3a8bd30e146b609d28570ebb9b04be2c4a8753d39df12a312067f7a5e2e

자산의 전송은 없고, “Approve” 요청에 대한 데이터 전송에 따른 트랜잭션 수수료만 빠져나가는 트랜잭션입니다.
“Input Data”를 보시면, 어떤 Function(기능)인지 기록된 데이터로, 어떤 트랜잭션인지 확인이 가능합니다.
이더스캔에서는 해당 트랜잭션이 어떤 역할을 수행하는지 “Transaction Action”에 요약하여 표시해줍니다.

  • “Add_liquidity” 트랜잭션
https://etherscan.io/tx/0xe86fe7d33943f6360086d4bf277e7b5e3d752963788645ffe57df5347ba5a0f3

트랜잭션을 확인해보면, 꽤 복잡한데 결과적으로는 지갑에서 3000 DAI가 컨트랙트 주소로 넘어간 뒤 여러번의 이동이 있었던 것을 확인할 수 있습니다.
“Input Data”는 “Approve” 트랜잭션 정도의 길이지만, “Tokens Transferred”의 자산 전송 내역이 많기 때문에 수수료가 많이 나갔습니다.

3.3. Deposit 결과, 커브 “Profit”에서 확인하기

Deposit 트랜잭션이 모두 컨펌되었다면, 커브에서도 입금한 내용을 확인해보겠습니다.
커브 컴파운드 풀의 “Profit” 메뉴에서 입금된 자산을 확인할 수 있습니다.

  • “Show in USD [Virtual profit]”에서는 달러 환산 금액으로 표기되며, “Show in tokens”를 체크하면, 토큰 기준 수량으로 확인할 수 있습니다.
  • “Daily profit(unstable)”에서 하루 예상 수익이 표시되는데, 이 수익은 커브 컴파운드 풀의 “기본적인” 수익률이라고 볼 수 있습니다.
    앞서 커브 “Home”과 “Pool” 둘러볼 때 잠깐 언급했던 거래(Swap) 수수료와 풀 자체 특성(컴파운드라면 대차풀에 이용됨)에 의해 발생하는 예상 수익이 여기에 표시됩니다.
  • 이후 진행할 과정인 CRV 마이닝을 진행하게 되면, “Pending CRV”, “Minted CRV”에도 금액 또는 수량이 표시되게 됩니다.
  • “Total profit”에는 풀의 기본적인 수익과 CRV 마이닝 수익이 합산되어 표시됩니다.
  • “CRV price”는 CRV 토큰의 현재가입니다.

3.4. Deposit 하고 받은 LP 토큰 확인하기

1. 커브 풀에 자산을 "Deposit"하면, 그 증표로 커브 LP(Liquidity Provider: 유동성 공급자) 토큰인 "compound LP token"을 받게됩니다.
유동성 풀에 제공한 내 자산에 대해 소유권을 주장할 수 있는 토큰이라고 보시면 되겠습니다.

2. 이더리움 블록체인 익스플로러 "이더스캔"에서 커브 컴파운드 풀에 DAI를 제공하고 받은 compound LP token인 "Curve.fi cDAI/cUSDC" 잔고가 잡힌 것을 확인할 수 있습니다.

  • 이더스캔 주소 화면
https://etherscan.io/address/0x37642Bb53d537214D07CB25B65Bf4DD4c01516Fd
  • 이더스캔 “Curve.fi cDAI/cUSDC” 토큰 화면 — FILTERED BY TOKEN HOLDER
https://etherscan.io/token/0x845838df265dcd2c412a1dc9e959c7d08537f8a2?a=0x37642Bb53d537214D07CB25B65Bf4DD4c01516Fd

4. Curve DAO에 LP 토큰을 Deposit 해보자

여기까지 오는 길이 상당히 멀었죠. 수고했다는 말씀 전합니다. 다음 과정은 더 어렵습니다만, 이제부터 디파이의 진짜 시작이라 할 수 있으니 잘 따라와주세요.

커브에서 Minting(발행)한 LP 토큰을 Curve DAO(Decentralized autonomous organization: 탈중앙화된 자율조직)에 Deposit 하여, 커브 DAO에 기여하는 대가로 얻게되는 CRV 토큰(Curve DAO Token)을 일드파밍(Yield Farming: 이자농사)해보겠습니다.

앞서 예시로 DAI를 컴파운드 풀에 “Deposit”해서 LP 토큰인 “compound LP token”를 받았으니, 이어서 “compound LP token”를 Curve DAO에 직접 Deposit해보도록 하겠습니다.

4.1. Curve DAO가 뭔가요?

커브는 “Curve 둘러보기”에서 어떤 서비스인가 어느정도 이해하셨을텐데, 또 다른 생소한 용어가 나왔습니다.
“DAO”는 “Decentralized Autonomous Organization”의 약자로 “탈중앙화된 자율조직”으로 해석할 수 있습니다.
즉, “Curve DAO”는 커브의 탈중앙화된 자율조직입니다.

Curve DAO는 CRV(Curve DAO token) 토큰을 중심으로 작동되는데, CRV는 Curve DAO에서 통용되는 거버넌스(governance) 토큰입니다.
CRV는 거버넌스 운영에 있어 필요한 의사결정 사항을 제안하거나 이미 만들어진 제안에 투표하는 등의 권리를 가지는 토큰입니다.

4.2. Curve DAO 간단히 살펴보기

1. Curve 웹사이트의 “DAO” 메뉴를 클릭하면, “Curve DAO” 웹사이트(https://dao.curve.fi/)로 이동합니다.

2. “Curve DAO”는 커브 웹사이트의 서브 도메인으로 주소는 “https://dao.curve.fi" 입니다.
메뉴가 “Curve.fi”보다 더 많기 때문에 더 어려워 보이는데, 실제로도 어렵습니다.

본 콘텐츠로 모든 것을 알아보기에는 스크롤의 한계가 있어서, 메뉴별 간단히 살펴보겠습니다.

  • (가로 세 줄 아이콘) 메뉴 버튼: 커브의 개별 풀을 이동할 수 있습니다.
  • “Home”: Curve DAO 홈 화면입니다. 전반적인 “Gauge” 상태 확인과 CRV 및 LP 토큰 관련 기능을 작동할 수 있습니다.
    Curve DAO에서 “Gauge”(게이지, 직역하면 ‘계측기’)란 아주 간단하게 풀어 쓰자면, “Curve DAO에 커브 LP 토큰을 스테이킹하는 장소” 정도로 볼 수 있겠습니다. 이 게이지의 비중에 따라 CRV 토큰의 인플레이션이 결정됩니다.
    자세한 내용은 커브 가이드 “Understanding Gauges”(https://resources.curve.fi/base-features/understanding-gauges)를 참고하세요.
Home
  • “Curve”: Curve 웹사이트(https://www.curve.fi/)로 이동합니다.
  • “DAO”: 커브 DAO에 올라온 제안서와 투표현황 등을 확인하고, 참여할 수 있습니다.
DAO
  • “Gauge weight vote”: Gauge 비중 투표 관련 화면이 표시됩니다.
Gauge weight vote
  • “Calc”: “Gauge Boost Calculator”가 표시됩니다.
Calc
  • “Locker”: CRV 토큰을 잠궈서(Lock) veCRV로 바꾸고, DAO에서 쓰이는 보팅 파워를 얻을 수 있습니다.
Locker
  • “Minter”: Gauge별 CRV 인플레이션 비율에 해당하는 “Gauge relative weight” 비중을 확인하고, 연결된 지갑에서 Gauge로 Deposit된 LP 토큰의 비중도 확인할 수 있으며, 풀(Pool)별 Gauge에 LP 토큰을 스테이킹/언스테이킹하고, Gauge에서 CRV 토큰을 Claim(회수)를 통해 Mint(발행)할 수 있습니다. (Home 화면과 동일)
Minter
  • “Vesting”: 초기 참여자에게 베스팅으로 지급된 CRV 토큰의 현황을 확인하고, Claim(회수)할 수 있습니다. (초기 참여하지 않았다면, 차트에 가로선만 보입니다.)
Vesting
  • “Stats”: CRV의 APY, 각 Gauge별 상태 및 비중 등의 그래프를 확인할 수 있습니다.
Stats
  • “Contracts”: Curve DAO와 관련된 컨트랙트 주소를 확인할 수 있습니다.(주의: 절대 이 주소로 토큰을 직접 전송하면 안됩니다.)
Contracts
  • “Audits”: 컨트랙트 감사(Audit)에 대한 정보를 확인할 수 있습니다.
Audits
  • “?”: 그 외 정보, 커뮤니티 링크 등을 확인할 수 있습니다.

4.3. Curve DAO 웹사이트에 지갑 연결하기

1. Curve DAO 웹사이트(https://dao.curve.fi)에 접속하면, 지갑을 연결하라는 Curve 웹사이트와 마찬가지로 “Select a Wallet” 팝업이 뜹니다.
Curve DAO 웹사이트는 Curve 웹사이트와 도메인이 다르기 때문에(DAO가 서브도메인) 다른 웹사이트로 취급하며, 지갑을 또 연결해야합니다.
메타마스크를 선택해 지갑을 연결해 보겠습니다.

https://dao.curve.fi

2. 먼저 비밀번호를 입력해 메타마스크 잠금을 풉니다.

3. 메타마스크의 “1 of 2” 알림창에서 연결하려는 인터넷 주소와 메타마스크에 표시된 주소가 맞는지 확인하고, 연결하려는 지갑을 체크하고 “다음” 버튼을 클릭합니다.
“2 of 2”에서는 “이 사이트에 무엇을 허용해줄지” 체크박스의 내용을 확인하고 “연결”을 클릭합니다. (별도로 체크를 할 필요는 없음)

4. 지갑 연결이 완료되면 Curve DAO 웹사이트의 “Home” 화면이 표시됩니다.

4.4. Gauge에 LP 토큰 Deposit 하기

Curve DAO 둘러보기 과정에서 “Gauge”에 대해 간략히 소개드렸는데요.
Gauge는 커브 LP 토큰이 담기는 게이지, 가상의 공간 정도로 볼 수 있습니다.

이 Gauge는 각 풀(Pool)별로 있으며, “Gauge relative weight”의 비중에 따라 CRV 인플레이션이 정해지게 됩니다.
더 자세한 내용은 본 콘텐츠에서 다루기엔 너무 어려울 수 있어 이정도만 설명드리겠습니다.

앞의 과정에서 DAI를 Curve의 Compound 풀(Pool)에 입금해서 LP(Liquidity Provider: 유동성 공급자) 토큰인 “compound LP token”를 받았었는데요.
이제 “compound LP token”을 Curve DAO의 Compound Gauge에 “Deposit”하는 과정을 진행해보겠습니다.

LP 토큰의 “Deposit”이 완료되면, 거버넌스 토큰인 CRV(Curve DAO token)가 쌓이며, 이를 Claim(회수)함으로써 Mint(발행)할 수 있게 됩니다.
차근차근 진행해보겠습니다.

1. Curve DAO의 “Minter” 메뉴로 이동합니다. (“Home”과 화면구성은 같지만, 정확한 기능의 메뉴에서 작업을 수행하겠습니다.)
Minter를 직역하면 ‘발행자’인데, Gauge에 LP 토큰을 입금해 Curve의 거버넌스 토큰인 CRV를 발행하는 기능을 이 메뉴에서 수행할 수 있습니다.

https://dao.curve.fi/minter/gauges

2. 스크롤을 조금 내려서, “compound Liquidity gauge”까지 내려옵니다.
앞의 과정에서 컴파운드 LP 토큰을 만들었기 때문에 컴파운드 LP 토큰의 Gauge에서 작업을 이어서 진행해야 합니다.

“compound Liquidity gauge” 간단히 살펴보겠습니다.

  • “CRV APY”: Gauge에 LP 토큰을 입금해 받게되는 CRV 토큰의 현재 시세 기준 예상 년수익률입니다.
  • “Gauge relative weight”: CRV 전체 인플레이션 중에 이 compound Liquidity gauge가 차지하는 비중입니다.
  • “Minted CRV from this gauge”: 이 Gauge에서 Mint(발행)된 CRV 수량입니다.(접속한 지갑 기준)
  • “Boost”: 부스트 배수로 Curve 웹사이트의 “Use CRV”에서 관련 내용을 확인할 수 있습니다. 기본값은 1입니다.
  • “Balance”: 해당 Gauge에 아직 “Deposit”되지 않은 LP 토큰 잔고가 잡히는 것을 확인하실 수 있습니다.
    밑줄친 잔고를 클릭하면, 아래 “Amount” 칸에 정확한 전체 잔고가 입력됩니다.
  • “Amount”: “Deposit”할 잔고 수량을 입력하는 칸으로, 기본값으로 전체 수량이 입력되어 있습니다.
    입력칸 아래 퍼센트(%) 슬라이더를 조절하거나 직접 입력해 수량을 변경할 수 있습니다.
  • “Infinite approval”: 이 트랜잭션도 앞서 풀(Pool) Deposit과 마찬가지로 “Approve” 트랜잭션이 있어야 합니다.
    이 항목을 체크하고 “Deposit”하면, 이후 동일한 Gauge에 한해 “Approve” 트랜잭션을 추가로 할 필요가 없습니다.

3. 필자는 이제 여기서 compound LP token 전체를 compound Liquidity gauge에 “Deposit”하려고 합니다.
“Amount”에 자동으로 입력된 숫자가 정확한지 두번 세번 확인해보고 “Deposit”을 진행해보겠습니다.
블록체인 위의 모든 거래는 불가역적이라 실수를 번복할 수 없고, 잘못된 트랜잭션조차 수수료가 나가기 때문에 숫자 입력은 특히 주의를 기울여 작업해야합니다.

잠깐! 숫자가 너무 정확하게 끊어지면 의심을 해봐야합니다.
필자는 “Balance”의 밑줄친 수량을 직접 클릭해 정확한 Amount를 입력했습니다.
잔고에 없는 숫자가 입력된 상태로 트랜잭션을 발생시키면 에러나게되며, 이더리움 수수료는 수수료대로 나갈 수 있습니다.

4. “Gas price”는 “Instance”를 체크해 진행하겠습니다. 가스 가격은 메타마스크 지갑에서 트랜잭션 발생 직전에도 수정할 수 있습니다.

*가스 가격은 이더리움 네트워크 사정에 따라 수시로 달라질 수 있으니, 표시된 숫자는 예시로 보시기 바랍니다.

5. “Deposit” 트랜잭션을 발생시키기 직전, 모든게 완벽한지 확인합니다.
적당한 가스 가격인지, 정확한 수량인지, Infinite approval은 체크할건지, CRV APY가 적당한지까지 최종적으로 판단하고 “Deposit”을 진행하면 됩니다.

*Infinite approval 체크는 선택사항이며 필수가 아닙니다.

6. “Deposit”을 클릭하는 즉시, 예상 전송 수수료와 메타마스크 알림창이 뜹니다. 앞서 진행했던 풀(Pool) Deposit과 크게 다르지 않습니다.
메타마스크 알림창에 표시된 내용을 확인하고, 수수료를 정하고, “Allow~” 트랜잭션(“Approve” 트랜잭션)을 “승인”합니다.

7. 이어서 실제 토큰이 이동하는 “DEPOSIT” 트랜잭션에 대한 메타마스크 알림창이 뜹니다.
표시된 수수료를 확인하고, 변경이 필요하다면 편집하고, “승인”을 클릭합니다.

만약 트랜잭션이 너무 오래 “펜딩”(Pending, 지연) 된다면, “속도 향상”을 할수도 있습니다.
“속도 향상”을 클릭하면 수수료를 변경해 트랜잭션을 덮어쓸 수 있습니다.

8. “Approve”와 “Deposit” 두 트랜잭션이 모두 컨펌났습니다.
메타마스크의 “Activity”에서 완료된 트랜잭션을 확인할 수 있습니다.

9. Curve DAO에는 어떤 변화가 생기는지 살펴보겠습니다.

“Minter” 또는 “Home” 메뉴에 “Gauge allocation”이라는 새로운 그래프가 하나 등장합니다.
allocation을 직역하면 할당량 또는 배당량인데요. 연결된 지갑에 할당된 Gauge의 비율이라고 보시면 되겠습니다.
현재는 하나의 Gauge에만 LP 토큰이 입금되어 있기 때문에 원 하나만 덩그러니 있는데, 더 다양한 Gauge에 LP토큰을 예치하게되면 그래프에 다른 조각들이 생기게 됩니다.

또한, “compound Liquidity gauge”에는 좌우로 칼럼이 나뉘고, Deposit된 LP 토큰의 수량과 Withdraw(출금)할 수 있는 Amount(수량)칸과 “Withdraw” 버튼이 생겨있습니다.
맨 아래에 드디어 “Claim 0.01 CRV” 버튼이 생겼네요. 드디어 이 Gauge에 Claim(회수) 가능한 CRV가 쌓였습니다!

4.4.1. Curve DAO Deposit 트랜잭션 살펴보기

블록체인 위에서는 어떻게 기록이 남았나 지갑과 트랜잭션을 이더스캔에서 살펴보겠습니다.

  • 지갑 살펴보기

1개로 시작한 ETH는 이제 약 0.89개입니다. 전체 거래에서 ETH의 전송은 없었고, 트랜잭션 수수료로 사용되었습니다.
“Token”이 1종류 있는데 가치가 0으로 표시됩니다. 기존 LP 토큰은 소수점 아주 적은 숫자만큼 남았습니다. (0.000000000000330678개)
“Curve.fi: cCrv”로 시작하는 트랜잭션 2개가 신규 생성되었습니다. 하나가 “Approve”, 다른 하나가 “Deposit” 입니다.

  • “Approve” 트랜잭션
https://etherscan.io/tx/0x0ac756d73d53bed8d8826fb2702c32929dcdd3f1207d38b063a8f433cde266fb

전송된 토큰은 없고, “Function: approve”에 대한 데이터와 소량의 ETH 수수료가 사용되었습니다.
“Transaction Action”을 보면, 이 트랜잭션을 통해 Curve DAO의 compound Liquidity gauge에서 cDAI+cUSD에 해당하는 compound LP token의 “Trade”가 허용되었음을 알 수 있습니다.

  • “Deposit” 트랜잭션
https://etherscan.io/tx/0x2ba55572147c7f08c47c61cc823b2ae33ff75c538f56f1a7e2d9ad4117a75c0e

“Tokens Transferred”를 보면, compound LP token이 compound Liquidity gauge 주소로 이동한 것을 확인할 수 있습니다.
거래 수수료는 앞서 발생한 “Approve”보다 비싼 약 0.01 ETH가 소모되었습니다.

4.5. 기다림의 시간

여기까지 따라오느라 수고많으셨습니다. 이제 기다림의 시간이 남아있습니다.

기다리면 Curve DAO에 입금된 LP 토큰에 상응하는 CRV 토큰이 Claim 가능한 상태로 누적됩니다.
사용자는 “Claim”(회수) 버튼을 클릭해 CRV를 Mint(발행)해 받아갈 수 있습니다.

어느 시점에 어느 주기로 Claim 할지, 회수한 CRV를 홀딩할지 매도할지 모든게 사용자가 의사결정해야할 부분입니다.

5. 정리: Gauge Withdraw, CRV Claim, Pool Withdraw

정리 순서는 앞에서 벌려둔 것의 역순이라고 보시면 됩니다.

(1) Curve DAO의 Liquidity Gauge에 Deposit(입금)해둔 LP 토큰을 “Withdraw”하고, (2) Liquidity Gauge에 생긴 CRV 토큰을 “Claim”하고, (3) 지갑으로 돌아온 LP 토큰을 Curve Pool에서 “Withdraw” 해서 원래 입금했던 토큰으로 빼오는 과정을 진행하겠습니다.

필자는 앞에서 말씀드린 “기다림의 시간”을 본 게시물의 빠른 작성을 위해 아주 짧게 정해, 정리를 진행하는 점 참고부탁드립니다.

5.1. Gauge Withdraw

Liquidity Gauge에서 LP 토큰을 출금해보겠습니다.

*참고로 LP 토큰의 Gauge Withdraw(출금)을 CRV Claim(회수)보다 먼저 진행하는 이유는, CRV 자투리가 생기지 않게하기 위함입니다.
매 블록마다 Gauge에 Deposit(입금)된 LP 토큰을 기준으로 CRV 보상이 발생하므로, CRV 자투리 없이 완전히 정리하기 위해서는 Gauge의 LP를 먼저 출금해야합니다.
(만약, LP 토큰은 그대로 Gauge에 두고, 발생한 CRV만 수시로 정리하고 싶다면 Claim만 진행하면 됩니다.)

1. Curve DAO“Minter”(https://dao.curve.fi/minter/gauges) Gauge에 입금한 LP 토큰을 “Withdraw” 합니다.
LP 토큰 입금과 마찬가지로 수량을 정확히 입력하고(“Balance:”에 밑줄쳐진 잔고 클릭), “Withdraw” 버튼을 클릭해 출금하세요.

https://dao.curve.fi/minter/gauges

2. “WITHDRAW” 트랜잭션이 메타마스크 알림창으로 뜹니다. 수수료 등을 확인하고 “승인”을 진행합니다.

3. 트랜잭션이 완료되면, 지갑으로 LP 토큰이 돌아온 것을 확인할 수 있습니다.

  • “WITHDRAW” 트랜잭션
https://etherscan.io/tx/0x8360a19fd2d758ea9317e52f3a55eba82d58a877f937531bbb26c58b2d14f46f

“Token Transferred”를 확인해보면 “Curve.fi: cCrv Gauge”에서 지갑주소로 LP 토큰이 전송된 것을 확인할 수 있습니다.

5.2. CRV Claim

Gauge에서 LP 토큰을 빼왔으니, 더이상 CRV 토큰이 생기지 않습니다.
이제 CRV 토큰을 Claim(회수)해보겠습니다.

1. Curve DAO “Minter”(https://dao.curve.fi/minter/gauges) 페이지의 Gauge에서 CRV를 회수해 보겠습니다.
“Gauge” 섹션의 하단에 “Claim 00 CRV” 버튼을 클릭하면 회수할 수 있습니다.

https://dao.curve.fi/minter/gauges

2. “MINT” 트랜잭션이 메타마스크 알림창으로 뜹니다. 수수료 등을 확인하고 “승인”을 진행합니다.

3. 트랜잭션 승인 완료 후, 커브 DAO Minter 화면을 새로고침 해보면 “Minted CRV from this gauge”에 CRV가 Mint(발행)된 수량이 표시된 것을 확인할 수 있습니다.

또한, 지갑으로 CRV 토큰이 입금된 것을 확인할 수 있습니다.

  • “MINT” 트랜잭션
https://etherscan.io/tx/0xeac0f26aa542464748890bc9f56d2a9075b207a76a06dc6508a55ce0be2e8fef

“Interacted With(To)”를 확인해보면 “Curve.fi: Token Minter” 계약이 실행되었으며, “Token Transferred”를 보면, 0x0000…주소에서 CRV 토큰이 지갑으로 전송된 것을 확인할 수 있습니다.
0x0000…주소(https://etherscan.io/address/0x0000000000000000000000000000000000000000)는 주인이 없는 토큰 발행용(또는 소각용) 주소라고 보시면 되겠습니다.

5.3. Pool Withdraw

이제 Curve DAO에서 할 일은 다 끝났습니다.
나머지는 Curve.fi의 개별 풀(Pool)에서 LP 토큰을 제거(Remove)하여 처음에 Deposit했던 토큰을 빼오는 과정이 남았습니다.
이 과정을 커브에서는 Pool에서의 “Withdraw”라고 합니다. (다른 디파이 서비스에서는 Pool에서의 LP 토큰 “Remove”라고도 부릅니다.)

1. 이제 Curve 웹사이트의 커브 풀(Pool)의 “Withdraw”(https://www.curve.fi/compound/withdraw)에서 LP 토큰으로 묶여있는 원래 토큰을 빼오겠습니다.

https://www.curve.fi/compound/withdraw
  • “Share of liquidity”에서 보유 LP 토큰의 몇 % 비중으로 출금할지 정할 수 있습니다.
  • “Withdraw % in”에서 리저브(Reserves, 해당 풀의 보유잔고)의 비중 그대로 출금하거나(Combination of all coins: 기본값), 원하는 토큰 종류로 선택할 수 있습니다.
    본인이 거래하기 수월한 토큰 한 종류로 출금하는게 유리하다면, 직접 선택해야 합니다.
  • “Withdraw” 버튼을 클릭하면, LP 토큰을 보내주고, 풀(Pool) 안에 든 토큰을 꺼내올 수 있습니다.
    (Curve DAO에서 진행가능한 “Claim”, “Unstake from gauge” 트랜잭션도 Curve의 “Withdraw” 메뉴에서 진행할 수 있습니다.)

2. 리저브의 비중대로 출금할수도 있겠지만, 사용자의 필요에 맞게 토큰 한 종류를 선택하여 출금할 수 있습니다.
본 콘텐츠에서는 최초에 입금을 진행한 토큰인 DAI이기 때문에, 아래 스크린샷 처럼 “Withdraw % in”에서 DAI를 선택해 출금을 진행해 보겠습니다.
(그 외 “Max slippage”와 “Infinite approval”을 시장상황이나 앞으로 투자 계획 등에 따라 기본 설정을 변경했습니다.)

3. “Withdraw”를 클릭하면, 총 2개의 트랜잭션이 순서대로 발생합니다.
첫번째는 LP 토큰에 대한 “Approve” 트랜잭션이며, 두번째는 “REMOVE_LIQUIDITY_ONE_COIN”이라는 트랜잭션입니다.

4. 두 트랜잭션을 순서대로 승인하면, 커브 풀에서 DAI가 출금되어 지갑으로 돌아옵니다.
다만, 처음 입금한 수량과는 차이가 발생했는데, 이는 DAI 외에 다른 자산이 섞인 풀에서 DAI로만 회수하는 과정에서 slippage 영향을 받아서입니다.

  • “Approve” 트랜잭션
https://etherscan.io/tx/0x5f795c3835c425af4b467033d67cb6e4b0ca958722fb81b2f944480b1e3fcc11

이제 몇 번의 “Approve” 트랜잭션을 봤으니, 조금은 익숙해졌을 것입니다.
이 지갑에 있는 LP 토큰인 “cDAI+cUSDC”에 대한 컨트랙트 거래를 승인한다는 내용의 트랜잭션입니다.

  • “REMOVE_LIQUIDITY_ONE_COIN” 트랜잭션
https://etherscan.io/tx/0x1e9b07cd04780f2655bf9ba71dd9ab998dde984cc49d66584c9aa809d3400be6

트랜잭션이 꽤 복잡해 보이고, 수수료도 꽤 높은 편입니다.
“Transaction Action”을 살펴보면, 컴파운드에 공급한 DAI와 USDC로부터 발생한 컴파운드 거버넌스 토큰 COMP를 각각 Collected 했고, 컴파운드에서 DAI를 출금했습니다.
“Tokens Transferred”에는 무려 9번의 전송이 포함되는데, 이 내용이 “Transaction Action”의 전송을 풀어놓은 내역이라 이해하시면 됩니다.

결과적으로 LP 토큰을 커브의 컴파운드 풀로 돌려보내고, 커브 컴파운드 풀에서는 돌려받은 LP 토큰 만큼에 해당하는 잔고가 컴파운드를 거쳐 최종적으로 사용자가 요청한 토큰인 DAI로 출금되었습니다.

5.4. 최종 잔고 비교

이렇게 실제 전송을 통해 CRV 토큰의 Claim과 LP 토큰의 출금까지 모두 알아봤습니다.
이제 최종 잔고를 비교해보며 디파이 탐험을 마무리짓겠습니다.

  • ETH 수수료: 약 0.1734 ETH 지출 (약 75,000원) / 총 8회 트랜잭션, 1회당 평균 약 0.02 ETH (약 8,600원) (ETH 시세: 작성시점 43만원 기준)
  • DAI는 LP에서 출금되면서 슬리피지(slippage)로 인해 일부 원금 손실 — 약 0.047%
  • CRV 발행(Mint)량 19.137개로 약 11,000원 — Curve DAO Gauge에 LP 예치한 기간 7일에 대해 APY로 환산하면 약 16%로 진입시 CRV APY와 유사한 값이 나왔습니다.

정리하자면, 이번 디파이 탐험을 통해 짧은 기간(7일) 예치하다보니 고정비용으로 볼 수 있는 ETH 트랜잭션 수수료가 CRV 발행으로 얻은 수익을 상회하여 일부 손실이 났습니다. 다만, ETH 트랜잭션 수수료는 기간이 늘어남에 따라 증가하는 값이 아니며, CRV 발행량은 시간이 지남에 따라 증가하게되므로 이 부분을 참고해주시면 되겠습니다.

*CRV의 시세와 발행량에 의한 Gauge의 CRV APY 또한 계속 변동하기 때문에 확정적으로 수익이 날 것이라고 말씀드리기 어렵습니다.

6. 마치며

디파이 탐험을 함께해주신 여러분의 블록체인에 대한 관심과 열정에 박수보냅니다.
블록체인을 이렇게 글과 그림으로 살펴보는 것과 실제로 해보는 것은 엄청난 차이가 있습니다. 분명히 헤맬 것이고, 어렵고, 어색할 것입니다.
하지만, 도전과 경험을 통해 블록체인과 디파이에 대해 알아가다보면, 어느새 블록체인 생태계의 일원이 되실 수 있습니다.

본 콘텐츠가 어떠셨는지요? 어떻게 와닿을지 무척 궁금합니다.
코인원의 디파이 탐험 콘텐츠는 시리즈로 준비했으니, 재밌게 보셨다면 다음편도 많은 기대와 관심 부탁드립니다.

감사합니다.

코인원 크립토 뉴스 바로가기: https://coinone.co.kr/talk/

*코인원 크립토 뉴스(https://coinone.co.kr/talk/)에서 코인원의 업계 뉴스부터 전문가의 트레이딩 분석, 디파이 관련 리서치까지 다양하게 만나보실 수 있습니다.

DeFi 탐험 유의사항

  • 본 게시물은 DeFi의 다양한 서비스를 소개하는 취지에서 작성되었습니다.
  • 본 게시물에 수록된 내용은 자료 작성자가 신뢰할 수 있는 자료 및 정보로부터 얻은 것이나 오차가 발생할 수 있으며, 당사는 어떠한 경우에도 정확성이나 완벽성을 보장하지 않습니다.
  • 본 게시물에 나타난 모든 의견은 자료 작성자의 개인적인 견해로, 외부의 부당한 압력이나 간섭 없이 작성되었습니다.
  • 본 게시물은 투자를 유도하거나 권장할 목적이 아닙니다.
  • 본 게시물의 내용은 원본 손실의 가능성이 존재하며, 게시물에 표시된 수익률은 변동성이 있으며 당사는 이를 보장하지 않습니다.
  • 본 게시물의 이미지에 표시된 스크린샷 화면은 실제 웹사이트 화면과 언제든지 일부 또는 전체가 변경될 수 있으며 당사는 이를 보장하지 않습니다.
  • 본 게시물에 따라 투자를 진행하더라도 사용자의 사용 미숙, 실수, 복구키 유실 등 여러가지 이유로 자금의 원본을 전부 손실할 가능성이 있습니다.
  • 본 게시물은 어떠한 경우에도 고객의 투자 결과에 대한 법적 책임 소재의 증빙 자료로 사용될 수 없습니다.
  • 본 게시물의 저작권은 코인원에 있고, 어떠한 경우에도 코인원의 허락없이 복제, 대여, 재배포될 수 없습니다.
  • 당사는 본 게시물의 해당 DeFi 서비스와 아무 관련이 없습니다.
  • 당사는 본 게시물의 내용에 의거하여 행해진 일체의 투자 행위에 대하여 어떠한 책임도 지지 않습니다.

--

--