Defi Failures (2)

publisher

이수현
HYBLOCK
14 min readDec 11, 2022

--

Content 1: 김재빈

Content 2: 배수홍

Content 3: 이수현

Content 4: 이혜연

본 내용은 정보 제공을 위해 작성된 글이며 투자 추천 글이 아닙니다

CONTENT 3. Cream Finance

1.CREAM 파이낸스

크림 파이낸스 공식 홈페이지

CREAM 파이낸스는 디지털 자산에 대한 대출, 차입, 스왑, 지불 ,토큰화 서비스를 제공하는 P2P DeFi 플랫폼이다. 사용자들은 이더리움이나 USDC를 예치하고 그 대가로 이더리움이나 USDC 등을 다시 빌릴 수 있다. 일차적으로 사용자들은 저축을 할 수 있으며 고급 사용자들은 CREAM 파이낸스를 통해 마진 포지션을 취하고 활용할 수 있다. CREAM 파이낸스는 현재 Ethereum, Binance Smart Chain, Fantom, Polygon, Arbitrum에서 진행되고 있다.

CREAM 파이낸스는 2020년 11월에 Yearn Finance와 공식적으로 합병을 했다. Yearn과 Cream은 대출 및 레버리지 제품에 초점을 맞추어 Cream v2를 함께 출시하였고 Cream v2를 통한 레버리지로 수익을 올릴 수 있게 하였다.

2. Cream Finance 공격 내용

1) 공격 내용
Cream 파이낸스는 2021년 10월 27일 플래시론 공격을 입었고 공격으로 인해 1.3억 규모의 피해를 입었다. 공격자는 대량의 yUSD 토큰을 생성하기 위해 MakerDAO에서 빌린 DAI를 플래시하는 동시에 유동성 풀(yDAI, yUSDC, yUSDTm 및 yTUSD 포함)을 조작하여 yUSD에 대한 가격을 인위적으로 올렸다. 이 조치에 따라 공격자의 yUSD 포지션이 인위적으로 증가하였고, 공격자의 지갑 가치가 증가하여 CREAM Ethereum v1 시장에서 유동성을 제거할 수 있게 되었다.

2) 플래시론
플래시론은 무담보로 대출이 가능한 DeFi이다. 일시적으로 담보를 설정하고 대출 받은 후, 대출 받은 암호화폐를 이용한 공격 및 조작을 통해 이득을 취한 뒤 바로 담보를 갚아버리는 방식이다. 플래시론 차용인이 다음 블록까지 대출 받은 금액과 플래시 사용 수수료를 상환할 수 없는 경우 대출 및 해당 대출금과 관련된 모든 트랜잭션은 블록체인에 저장되지 않고 무효화된다. 사용자들은 플래시론을 사용하여 (1) 거래소 간 시세 차이를 이용한 차익 거래, (2) 과담보로 맡겨진 기초 자산을 부분적으로 청산하여 리스크 관리를 도와주는 강제 청산 방지, (3) 담보물 변경 등을 하고자 한다.

하지만, 플래시론의 특성을 악용하여 플래시론 공격이 일어나기도 한다. CREAM 파이낸스는 플래시론 공격의 사례라고 할 수 있다.

3) 플래시론 공격
플래시론 공격 내에서 공격자는 대출이 진행되는 동안 인위적으로 가격을 조작하여 자신의 자산 가치를 올린다. 차익거래를 진행한 후 바로 자금상환을 한다. 이후 플래시론을 상환하는 즉시 차익거래를 통한 이익을 얻을 수 있게 된다.

플래시론 공격은 자체적으로 감당할 수 있는 유동성을 벗어나면 슬리피지가 발생한다. 슬리피지란 사용자가 매도할 때 유동성이 부족한 이유로 시장 가격보다 낮은 금액으로 팔리거나, 매수할 때 높은 금액대로 구매가 체결되는 문제를 말한다.

공격자들은 대량의 대출을 받는 과정에서 AMM 알고리즘을 이용한다. AMM은 두 개의 암호화폐가 거래쌍을 이뤄 유동성 풀을 구성한다. 인위적으로 높은 유동성을 공급하여 AMM 내의 한 토큰 가격을 무너뜨리면 나머지 거래쌍 토큰과의 교환가지가 변화하게 되고, 공격자는 막대한 양의 거래 토큰을 얻게 된다.

AMM : AMM은 알고리즘에 따라 유동성풀 내의 자산의 비율을 자동으로 계산하여 자산간 교환비율(가격)을 제시한다.

4) 공격 과정

  1. 지갑 A 플래시론으로 $500M DAI 를 MakerDao 에서 빌리고 $500M DAI 를 yDAI Yearn Vault 에 넣고 yDAI 를 받아옴
  2. $500M yDAI 를 yUSD Curve pool 에 넣고 yUSD를 받아옴
  3. Yearn Vault 에 넣고 yUSDVault token 을 받아옴
    yUSDVault 총 공급은 $11M -> $511M 으로 증가
  4. Cream에서 $500M YUSDVault 를 crYUSD 로 바꿈
    지갑 A : $500M crYUSD 보유
  5. 지갑 B 플래시론으로 빌린 $2b ETH를 예치하고, $2B 가치의 cETHER 로 바꿈
  6. cEther 중 $500M을 담보로 $500M 가치의 crYUSD 를 바꾸고 지갑 A로 전송
    지갑 A : $1B crYUSD 보유
  7. cEther 중 $500M을 담보로 $500M 가치의 crYUSD 를 바꾸고 지갑A로 전송
    지갑 A : $1.5B crYUSD 보유
  8. 바꾼 $2B ETH 가치의 cEther 중 $500M을 담보로 $500M 가치의 yUSD Vault token 을 바꿈
  9. $500M 가치의 yUSD Vault token 를 지갑 A 로 전송
    지갑 A : $1.5B crYUSD 와 yUSD Vault token 보유
    yUSDVault 의 총 공급량을 최대한 통제하려고 함
  10. DefiDollar 에는 $3M 가치의 DUSD : yUSDVault 페어가 있었는데 지갑 A 가 $3M DUSD 를 커브에서 구매
  11. DUSD 상환/소각하여 yUSDVault 를 내 지갑으로 가져옴
    지갑A : $1.5b crYUSD 와 $503M yUSDVault token 보유
  12. yUSD 에 대해서 $503M yUSDVault 를 상환 소각하고 USDVault 의 공급은 $8M 까지 낮춤
  13. yUSDVault shares = (contracts’ yUSD balance) / total supply of yUSDVault shares)
    창고에 $8M의 yUSD만 보관하여 yUSDVault shares 는 $1이 됨
    지갑 A : $1.5B 의 crYUSD 보유
    지갑 B : 이전에 플래시론으로 빌린 $2B ETH 담보 중 $1.5B 의 빚 보유
  14. 여기서 yUSDVault 에 아무런 대가 없이 $8m 를 옮기게 된다면, yUSD balance 만 + $8M 이 됨
  15. yUSDVault shares 는 $2가 되고 yUSDVault 와 비례 관계인 cryUSD 도 두배가 됨
    지갑 A : 빚$1.5b cryUSD 는 $3.0b cryUSD가 됨
    지갑 B : 빚 $1.5B가 $3.0B이 됨
  16. 지금 지갑 A는 $3B cryUSD + $500M yUSD 가 있음
    $3B cryUSD 중에 $2B cryUSD 는 $2B ETH 를 빌림
    지갑 A : $1B cryUSD + $2B ETH + $500M yUSD
  17. 지갑 A는 지갑 B 로 $2B ETH를 전송해서 지갑 B의 플래시론을 상환
    지갑 A 는 DaoMaker 에서 빌린 $500M DAI 를 상환함
  18. 남는 $1B cryUSD 를 담보로 Cream 에 있는 $136M 가치의 자산을 빌려서 수익화

3. 결론

Cream 파이낸스 플래시론 공격은 복잡한 문제가 얽혀 일어난 공격이지만 문제 중 하나는 유동성 문제 부족으로 인한 가격의 변화이다. 인위적으로 유동성을 제거해 가격을 변화시켜 자신이 가진 자산의 가치를 올렸다. 이러한 문제를 예방하기 위해 특정 개인이 pool에 추가할 수 있 자금에 제한을 두는 것을 제안한다. 그리고 문제 발생 시, 프로토콜과 제 3자가 확인하고 대응할 수 있는 시간을 벌어줄 수 있다.

개인이 한 pool에서의 모든 유동성을 가지고 간다면, 해당 De-fi 내에서 유통되는 토큰의 가격에는 문제가 발생할 수 밖에 없고 악의적으로 이용하게 된다면 똑같은 상황이 반복될 것이다.

CONTENT 4. Goose Finance

1. Goose Finance

Goose Finance 공식 홈페이지

PancakeSwap의 Fork Project로, 같은 UI를 이용하여 Farming Pool을 제공하고 CAKE 대신 EGG를 주는 Finance 프로젝트이다. 단순한 Fork 프로젝트로 끝나지 않고, 다음 3가지 포인트로 인기를 끌며 TVL을 계속 성장시켰다.

1) Deposit Fee

Goose Finance의 특이한 점은 선이자 시스템이라는 것이다. EGG가 엮인 풀 이외의 다른 풀들에 LP토큰을 예치하기 위해서는, 예치 금액의 4%를 수수료로 내야 했다. 이 수수료 중 3%는 EGG의 Buy Back 후 소각에 쓰이고, 나머지 1%는 개발자에게 돌아간다. 3%는 추후 Lottery 기능이 나오면, Lottery Pot에 더해지기로 되어있었다.

2) Migrator Code 제거

GooseDeFi가 선전한 바에 따르면, PancakeSwap에는 관리자권한을 조정할 수 있는 Migrator Code가 있어서 지금까지 PancakeSwap을 Fork한 프로젝트들이 그 때문에 Rugpull을 할 수 있었다고 한다. 그래서 Goose는 이 코드를 제거했고, 이후 프로젝트들이 PancakeSwap이 아닌 Goose를 Fork하는 것을 유행으로 만들기까지 했다. 그 예로 Viking, Aqua, Candu 등이 Goose의 Fork이다.

3) Hacken Club의 Audit & Certik의 CertikShield 진행

Hacken Club은 Blockchain Contract Audit을 진행하는 회사 중 하나로, EOS Contract를 Audit하였고 1Inch DEX Aggregator의 보안 협력사로 선정되어 있는 업체이다. Goose는 이러한 Hacken Club의 Audit을 획득하였다.

또한, Goose는 Certik의 Audit도 획득하였으며 CTK의 구매를 통해 CertikShield라는 보험도 들어두었다. CertikShield은 해당 프로젝트가 해킹을 당할 시, 구매한 CTK만큼 보상을 받을 수 있는 프로그램이다.

이와 같은 이점들로 Goose Finance는 가파르게 성장했고, 한 때는 스테이킹 TVL이 PancakeSwap의 뒤를 쫓을 정도였다.

2. 실패 이유

Goose Finance는 해킹과 같은 특정한 공격에 의해 실패한 것이 아닌, 프로토콜의 허점에 의해 실패하게 된 사례이다. 한때는 $164까지 갔던 EGG가 $0.02까지 하락한 원인은 바로 Layered Farming인 Incubator에 의한 공급 과다와 가격 방어 실패이다.

1) Layered Farming

Goose Finance 공식 홈페이지

2021년 3월 추가된 서비스이다.

‘Goose Finance가 매주 새롭게 만드는 XXXSwap.Finance’

어차피 많은 사람들이 똑같은 복붙(Fork) 프로젝트를 찾아 떠돌아 다니며, 몇 일 또는 몇 시간 Farming 후 Exit하며 Rugpull을 걱정하는데, 차라리 Goose에서 만든 새로운 사이트에서 Rugpull 걱정없이 놀라는 의미로 Goose Finance가 내세운 홍보 문구이다.

Layered Farming은 매 14일마다 Layer0(초기 구스 파밍)에서 파생된 새로운 토큰을 가진 새로운 농장(Layer1)이 만들어진다.

이렇게 파생된 농장은 안정화된 초기 농장과는 달리 높은 APY로 출시되며 Layer0의 토큰을 인큐베이터함으로써 파밍이 가능하다. 이 과정에서 Layer(X-1) 토큰의 가격이 LayerX 토큰의 가치에 영향을 받게 된다. Layer(X-1) 토큰은 LayerX에 인큐베이터해서 LayerX 토큰을 얻을 수 있기에 가치가 있는 것으로 여겨지기 때문이다.

Layer1 생성 후 14일이 지나면 새로운 파생 농장(Layer2)이 만들어진다. 이 농장은 Layer0와 Layer1의 토큰을 인큐베이터에 스테이킹함으로써 파밍이 가능하다. 즉, 새로운 농장이 출시되기 전 자금을 선착순으로 지원받아 새 농장의 초기 자금조달을 원활하게 만든다. 이 시스템을 인큐베이터라고 하며 결과적으로 Layer0를 이용하는 투자자들은 영구적으로 새롭게 파생되는 농장에 대한 파밍을 할 수 있게 된다.

레이어 파밍이 시작되기 1~3일 전 자금모집을 시작한 후 인큐베이터에 자금을 투입하면 투자자는 1:3 비율로 새로운 토큰을 받게 된다. 이후 Layer1 농장이 파생되면 Layer1 농장의 토큰 가격은 두배 이상에서 형성된다. 이후 인큐베이터에 있던 Layer0 EGG는 LayerX 토큰을 생성하기 위해 영구적으로 사용된다, 또한 인큐베이터는 고정된 자금만 투입가능하도록 설계되었기에 Layer0로부터 파생되는 모든 층계는 자금 유출성이 낮아진다.

2) 실패 과정

해당 실패의 진행 순서를 간단하게 정리하면 다음과 같다.

  1. Layer Farming의 등장.
  2. Layer1이 성공적으로 이루어짐. GG1(Layer1 토큰)을 통해 수익을 얻은 사람이 다수 발생.
  3. Layer2가 출시됨. Layer1의 성공을 보고 Layer2에 참여하려한 많은 사람들이 있었지만, 그 누구도 Layer2 풀에 참여하지 못함. Bot 하나가 해당 풀을 모두 차지했기 때문임.
  4. Bot을 통해 GG2(Layer2 토큰)를 얻는 족족 덤핑을 하자 GG2에 가치가 연동된 GG1의 가격 하락이 발생. GG1에 가치가 연동된 GG0(EGG)의 가격 역시 하락하게 됨.
  5. 하락한 EGG의 가격은 해당 DeFi를 사용할 유인을 사라지게 만듬.

Goose Finance는 여전히 운영은 되고 있으나, 이 과정을 통해 큰 가격 하락을 겪었고 가격과 TVL 모두 회복하지 못했다. Layer를 계속해서 출시하는 프로토콜의 실패를 보여준 셈이다.

3. 요약

PancakeSwap의 Fork Project인 Goose Finance는 높은 수익과 보안을 셀링 포인트로 성장했다.

서비스 확장 과정의 일부로 제시한 Layered Farming 역시 성공하는듯 했으나, 프로토콜의 허점을 노린 유저에 의해 시장의 토큰 공급이 과도해졌고 가격이 무너졌다.

가격 방어에 실패한 Goose Finance는 더이상 시장에 매력적인 상품이 되지 못했고 쇠퇴했다.

4. 결론

여러 DeFi의 실패가 그렇듯이 Goose Finance의 몰락도 유저가 예상하고 대처할 수 있는 방안은 없었다. 그럼에도 불구하고 우리가 할 수 있는 것을 생각해본다면 ‘공부’이다. 봇을 이용해 풀 전체를 차지하고 덤핑을 하는 것을 막을 수는 없다. 하지만 레이어 파밍을 했을 때 토큰의 가격이 어떻게 형성되고, 무엇에 영향을 받는지는 해당 DeFi를 공부하면 알 수 있다. 그랬다면 레이어 파밍의 위험성을 미리 알 수는 있지 않았을까라는 생각이 든다.

Reference

  1. https://xangle.io/project/CREAM/insight/disclosure/5fbf5a8ba9402b536eafd0e3
  2. http://www.coindeskkorea.com/news/articleView.html?idxno=72760
  3. https://xangle.io/project/CREAM/insight/disclosure/6139cdc60dc4d9aea4f1376f?page=1
  4. https://medium.com/iotrustlab/%ED%94%8C%EB%9E%98%EC%8B%9C-%EB%A1%A0-%EA%B3%B5%EA%B2%A9-flash-loan-attack-%EC%9B%90%EB%A6%AC-%EB%B0%8F-%EB%B0%A9%EB%B2%95-%EB%B6%84%EC%84%9D-94e01fe1a9c8
  5. https://medium.com/cream-finance/post-mortem-exploit-oct-27-507b12bb6f8e
    https://xangle.io/project/CREAM/insight/disclosure/612d85d22547c3445cf105bf
  6. http://www.coindeskkorea.com/news/articleView.html?idxno=74578
  7. https://medium.com/@AndyPavia/swissblock-post-mortem-cream-finance-hack-7c1caff4335c
  8. https://www.steemcoinpan.com/hive-101145/@redmind2/goose-finance-layered-farming-incubator
  9. https://goosefinance.medium.com/layered-farming-in-more-details-6f1177232fb0
  10. https://blog.naver.com/redmind2/222259517764

--

--