[Compound series] 1. 컴파운드 톺아보기

이병헌
Decipher Media |디사이퍼 미디어
13 min readMay 30, 2021

서울대학교 블록체인 학회 디사이퍼(Decipher) DeFi 리스크 분석팀 DeFinite에서 Compound 프로토콜에 대한 글을 시리즈로 연재합니다.

Compound: The Money Market Protocol

[Compound series]

  1. 컴파운드 톺아보기
  2. 컴파운드 로직 분석 (예금, 출금)
  3. 컴파운드 로직 분석 (대출, 상환)
  4. 컴파운드 로직 분석 (청산)
  5. 컴파운드 이자율 계산 분석
  6. 컴파운드의 미래 — Compound Gateway

Authors

이병헌 of Decipher DeFi Research Team DeFinite
Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)
Reviewed by: 정현

시리즈를 시작하며

지금 마시멜로 하나 먹을래? 아니면 기다렸다가 두 개 먹을래?

1972년 스탠포드 대학의 심리학 교수, 월터 미셸은 다음과 같은 마시멜로 실험을 진행했습니다. 4세 및 5세 아이들을 한 명씩 방으로 데려가 마시멜로가 놓여 있는 접시를 보여주며 “잠깐(15분) 나갔다가 돌아올 텐데, 그때까지 이걸 먹지 않고 기다리면 한 개를 더 줄게”라고 말한 뒤, 방을 나가 아이의 행동을 관찰합니다. 어떤 아이들은 연구원이 방을 나가자마자 마시멜로를 먹었고, 또 어떤 아이들은 몇 분 기다리다 참지 못하고 마시멜로를 먹었으며, 나머지 아이들은 15분을 기다려 마시멜로를 하나 더 받았습니다. 이후 실험에 참여했던 아이들의 성취도를 추적한 결과, 15분을 기다린 아이는 청소년기에 학업 성적과 SAT 성적이 우수했고 좌절과 스트레스를 견디는 힘도 강했다는 후속 결과가 발표되었습니다.

이 실험이 의미하는 바는 간단합니다. 지금 눈 앞에 있는 마시멜로를 먹는 사람보다 기다렸다가 두 개를 먹는 사람이 욕망을 통제하는 능력이 강하고 목표 지향적인 사람이며, 미래의 이익을 위해 당장의 욕망을 통제할 수 있어야 한다는 것입니다.

하지만 이 이야기를 조금 다르게 생각해본다면 어떨까요?

출처: https://medium.com/magnimetrics/time-value-of-money-explained-3d4a22b239b3

만약 15분을 기다린 아이에게 마시멜로 2개가 아닌 1개 반을 준다면 어떨까요? 추가로 얻게될 마시멜로 반쪽에 대해 어떤 아이들은 15분을 기다릴 가치가 충분하다고 생각할 것이고, 또 다른 아이들은 지금 1개를 먹는 것이 더 가치 있다고 생각할 것입니다. 그럼 반쪽보다 더 작은 양을 준다면 어떨까요? 15분 뒤에 얻게되는 보상이 적어질수록 당장 1개를 먹는 것을 선택하는 아이들이 많아질 것입니다. 위의 실험에서는 아이들의 성취도에 따라 취하는 행동이 다르다고 보았지만 어쩌면 당장 1개를 먹는 것을 택한 아이들은 기다림의 가치가 마시멜로 2개보다 높아야한다고 생각한것이 아닐까요?

위의 예시에서 알 수 있듯이, 개인의 의사결정은 투입 대비 산출이 크거나 같은 경우라고 판단될 때 이루어집니다. 하지만 투입과 산출의 시간이 다르다면 어떻게 할까요? 일반적으로는 미래의 효용을 임의의 할인율로 할인하여 현재의 효용과 비교하게 됩니다. 즉 일반적으로는 미래의 가치를 현재보다 낮게 생각하게 됩니다.

이와 같은 논리를 화폐에 적용하여 ‘Time Value of Money (TVM, 화폐의 시간 가치)’로 생각해 볼 수 있습니다. 화폐의 시간 가치는 현재 일정 금액의 가치는 미래의 같은 금액보다 더 높은 가치가 있음을 의미하는 것으로, 금융 시장에서 가장 중요한 개념 중 하나입니다.

시장에서는 ‘금리'를 이용하여 TVM을 계산합니다. 그리고 금융 기관에서는 금리를 통해 자산을 얼마에 대출해줄 것인지 결정하고, 개인은 이를 개인의 할인율과 비교해 예금 또는 대출을 결정합니다. 금융 기관은 현재 잉여자산을 가진 사람들과, 당장 잉여자산은 없지만 차입을 통해 이익을 창출하고자 하는 사람들을 연결하여 거래 당사자 모두에게 이익이 될 수 있는 비-제로섬(Non-Zero Sum) 거래를 가능하게 해줍니다.

암호화폐의 거래가 활발해지면서 DeFi에서도 암호화폐 대출 서비스의 필요성이 대두되었으며, 이는 Compound finance 서비스의 등장으로 활성화되었습니다. Compound는 2020년 DeFi summer를 이끌며 블록체인의 실질적인 유즈케이스를 경험할 수 있도록 했으며, 현재 많은 대출 프로토콜들이 Compound의 모델을 착안하여 새로운 서비스를 만들고 있습니다.

이번 시리즈에서는 Compound의 대출 서비스를 구체적으로 살펴보며, 블록체인에서 구현된 암호화폐 대출 서비스의 동작 방식을 하이 레벨 로직부터 로우 레벨의 코드까지 분석합니다.

암호화폐 담보 대출 서비스

금융 시장의 대출 서비스는 금융 시장에서 자금의 공급자와 수요자를 연결시켜주는 중개의 기능을 수행함으로써 금융 시장의 효율성을 증대시키는 중요한 역할을 담당합니다. 전통적인 금융 기관 중 은행의 대출 서비스는 크게 신용대출과 담보대출 두 가지 종류로 분류할 수 있습니다. 신용대출은 개인의 신용과 지불능력을 전제로 대출을 제공하며, 담보대출은 개인이 지정한 부동산 등의 자산을 담보로 잡아 대출을 제공합니다.

블록체인에서 암호화폐로 운용되는 분산화된 금융 시장은 전통 금융 시장의 대출 서비스와 같이 화폐의 시간 가치를 기반으로 한 고도화된 대출 서비스를 구현하는데 많은 어려움이 있었습니다.

먼저 첫 번째 이유는 블록체인의 익명화 시스템으로 인해 신용 대출을 구현하기 어렵다는 것입니다. 블록체인은 분산화된 상태에서 암호화폐의 가치를 전달하는 것을 구현하기 위해 KYC(Know-Your-Customer) 방식이 아닌 공개 키 암호화 방식을 사용합니다. 따라서 사용자의 월렛 주소만으로 사용자의 신원을 알 수 없기 때문에 신용 평가가 불가능하며, 그에 따라 채무 불이행 위험을 질 수 밖에 없습니다.

두 번째 이유는 담보를 통해 대출해줄 암호화폐의 가치를 산출하기 어렵다는 것입니다. 특히, 암호화폐는 전통적인 금융 시장의 자산보다 변동성이 크기 때문에 현재의 가치를 기준으로 미래의 가치를 결정하는 것이 불가능합니다. 이는 전통적인 대출 서비스를 모방한 대출 상품을 그대로 구현하기 어렵게 만듭니다.

이런 어려움에도 불구하고, 암호화폐 대출에 대한 니즈가 명확하기 때문에 중앙화 거래소 (CEX)의 증거금 대출 시스템이나 P2P로 직접 암호화폐를 대출해주는 프로토콜은 존재했습니다. 하지만 중앙화 거래소는 신뢰의 문제가, P2P 대출 프로토콜은 유동성의 문제가 명확해 일정량 이상의 자금 이동이 일어나기 힘들었습니다.

Compound는 이러한 암호화폐와 블록체인 시스템의 특성과 배경을 고려하여 프로토콜 레이어 자체에 암호화폐를 담보로 맡겨 다른 암호화폐를 대출하는 방식을 선택했습니다.

Compound 대출 서비스는 사용자가 입금한 암호화폐를 담보로 다른 암호화폐를 대출할 수 있도록 하는 방식을 사용하여 채무 불이행을 막는 과담보 대출(Overcollateralization, 담보 자산의 가치보다 대출 자산의 가치를 적게하여 대출) 서비스입니다. 과담보 대출에서 중요한 메커니즘은 이자율 계산과 청산(Liquidation, 담보 몰수)입니다.

중앙 은행의 대출 이자율은 시장의 금리를 고려해서 결정됩니다. 금리를 결정해주는 중앙 기관이 없는 암호화폐의 경우 대출 이자율을 각 프로토콜이 결정하게 됩니다. Compound는 이더리움 체인에서 프로토콜 내의 자산의 수요와 공급에 기반하여 파생된 이자율로 대출과 예금을 구축하였고 이를 money market 프로토콜이라고 합니다.

청산은 중앙 은행에서 사용자가 맡긴 담보의 가치가 대출한 자산의 가치보다 떨어질 때 담보로 맡긴 부동산 등을 몰수하여 경매 등을 통해 처분하고 대출금을 강제로 상환하는 절차입니다. Compound는 분산화된 과담보 대출 서비스이기 때문에 중앙 기관이 담보와 대출금을 관리하지 않습니다. 즉, 대출금 상환을 위해 Compound가 직접 대출자의 담보를 청산하지 않습니다. 이 때문에 Compound는 제 3의 참여자를 통해 청산을 진행합니다.

Compound의 이자율, 대출, 청산에 대한 자세한 내용은 이후 게시글에서 다룰 예정이며, 본 아티클에서는 Compound의 하이레벨 로직인 동작 원리에 대해서만 간단하게 살펴봅니다.

DeFi summer를 이끈 Compound

Compound는 2018년 9월에 런칭되었지만, 2018년부터 2020년까지 진행된 속칭 Crypto Winter(암호화폐의 암흑기)로 인해 Compound를 포함한 많은 DApp들의 성장이 어려웠습니다.

하지만 2020년 6월 Compound에서 사용자(대출자와 예금자)에게 분배한 거버넌스 토큰인 COMP가 거래소에서 가격이 형성되고 상승하자 사람들은 더 많은 COMP 토큰을 받기 위해 서비스를 보다 활발하게 이용하게 되며 바야흐로 DeFi summer(디파이 부흥기)가 시작되었습니다.

https://medium.com/bifrost-blog-kor/defi-성장의-중심-이자농사-2-54d318614351 written by reviewer 정현

현재 Compound는 이더리움의 DeFi 서비스 중 2번째로 높은 TVL을 차지하고 있으며, 많은 암호화폐 대출 서비스들이 Compound의 모델을 착안하여 만들어 대출 서비스의 확장을 이루고 있습니다.

(Source: Defipulse, 5/24일기준)

Compound 동작 원리

이제 Compound의 과담보 대출 방식의 동작 원리를 살펴보도록 하겠습니다. Compound에서 주로 기억해야할 두 가지 규칙이 있으며, 이는 다음과 같습니다.

1. 차입자는 자신이 예금한 자산을 담보로 다른 암호화폐를 차입할 수 있습니다.

Compound는 과담보 대출이기 때문에 차입자는 암호화폐 대출을 위해 자신이 가진 암호화폐를 담보로서 입금해야합니다. 예를 들어, 대출자가 ETH를 보유하고 있는데 DAI를 대출받고 싶다면, 먼저 Compound에 ETH를 입금한 후 DAI를 빌릴 수 있습니다.

2. Compound는 사용자들이 예치한 자산을 하나의 단일 자산 풀로 합쳐 차입자에게 자산을 공급합니다.

차입자가 DAI를 차입하기 위해서는 DAI를 가진 사용자가 Compound에 DAI를 공급해야합니다. Compound는 대출할 수 있는 자산의 유동성을 충분히 확보하기 위해, 공급자와 차입자를 직접 연결하는 P2P 방식이 아닌, DAI의 보유자가 예치한 DAI를 모두 하나의 단일 풀에 합쳐 대출자에게 공급하는 방식을 선택했습니다.

이제 사용자가 위와 같은 규칙을 가진 Compound를 통해 자산을 예금하고 이를 담보로 대출하는 방법을 알아보겠습니다.

아래 예시는 Compound의 Kovan 테스트넷에서 실행하였으며, 이더리움의 메인넷의 암호화폐 가격과는 상이할 수 있습니다.

자산 예금

1. 사용자는 자신이 보유하고 있는 암호화폐를 원하는 수량 만큼 예금할 수 있습니다. 이 예시에서는 약 2 ETH를 예금하도록 하겠습니다.

2. 사용자는 Compound에 암호화폐를 예금하면, 그 자산의 소유권을 증명할 수 있는 ERC20 토큰인 cToken을 Compound에게 받아 월렛에서 확인할 수 있게 됩니다. 아래 사진을 통해 사용자가 2 ETH의 입금으로 82.513 cETH를 받은 것을 알 수 있습니다.

각 암호화폐와 cToken의 교환 비율은 모두 상이하며 시장 상황에 의해 변경됩니다.

cToken과 교환 비율의 자세한 내용은 이후 게시글인 컴파운드 로직 분석에서 다룰 예정입니다.

자산 대출

1. 사용자는 2 ETH 예금으로 약 $765.04의 가치를 Compound에 예금했습니다. 이제 사용자는 해당 금액에 상응하는 가치 만큼 다른 암호화폐를 대출받을 수 있습니다. 차입 한도는 예금한 암호화폐의 담보 비율로 결정됩니다. ETH의 담보 비율은 75% 이므로, 사용자는 최대 $573.78 가치 만큼의 다른 암호화폐를 대출받을 수 있습니다.

Compound는 차입 한도(Borrow Limit)를 최대 차입 가능한 금액의 80%로 권장하고 있습니다. 이는 대출금 혹은 담보금의 가격 변화로 인한 청산의 위험을 대비하기 위해서입니다. 본 예시에서는 청산의 위험을 고려하지 않고 최대 차입가능 금액을 모두 대출받도록 하겠습니다.

청산에 대한 자세한 내용은 이후 게시글 컴파운드 청산 분석에서 다룰 예정입니다.

2. 사용자가 선택한 금액의 대출이 완료되면 Compound는 대시보드를 통해 예금, 대출금, 그리고 Net APY 수치를 알려줍니다.

claim할 수 있는 COMP, 현재는 0

Net APY는 예대마진을 통해 얻는 연 수익률과 예금과 대출을 진행할 경우 추가적으로 받는 COMP 토큰의 수익률을 합산한 값입니다.

Compound의 이자율에 대한 자세한 이야기는 이후 게시글인 컴파운드 이자율 계산 분석에서 다룰 예정입니다.

대출금 상환

1. 사용자는 자신이 원하는 금액만큼 대출금을 상환할 수 있습니다. 상환해야하는 금액에는 대출에 대한 이자가 포함되어 있습니다. 대출 이자는 블록 단위로 증가하며 이자율은 Compound 내의 예금과 대출 상황에 따라 변동될 수 있습니다.

Compound의 이자율에 대한 자세한 이야기는 이후 게시글인 컴파운드 이자율 계산 분석에서 다룰 예정입니다.

자금 출금

1. 사용자는 자신이 예금한 금액을 출금할 수 있습니다. 출금 가능액에는 예금 이자가 함께 포함되어 있습니다. 예금 이자는 대출 이자와 마찬가지로 블록 단위로 증가하며 이자율은 Compound 내의 예금과 대출 상황에 따라 변동될 수 있습니다.

Compound의 이자율에 대한 자세한 이야기는 이후 게시글인 컴파운드 이자율 계산 분석에서 다룰 예정입니다.

마치며

‘[Compound series] 1. 컴파운드 톺아보기’는 금융시장에서의 대출 서비스의 중요성과 블록체인 기반의 암호화폐 대출 서비스의 등장 배경을 설명하고, 이를 구현한 Compound의 간단한 로직을 살펴보았습니다.

2020년 DeFi summer를 이끈 Compound는 예금한 암호화폐를 담보로 다른 암호화폐를 대출할 수 있는 과담보 대출 서비스를 제공합니다. 공급자는 자산 예금을 통해 예금 이자를 얻을 수 있고, 차입자는 암호화폐 차입을 통해 현재 보유하고 있지 않은 다른 암호화폐를 빌려 다양한 금융 포지션을 취할 수 있습니다. Compound는 이를 위해 프로토콜 내의 자산의 수요와 공급에 기반하여 파생된 이자율로 대출 서비스를 구축하고, 분산화된 서비스 제공을 위해 제 3자의 청산을 지원합니다.

이후 게시글에서는 Compound의 예금, 대출, 상환, 출금의 로직의 동작을 컨트랙트 코드를 통해 상세하게 분석하고, 예금 이자율과 대출 이자율 결정 방법과 청산 로직을 구체적으로 살펴봅니다.

디사이퍼 — DeFinite팀 소개

이병헌 — Decipher Senior Researcher, President of Decipher

부현식 — Decipher Mentor

이우진 — Decipher Junior Researcher

정재영 — Decipher Senior Researcher

정현 — Decipher mentor, Product manager of BIFROST

--

--