[KO] DSRV Report — Terra Crash

Seokjoong Yoon
DSRV
Published in
38 min readMay 20, 2022

DSRV Research는 더 많은 사람이 왜곡 없이 Web3를 이해하고 참여하는 데 기여하기 위해, 본 리포트를 기고합니다.

Disclaimer: 이 글은 정보 전달을 위한 목적으로 작성되었으며, 특정 프로젝트에 대한 투자 권고, 법률적 자문 등 목적으로 하지 않습니다. 모든 투자의 책임은 개인에게 있으며, 이로 발생된 결과에 대해 어떤 부분에서도 DSRV는 책임을 지지 않습니다. 본문이 포괄하는 내용들은 특정 자산에 대한 투자를 추천하는 것이 아니며, 언제나 본문의 내용만을 통한 의사결정은 지양하시길 바랍니다. 추가적으로 이 글이 쓰여진 시점과 현재 모두 DSRV LABS는 테라 블록체인의 검증인(벨리데이터)으로 참여하고 있었음을 알려드립니다.

Terra Crash: 타임라인
DSRV Research는 이번 테라 스테이블코인(UST)과 LUNA가 폭락하게 된 일련의 사건들을 재구성하여 하나의 흐름으로 이해하고자 이번 리포트를 준비하게 되었습니다. 본문은 정보 전달의 목적으로 작성되었으며, 본문 이외에도 이번 사건을 둘러싼 다른 해석들이 있을 수 있음을 알립니다. 이번 사건에 대하여 독자분들이 객관적인 정보 획득을 하는데 본문이 일부분 기여할 수 있기를 바랍니다.

더하여, 이더리움 온체인 데이터는 UTC를 기준으로, 그 외의 테라 온체인 데이터, 바이낸스 차트 혹은 트위터와 같은 자료들은 한국 시간인 UTC +09:00를 기준으로 작성되었습니다. 자료 아래 부분 설명에 추가적으로 고지하였으며, 자료가 UTC 기준으로 작성되었을 경우, 본문에 한국 시간을 추가적으로 작성하였습니다.

본문은 테라 블록체인의 스테이블코인인 UST의 가격 안정성이 흔들리기 시작하던 5월 7일부터 0.037달러까지 폭락한 5월 13일까지 발생했던 사건들을 시간 순서대로 되짚어보고자 기획되었습니다. 동시에 이번 사건을 통해 무엇이 사건의 발단이었는지, UST를 1달러 가격으로 유지시키는 알고리즘은 어떻게 작동했는지, 패닉 상황에서 시장 심리는 어떻게 반응했는지, UST를 다시 1달러로 회복시키려는 노력은 있었는지, 마지막으로 블록체인을 공격하려는 시도를 방어하는 과정은 어땠는지 모두 찬찬히 살펴보고, 우리가 다시 앞으로 나아가기 위한 발판을 견고히 다져보고자 합니다.

UST to USD Chart. 출처: Coinmarketcap, LUNA to USD Chart. 출처: Coinmarketcap

5월 7~8일 — UST 1차 폭락

아래 표는 UTC기준 5월 7일에서 8일까지 이틀 동안 가장 규모가 큰 스테이블 코인 거래소인 Curve Finance의 UST-3Crv Pool에서의 주요 스왑 트랜잭션을 정리한 것입니다. UST-3Crv Pool은 UST와 이외 스테이블코인 간 스왑을 가능하게 해주는 Curve Finance의 여러 유동성 풀 중 규모가 가장 큰 풀입니다.[1] (전체 트랜잭션은 Etherscan 링크에서 확인할 수 있습니다. 아래 표는 규모가 큰 트랜잭션만 모아 따로 정리한 재구성본입니다.) 적색으로 표시된 트랜잭션들은 UST를 USDT, USDC, DAI 등의 다른 스테이블코인으로 스왑해간 트랜잭션을, 녹색으로 표시된 트랜잭션들은 반대로 다른 스테이블코인을 UST로 스왑해간 트랜잭션을 의미합니다. 적색 트랜잭션은 UST-3Crv Pool 내 UST의 비율을 높여 상대적으로 UST의 가격을 떨어뜨리는 효과가 있으며, 녹색 트랜잭션은 반대로 UST의 가격을 높이는 효과가 있습니다.

Curve Finance UST-3pool Transaction History. 검은색 상자는 주요 트랜잭션. UTC기준. 출처: Etherscan (DSRV Research 재구성본)

위의 표에서 검은색 상자로 표시된 트랜잭션들에 대하여 설명합니다.

노란색으로 표시된 트랜잭션은 Curve Finance의 UST-3Crv Pool의 유동성 크기를 감소시키는 트랜잭션입니다. 유동성 풀의 크기가 줄어든다면, 같은 양의 코인 간 교환이 이루어지더라도 유동성 풀 내의 코인의 비율이 크게 변동하여 가격 변화가 심화됩니다. 다만 위의 노란색 트랜잭션의 경우, UST-3Crv Pool 유동성에서 UST만을 축소하는 트랜잭션이기 때문에, UST의 공급량이 더 많았던 해당 풀에서는 단기적으로 UST와 여타 스테이블 코인 간 교환비율을 되돌려 UST의 페깅을 돌려놓는 효과가 있을 수 있습니다.

위의 Curve Finance UST-3Crv Pool 주요 트랜잭션 정리 표에서 알 수 있듯이, 5월 7일 오후 9시 44분 27초와 오후 10시 52분 21초 (한국 시간 기준 5월 8일 오전 6시 44분 27초와 오전 7시 52분 21초) 두 번의 트랜잭션에 걸쳐 각각 1억 5천 달러와 1억 달러어치의 유동성이 UST-3Crv Pool에서 빠져나옵니다.[2] UST-3Crv Pool에서 줄어든 유동성은 Curve Finance의 또 다른 UST 유동성 풀인 4pool로 이동합니다.

Curve Finance 4pool Balance. UTC기준. 출처: Dune Analytics @mhonkasalo

이렇게 UST-3Crv Pool 유동성의 크기를 줄이는 첫 번째 트랜잭션 이후 오후 9시 57분 24초 (한국 시간 기준 5월 8일 오전 6시 57분 24초), 어떤 지갑 주소(0x…7d0a)에 의하여 약 8천5백만 달러 규모의 UST가 USDC로 스왑됩니다[3]. 그리고 또 하나의 지갑 주소(0x…781c)에 의하여 네 번에 걸쳐 1억 달러 규모의 UST 또한 USDC로 스왑됩니다(오후 10시 31분 49초, 35분 22초, 38분 20초, 58분 48초, 한국 시간 기준 5월 8일 오전 7시 31분 49초, 35분 22초, 38분 20초, 58분 48초). 해당 트랜잭션들과 그 전후로 백만에서 천만 달러 규모의 트랜잭션들에 의하여 UST가 USDC, USDT, DAI로 스왑되면서 UST-3Crv Pool의 UST 비율이 늘어나 UST 가격이 급격하게 하락하게 됩니다.

Curve UST-3pool 구성비율. 파란색이 UST. UTC기준. 출처: Dune Analytics @mhonkasalo

그 과정에서 두 개의 지갑 주소(0x…bfdc, 0x…e5e8)가 UST-3Crv Pool에서 약 3억 7천만 달러어치의 USDT를 UST로 교환해가면서 다시 UST-3Crv Pool에서의 UST 가격이 일시적으로 회복되기도 했지만, 이후 중앙화 거래소(Centralized Exchage, CEX)에서는 지속적으로 매도세가 강해져 UST의 가격이 급락하게 됩니다 (바이낸스 UST/BUSD 마켓 기준 최저 0.985달러).

5월 7일-8일 Binance UST/BUSD 15m Chart. UTC +09:00기준. 출처: Binance.

알아보기 — UST 매도자 (0x…7d0a) 트랜잭션 기록

0x8d47F08EBc5554504742f547eb721a43d4947D0A 주소의 트랜잭션 기록. UTC기준. 출처: Etherscan

오후 9시 57분 24초 (한국 시간 기준 5월 8일 오전 6시 57분 24초)에 약 8천5백만 달러 규모의 UST를 USDC로 스왑한 지갑 주소를 블록체인에 기록된 데이터로 찾아볼 수 있습니다. 위의 Etherscan에서 확인할 수 있듯이, UST-3Crv Pool 스왑 이전인 오후 9시 53분경 (한국 시간 기준 5월 8일 오전 6시 53분경), 테라와 이더리움 체인을 연결하는 Wormhole 브릿지를 통해 UST가 전송되고 있었다는 것을 확인할 수 있습니다. 이는 Wormhole 브릿지 익스플로러를 통해 다시 확인할 수 있습니다.

0x8d…7d0a 주소로 85M UST가 전송된 Wormhole Bridge 트랜잭션. UTC 기준. 출처: Wormhole Bridge Explorer

Wormhole 브릿지 트랜잭션을 바탕으로 테라 블록체인에서의 어떤 트랜잭션이 8천5백만 UST의 전송과 관련이 있는지 확인할 수 있습니다.

Wormhole 브릿지를 통한 UST 전송 트랜잭션. UTC +09:00 기준. 출처: Terra Finder

테라 블록체인의 트랜잭션을 바탕으로 8천5백만 UST를 소유하고 있었던 원래 계정이 무엇인지 확인할 수 있습니다(빨간색 상자). 해당 계정의 트랜잭션 기록은 다음과 같습니다. 모든 트랜잭션 기록은 4번 주석에서 확인할 수 있습니다.[4]

terra1yl8l5dzz4jhnzzh6jxq6pdezd2z4qgmgrdt82k의 트랜잭션 기록. UTC +09:00 기준. 출처: Terra Finder

빨간색 상자로 표시된 트랜잭션은 UST를 앵커 프로토콜에 예금하는 트랜잭션입니다. (한국 시간 기준) 2022년 3월 16일부터 5월 8일까지 해당 주소는 앵커 프로토콜에 약 2억 달러어치의 UST를 예치합니다. (위의 그림은 예치 트랜잭션의 일부만 포함합니다. 전체 트랜잭션은 4번 주석에서 확인 가능합니다.)

terra1yl8l5dzz4jhnzzh6jxq6pdezd2z4qgmgrdt82k의 트랜잭션 기록. UTC +09:00 기준. 출처: Terra Finder

위 그림에서 빨간색 상자로 표시된 트랜잭션은 8천5백만 달러를 Wormhole 브릿지를 통해 이더리움 체인으로 전송하는 트랜잭션입니다. 해당 트랜잭션 이전 주황색 상자로 표시된 트랜잭션들은 UST를 terra1ncjg4a59x2pgvqy9qjyqprlj8lrwshm0wleht5주소로 전송하는 트랜잭션인데, 해당 주소는 바이낸스 거래소의 UST 입금 주소와 동일합니다. 위의 그림에 포함된 트랜잭션은 입금 트랜잭션의 일부로, 바이낸스로 입금된 총 UST는 약 1억1천8백만 개에 달합니다.

5월 7~8일 — 앵커 프로토콜 예금자 이탈

앵커 프로토콜 예금자 이탈. 출처: 앵커 프로토콜 웹앱.

이전에 DSRV Research에서 앵커 프로토콜에 대하여 다룬 적 있습니다(시리즈물로 계획되어있던 글들은 예정대로 퍼블리시될 예정입니다). 앵커 프로토콜은 테라 블록체인 상에서 동작하는 예금 및 대출 서비스로, UST 예금에 대하여 연간 약 20%의 예금이자를 제공합니다. 매력적인 이자율을 제공하는 앵커 프로토콜에는 많은 양의 UST가 예금되어 있었는데, 5월 7, 8일 양일간 각 거래소들의 UST 가격 변동성이 심화되면서 앵커에 예금되어 있던 UST가 빠르게 이탈하기 시작합니다.

앵커 프로토콜 일단위 예금액 변화. 출처: Smart Stake

5월 6일, UST 가격 변동성 이슈가 발생하기 이전에 앵커에 예금되어있던 UST는 약 126억 달러 규모였으나, 5월 7일에는 약 13억 달러, 5월 8일에는 약 15억 달러 어치의 UST가 앵커로부터 빠져나오게 됩니다. 앵커는 스테이블코인 예금에 대하여 약 20%의 연이율을 보장함으로써 시장에 공급된 UST를 묶어두는 역할을 했는데, 5월 6일 기준 그 비중이 전체 UST 발행량의 약 67%에 달하였습니다[5].

UST공급량 그래프. 5월 6일 기준 총공급량 187억 UST. 출처: Smart Stake

UST의 1달러 페깅이 오랜 기간 돌아오지 않으며 시장이 패닉하자, 앵커에 예치돼있던 많은 양의 UST가 갑작스럽게 인출돼 시장에 다시 풀리기 시작했고, 이로 인해 UST의 가격 변동성은 보다 더욱 심화되었습니다. 이 과정을 통해 UST 총 공급량의 67%가 단 하나의 프로토콜에 예치되어 있었다는 것은 앵커 프로토콜이 UST의 사실상 단일 수요처로써 역할 하고 있었고, 이는 UST의 가격 안정성에 큰 위협이 될 수 있었음을 연역 해볼 수 있었습니다.

5월 9일 — LFG 비트코인 대출

5월 7일에서 8일까지 있었던 UST 가격 변동성에 대응하기 위하여, LFG(Luna Foundation Guard, UST 페깅 유지 목적의 비영리기구)는 OTC(장외거래) 트레이딩 기관을 대상으로 하는 15억 달러 규모의 UST(7.5억 달러 규모)와 비트코인(7.5억 달러 규모) 대출을 진행하기로 합니다. 대출의 목적은 UST 가격 변동성을 안정화하기 위함으로, 트레이딩 기관은 다음과 같이 UST와 비트코인을 거래합니다[6]:

  1. UST가 1달러보다 낮은 가격일 경우: OTC(장외거래) 트레이딩 기관은 비트코인으로 UST를 매수합니다. 즉, 비트코인은 시장에 매도되고 UST는 매수됨으로써 UST 가격에 상승 압력을 만들어냅니다.
  2. UST가 1달러보다 높은 가격일 경우: OTC(장외거래) 트레이딩 기관은 UST로 비트코인을 매수합니다. 즉, UST는 시장에 매도되고 비트코인은 매수됨으로써 UST 가격에 하락 압력을 만들어냅니다.

특히, 위 트윗의 의도에 따르면 시간이 지남에 따라 UST 가격이 1달러로 안정되거나, 혹은 그 이상으로 상승할 경우 트레이딩 기관은 대출받은 7.5억 달러 규모의 UST로 비트코인을 매수함으로써 UST 가격을 1달러에 다시 페깅시킴과 동시에 비트코인을 매집한 후 대출을 상환할 수 있었습니다(”- Loan 750M UST to accumulate BTC as market conditions normalize.”). 이렇게 낙관적인 시나리오대로 흘러갔다면, LFG는 이후 비트코인 리저브 풀로 사용할 비트코인을 빠르게 마련(회수)할 수 있었습니다.

업데이트 — 5월 16일 LFG공식 트윗

5월 16일 LFG가 공지한 트윗에 의하면, 5월 7일 기준 LFG는 총 80,394개의 비트코인을 가지고 있었습니다. 그 중, 52,189개의 비트코인을 트레이딩 기관에 전송했습니다. 이 사실은 블록체인 분석 업체, Elliptic에서 분석한 비트코인 송금 기록과 일치합니다.

LFG Bitcoin 전송 기록. 출처: Elliptic

Elliptic에 의하면 첫 번째 트랜잭션에 의해 22,189개의 비트코인이, 두 번째 트랜잭션에 의해 30,000개의 비트코인이 동일한 주소로 입금됩니다. 약 16.8억 달러 어치의 비트코인이 두 번의 트랜잭션에 걸쳐 하나의 지갑 주소로 전송되는데, TerraForm Labs의 창업자, Do Kwon과 LFG 측의 트윗에 따르면 이 트랜잭션이 바로 트레이딩 기관으로의 약 15억 달러 규모의 대출입니다. 기존에 Do Kwon과 LFG가 공지한 것과 다른 부분은, 이전 공지에 따르면 7.5억 달러의 UST와 7.5억 달러의 비트코인을 외부 트레이딩 기관에 대출했어야 하는 것에 반하여 실제로는 16.8억 달러의 비트코인이 이동했다는 것입니다.

비트코인 리저브 풀 — UST 페깅을 위한 안전장치

그렇다면 왜 LFG는 8만 개의 비트코인을 보유하고 있었을까요? 바로 비트코인 리저브 풀을 만들고자 했기 때문입니다. 2022년 3월 24일, LUNA의 투자사인 Jump Trading으로부터 제안된 비트코인 리저브 풀[7]은 UST가격이 1달러 이하로 떨어질 때 다시 UST 가격을 1달러로 회복시키는 기존의 알고리즘 이외의 추가적인 안전장치로 이해할 수 있습니다. 원래 비트코인 리저브 풀은 테라 블록체인 상에서 DEX를 운영하고 있는 Astroport 팀에 의하여 블록체인 위에서 동작하는 메커니즘으로 구현될 예정이었습니다. 그러나 UST의 가격 변동성이 심화되어 대응책 마련이 시급했던 5월 9일을 기준으로는, 자동화된 비트코인 리저브 풀 기능을 충분히 시험하기 위한 테스트넷 런칭까지 몇 주가 소요될 예정이었기 때문에 임시방책으로 UST와 비트코인을 외부 트레이딩 기관에 대출하기로 결정했습니다.[8]

기존의 알고리즘만 동작하는 경우에는 UST가 1달러 아래로 떨어지는 상황에서 다음과 같은 과정을 거쳐 1달러로 회복됩니다:

  1. 1 UST의 가치가 1달러보다 낮아집니다.
  2. UST 홀더는 테라 마켓 모듈에서 (1달러보다 낮은 가치의) 1 UST를 1달러어치의 LUNA로 교환합니다.
  3. 이때, 사용자가 가져가는 1달러어치의 LUNA는 새로 발행된 LUNA이며, 사용자로부터 받은 1 UST는 소각됩니다.
  4. 이러한 거래가 반복되고 UST의 소각량이 늘어남에 따라 UST 공급이 줄어들고, 결국 다시 1 UST가 1달러로 회복됩니다.
  5. 반대로 LUNA는 공급량이 늘어남에 따라 가격 하락 압력이 커지게 됩니다.

따라서 UST의 달러 가치가 크게 떨어지는 경우, LUNA 공급량을 늘림으로써 UST의 1달러 페깅을 지키게 됩니다. 그리고 이러한 메커니즘은 아래와 같이 ‘Death Spiral’이라는 악순환을 만들어 낸다는 비판이 제기되어왔습니다.

알아보기 — The Death Spiral

The Death Spiral. 출처: José Maria Macedo(Twitter @ZeMariaMacedo)
  1. 시장 심리 위축으로 LUNA 가격이 하락합니다.
  2. LUNA 가격이 하락하면서 UST의 페깅에 대한 신뢰가 무너지고, 시장에 이러한 공포감이 반영되어 UST가 중앙화 거래소 또는 DEX에서 매도되기 시작합니다.
  3. UST 매도는 UST 가격이 1달러 아래로 떨어지게 하고, 차익거래자들은 테라 마켓 모듈에서 1 UST를 1달러어치의 LUNA로 교환하며 차익을 얻고자 합니다. 이러한 거래가 반복되며 LUNA의 공급량은 더욱 늘어나게 됩니다.
  4. LUNA의 공급량이 늘어나면 LUNA 가격이 추가적으로 하락합니다.

알아보기 — 비트코인 리저브 풀

Bitcoin Reserve Pool MVP. 출처: Terra Agora

온체인 비트코인 리저브 풀은 위의 Death Spiral — 2번에서 설명한 UST 매도 물량을 비트코인으로 흡수하여 위와 같은 악순환 고리를 끊어내기 위해 만들어질 예정이었습니다. LFG는 다음과 같이 설명합니다[9]:

“The reserve functions as a release valve for swelling pressure to exit UST to LUNA on-chain, dampening the reflexivity of the system by reducing the dilution of the LUNA supply during severe contractions and restoring the peg in real-time and maintaining an alternative arbitrage opportunity outside of the Terra protocol itself.”
: “[비트코인] 리저브는 on-chain 스왑을 통해 UST에서 LUNA로 탈출하려는 압력을 완화시키는 밸브로써 기능한다. UST 디페그(depeg)가 심화될 때, 페깅을 다시 회복시키는 과정에서 발생하는 LUNA의 가치 희석을 줄이고 [LUNA 외의] 새로운 차익거래(arbitrage) 기회를 제공함으로써 시스템을 더욱 유연하게 만들 수 있다.”

한 문장으로 정리하자면, 비트코인 리저브 풀은 UST가 0.98달러 아래로 하락할 때 작동하는 추가적인 안전장치입니다. 아래와 같이 정리해볼 수 있습니다.

  1. UST 가격이 0.98달러 이하로 하락하는 경우: UST 홀더는 0.98달러 이하의 가치를 지닌 1 UST로 0.98달러어치의 비트코인을 구매할 수 있습니다. 즉, 할인된 가격에 비트코인을 구매할 수 있는 것입니다. UST 홀더들이 시장에서 UST를 매도하는 것이 아니라, 비트코인 리저브 풀에서 UST를 비트코인과 교환해간다면, UST의 가격이 시장에서 추가적으로 하락하는 것을 막을 수 있을 것입니다. 비트코인 리저브 풀이 UST 매도 물량을 흡수하기 때문입니다.
  2. UST 가격이 1달러로 회복되거나, 1달러 이상이 되었을 경우: BTC홀더는 리저브 풀을 통해 1달러어치의 비트코인을 1 UST로 교환할 수 있습니다. 이렇게 되면 UST 가격이 1달러 아래로 하락했을 때 리저브 풀에 쌓이게 된 UST를 다시 시장에 공급함으로써 1달러 이상으로 높아진 UST의 가격을 낮추고, BTC를 리저브 풀로 다시 매집(회수)시킬 수 있습니다.

사실상 LFG가 외부 트레이딩 기관을 통해 대응하고자 했던 것이 바로 기존의 비트코인 리저브 풀의 메커니즘과 같은 맥락으로 이해될 수 있습니다. UST의 가격이 폭락할 때, LUNA의 공급량에 영향을 주지 않으면서 UST를 매수하여 UST의 가격에 상승 압력을 만들어내고자 한 것입니다.

5월 9~10일 — 2차 UST 폭락

5월 9일-10일 Binance UST/BUSD 15m Chart. UTC +09:00 기준. 출처: Binance.

5월 10일에는 UST가 최저 0.6달러까지 폭락했다가 다시 약 0.94달러까지 회복하게 됩니다. 이러한 시장 상황에서 UST 가격에 작용하는 힘은 크게 세 가지로 정리해볼 수 있습니다.

  1. UST 페깅 알고리즘

위에서 언급했듯이 UST의 가격이 1달러 미만으로 떨어질 경우, UST 홀더들은 테라의 마켓 모듈을 통하여 1 UST를 1달러어치의 LUNA로 교환하고, 차익을 얻을 수 있습니다. 이러한 교환이 계속해서 일어나게 되면서 시장에는 UST 공급량이 줄어들고, LUNA 공급량은 증가하게 됩니다. 따라서 이러한 상황에서 UST 페깅 알고리즘은 UST 공급을 줄여 가격 상승 압력을 만들어내고, LUNA 공급은 늘려 가격 하락 압력을 만들어냅니다. 실제로 5월 10일 LUNA 유통량은 전날 대비 약 2백만 개 증가했습니다.

5월 6일-10일 LUNA 유통량. 출처: Messari

반대로 UST 유통량은 5월 9일 전날 대비 약 1억 6백만 개 감소했습니다.

5월 6일-10일 UST 유통량. 출처: Messari

2. BTC Loan

LFG가 외부 트레이딩 기관에 대출해준 UST와 비트코인 또한 시장에서 UST 가격에 영향을 주는 요인 중 하나입니다. 정확히 어떤 주체가, 어떤 규모로, 어느 시점에 비트코인과 UST를 시장에서 매도 및 매수하였는지의 데이터는 중앙화 거래소의 데이터베이스에 저장되어있어 증명할 수 없습니다. 하지만 LFG와 Do Kwon이 공지한 대로[5] 거래가 이루어졌다면 UST 가격이 1달러 이하로 떨어진 시점부터는 비트코인으로 UST를 매수하며 UST 가격의 상승 압력이 발생했을 것으로 생각해볼 수 있습니다.

바이낸스 UST/BUSD페어 15분 차트 기준, UST는 5월 9일 오후 11시 0.99달러에서 5월 10일 오전 9시 15분 0.6달러까지 하락하는데, 이 시간 동안 비트코인의 가격 움직임은 아래와 같습니다.

5월 9일-10일 Binance BTC/BUSD 15m Chart. UTC +09:00 기준. 출처: Binance.
💡 DSRV's Tip; 매우 큰 비트코인 시장

LFG에서 대출해준 비트코인은 비트코인 시장의 가격에 영향을 미치는 수많은 변수 중 하나일 뿐으로, UST 가격이 하락할 당시에 비트코인의 가격 또한 하락했다는 것만으로 정확히 이 시점에 LFG에서 대출한 비트코인으로 UST를 매수했다는 것을 결론으로 확정 지을 수는 없습니다.

업데이트 — 5월 16일 LFG공식 트윗

LFG의 5월 16일 트윗에 따르면, Terraform Labs(TFL)는 5월 10일 UST 가격이 폭락할 때, 33,206개의 비트코인으로 1,164,018,521 UST를 매수하여 UST의 1달러 페깅 회복을 시도하였습니다. 이러한 비트코인 매도 및 UST 매수는 위에서 설명된 바와 같이 비트코인 시장과 UST 시장에 영향을 미치게 됩니다.

3. 외부 매도 및 매수 압력 (Sell Pressure / Buy Pressure)

위에서 언급된 UST 페깅 알고리즘과 비트코인 트레이딩으로 인한 영향 이외에도 외부 기관 또는 개인 투자자들이 시장에 참여하며 가격에 영향을 미칩니다. 각 기관 또는 개인들이 시장에서 어떻게 반응하는지는 정확하게 알 수 없으나, 당시 시장 심리를 되짚어볼 수는 있습니다.

  • 페깅 불안정성

5월 7일부터 지속되는 UST 가격 하락에 따라, UST가 더이상 1달러에 페깅되지 않을 수 있다는 심리가 시장을 지배하고 있었습니다.[10] UST에 대한 투자자들의 신뢰가 약화됨에 따라 UST를 다른 자산으로 교환하고자 하면서 더 많은 UST가 시장에 매도되었을 가능성이 있습니다.

  • UST 뱅크런

사실이 아님에도, LUNA의 시가총액이 UST의 시가총액(Market Cap)보다 낮아질 경우, 뱅크런이 발생할 수 있다는 우려가 지속해서 제기되어왔습니다. Coindesk는 기사에서 아래와 같이 설명합니다.[11]

“Luna’s price decline puts its market cap below that of UST’s. That potentially throws the foundation of UST’s entire stabilizing mechanism into jeopardy, because it means a Terra bank run could lead to some users no longer being able to redeem their $1 of UST for $1 of LUNA.” : ”LUNA의 가격 하락으로 인해 LUNA의 시가총액이 UST 아래로 내려갔다. 이러한 현상은 UST의 근본적인 안정화 메커니즘을 위험에 빠뜨릴 수 있는데, 왜냐하면 테라 뱅크런으로 인해 몇몇 UST 홀더들은 더이상 1 UST를 1달러어치의 LUNA로 교환하지 못할 수 있음을 의미하기 때문이다”

실제로 5월 10일에는 LUNA 시가총액과 UST 시가총액의 역전이 발생하게 되면서 시장 심리에 악영향을 끼치게 됩니다. 5월 10일 LUNA의 시가총액은 9일 220억 달러에서 100억 달러로 120억 달러 감소합니다.

LUNA Circulating Martketcap Chart. 출처: Messari

반면, 5월 10일 UST의 시가총액은 9일 180억 달러에서 140억 달러로 40억달러 감소하면서 LUNA 시가총액을 역전합니다.

UST Circulating Martketcap Chart. 출처: Messari
💡 DSRV's Tip; UST/LUNA 간 시가총액이 역전되는 것은 뱅크런을 의미하는 건가요?

UST/LUNA 시가총액의 역전이 반드시 UST의 뱅크런을 의미하는 것은 아닙니다.

이론적인 상황을 생각해보겠습니다. 가정은 다음과 같습니다:
1. 어떠한 상황에서도 1 UST를 1달러어치의 LUNA로 교환할 수 있다.
2. LUNA를 무제한으로 발행함으로써 가치가 무한히 낮아질 수는 있지만 '0'이 되지는 않는다.

차익거래자는 UST의 1달러 페깅이 무너진 상황에서 1 UST를 1달러어치의 LUNA로 교환하고, 교환한 LUNA를 다시 매도하여 차익을 실현할 수 있습니다. 이때 차익거래자는 (1달러 - UST의 현재 가격)만큼의 이익을 얻을 수 있습니다. 차익거래자들의 이러한 거래는 UST의 공급을 줄이고, LUNA의 공급을 늘립니다.

결국 UST가 1달러보다 하락한 경우의 페깅은, UST의 공급을 줄여감으로써 맞추어져 갑니다. UST의 공급을 줄이는 것은, 차익거래자들로 하여금 1달러어치의 LUNA로 교환해줄 수만 있다면 가능해집니다. LUNA의 가치가 0이 되지 않는 이상 즉, LUNA에 대한 최소한의 수요가 발생하고 있는 이상, LUNA의 발행량을 무한히 늘려가면 차익거래자들에게 "1 UST = 1달러어치의 LUNA"의 교환비율을 보장할 수 있고, UST의 총공급을 계속해서 축소시킬 수 있습니다. 페깅 알고리즘이 작동하며 차익거래자들에게 꾸준히 거래의 인센티브를 제공하는 이상, UST의 1달러 페깅은 이론적인 가정하에서는 다시 회복됩니다.

그러나 현실에서는 위와 같은 이론적인 가정을 사실로 확정하기 어렵습니다. 그 이유는 다음과 같습니다:
1. 테라 마켓 모듈은 '가상 유동성 풀'의 개념을 통해 특정 기간 동안 새로이 발행될 수 있는 LUNA의 개수에 사실상 제한을 둡니다. 따라서 메커니즘 상 무제한으로 LUNA를 발행할 수 없으며, 1 UST를 1달러에 미치지 못하는 가치의 LUNA로 교환할 수밖에 없는 상황이 발생할 수도 있습니다.
2. LUNA는 테라 블록체인의 거버넌스 토큰으로, 무제한 발행할 경우 테라 블록체인의 보안에 심각한 악영향을 끼칠 수 있습니다. 따라서 LUNA 발행량을 무한히 늘리는 것은 현실적으로 많은 문제를 발생시킬 수 있습니다.
3. LUNA의 가치는 0이 될 수 있습니다. LUNA의 신뢰가 크게 하락하여 상장이 폐지되는 등 거래가 어느 순간부터 발생하지 않는다면, LUNA의 가치는 0이 됩니다.

따라서 이론적으로는 '모든' UST가 LUNA로 교환될 수 있지만, 현실적으로는 확정하기 어렵습니다.

5월 11일 — 테라 거버넌스 제안, 가상 유동성 풀 규모 확대

5월 11일 Binance BTC/BUSD 15m Chart. UTC +09:00 기준. 출처: Binance.

Binance UST/BUSD 15분 차트 기준, 5월 10일 오후 3시 45분경 UST는 다시 0.949달러까지 회복합니다. 그러나 다시 오후 4시 30분경 0.224달러까지 하락하면서 UST 안정성에 대한 신뢰가 큰 폭으로 깨지기 시작합니다. 이에, UST 페깅을 다시 회복시키기 위한 목적의 거버넌스 제안이 다음과 같이 제안됩니다.

테라 거버넌스 프로포절 #1164: Help UST Pegging: Adjustments to Mint/Burn Parameters. 출처: Terra Station

다음은 상기 제안 전문에서 발췌한 일부입니다. 거버넌스 제안의 전문은 12번 주석에서 확인할 수 있습니다.[12]

“Allow more efficient UST burning and LUNA minting, will in the short term put pressure to LUNA price, but will be an effective way to bring UST back to peg, which will eventually stabilize LUNA price.”
: “UST 소각과 LUNA 발행은 단기적으로 LUNA 가격을 하락시키겠지만, UST 1달러 페그를 다시 회복시키기에는 효과적인 방법일 것이다. UST가 회복되면 LUNA 가격 또한 안정될 것이다.”

“Yes, billion of UST will be burned, and LUNA will be diluted significantly. Nevertheless, there are no limit in LUNA supply, this market mechanism will actually work to bring stable UST and stable LUNA price (although likely at lower price point for LUNA).”
: “수십억 개의 UST가 소각될 것이고, LUNA는 [새롭게 주조된 토큰들에 의하여] 크게 희석될 것이다. 그럼에도 LUNA 공급량에는 제한이 없고, (LUNA 가격은 더 낮아지겠지만) 이러한 페깅 메커니즘은 결국 장기적으로 UST와 LUNA 가격을 안정시킬 것이다.”

정상적인 시장 상황에서 사용자는 테라의 마켓 모듈을 통해 1 UST를 1달러어치의 LUNA로 교환할 수 있습니다. 그러나 시장에 패닉이 온 당시와 같은 상황에서는 테라 마켓 모듈의 가상 유동성 풀이라는 개념으로 인해 1 UST를 1달러어치보다 부족한 양의 LUNA로 교환해야 하는 상황을 낳아 알고리즘이 제대로 동작하지 못하는 상황을 야기하였습니다. (자세한 내용은 아래 DSRV’s Tip에서 설명합니다.) 위의 거버넌스 제안은 더 많은 양의 LUNA를 주조할 수 있도록 시스템 설정을 변경하여 1 UST를 최대한 1달러와 가까운 가치의 LUNA로 교환할 수 있도록 하자는 내용입니다. 즉, LUNA의 공급을 크게 늘려 LUNA의 가격을 희생하는 대신, 크게 폭락하고 있는 UST의 가치를 어떻게든 다시 1달러로 회복시키자는 것입니다.

💡 DSRV's Tip; 테라 마켓 모듈의 가상 유동성 풀 (Virtual Liquidity Pools)

많은 분이 테라의 마켓 모듈을 통해 1 UST를 1달러어치의 LUNA로 무조건 교환할 수 있다고 알고 있지만, 사실은 그렇지 않습니다. 테라의 마켓 모듈의 교환은 가상 유동성 풀(Virtual Liquidity Pools)을 통해 이루어집니다. 가상 유동성 풀은 실제 토큰으로 구성된 것이 아닌 토큰을 발행 및 소각할 비율을 산정하기 위해 인위적으로 설정된 크기의 풀이며, 풀의 크기는 교환이 발생함에 따라 변화합니다. 가상 유동성 풀은 사전에 설정된 크기로 한정되어 있고 1164번 거버넌스 제안에 따르면 당시 가상 유동성 풀이 발행할 수 있는 LUNA의 한계수량은 293M LUNA 정도였습니다. 따라서 당시처럼 가상 유동성 풀이 감당할 수 있는 유동성을 넘어설 정도로 비정상적으로 많은 UST가 단기간 내 소각되고 LUNA가 주조돼야 하는 상황을 맞이하면, 마켓 모듈은 더이상 1 UST로 1달러어치의 LUNA를 교환할 수 없게 됩니다. 보다 자세한 기술적인 내용은 본문의 아래쪽 부록에서 설명합니다.

Do Kwon이 직접 이 거버넌스 제안에 대한 지지를 표명하면서 힘을 얻었지만, 이 제안이 통과되어 실제로 실행되기까지는 코스모스 SDK에 기반한 테라 블록체인의 특성상 7일의 시간이 필요하기 때문에 실제로 제때에 이 제안이 실행되지는 못했습니다. 당시 시장이 패닉한 상황에서 7일을 기다려야 하는 메커니즘은 상황의 긴급성과는 괴리를 보였습니다.

5월 13일 — 테라 블록체인 운영 중지 및 재운영

LUNA Circulating Martketcap Chart. 출처: Messari

5월 13일, LUNA의 가격이 크게 하락함에 따라 9천백만 달러까지 시가총액이 폭락하게 됩니다. 일전 DSRV의 지분증명 컨텐츠에서도 다루었듯, 위임지분증명(DPoS)을 사용하는 블록체인의 검증인들은 지분증명의 개념에 따라 코인을 스테이킹하여 블록 생성 과정에 참여합니다. 위임지분증명을 사용하는 테라의 거버넌스 코인인 LUNA의 가치가 만약 폭락하게 된다면, 악의적인 주체가 적은 돈으로 더 많은 LUNA를 구매하여 네트워크에 스테이킹된 전체 LUNA의 수와 비교해 더 많은 지분을 확보하여 블록 생성 과정 개입을 통해 블록 생성을 멈추는 공격이 가능해집니다. 또한 거버넌스 제안을 공격의 목적으로 생성하고 막대한 지분으로 찬성표를 던져 해당 제안이 무조건 실행되도록 하는 거버넌스 공격 또한 가능해집니다. 이러한 공격들을 막기 위하여, 테라 블록체인이 일시적으로 멈추게 됩니다.

테라 블록체인을 정지시킨 이후, 검증인에게 추가적인 LUNA를 위임할 수 없도록 하는 패치가 적용됩니다. 검증인에게 LUNA를 더이상 위임할 수 없게 된다면, 높은 지분율로 블록 생성 과정에 개입하는 공격이나 거버넌스 공격 등이 어려워집니다. 블록 생성 및 거버넌스에 참여하기 위해서는 스테이킹된(즉, 검증인에게 위임된) 상태의 LUNA가 필요하기 때문입니다. 벨리데이터들에게 패치가 적용된 이후, 다시 블록체인 운영이 재개되었지만 얼마 가지 못해 다시 체인을 멈추게 됩니다.

다시 정지하게 된 테라 블록체인은 마켓 모듈을 사용한 on-chain swap 기능을 정지하는 패치를 적용하여 더이상의 UST 소각이나 LUNA 주조가 일어나지 않도록 코드를 수정합니다. LUNA의 인플레이션(추가 발행)을 막을 경우 (외부 시장 심리를 고려하지 않는다면) 공급량 증가에서 기인한 LUNA 가격의 추가적인 하락을 막을 수 있게 됩니다. 또한, 계속해서 늘어나는 LUNA를 매집하여 악의적인 공격을 시도하려는 주체를 저지할 수도 있습니다.

IBC 채널 또한 닫히게 됩니다. 테라는 코스모스 SDK 기반의 체인으로, Osmosis 등의 다른 코스모스 계열의 블록체인으로 IBC라는 통신 모듈을 통하여 테라의 자산(테라 스테이블코인, LUNA 등)을 전송할 수 있었습니다. IBC가 계속해서 동작하는 경우, 테라 블록체인 상의 여러 자산들이 다른 체인으로 전송돼 추가적인 피해가 발생할 수 있습니다. 예를 들어 테라 블록체인으로부터 전송된 자산을 페어로 가지고 있는 테라 외부 블록체인의 유동성 풀에서 지속적으로 swap을 발생시켜 다른 페어의 자산에도 악영향을 미칠 수 있습니다. 두 번째 정지 이후에는 IBC 채널을 닫음으로써 테라의 자산을 테라 블록체인에 묶어둠으로써 테라와 연결된 코스모스 블록체인 생태계를 보호하고자 하였습니다.

실제로 코스모스 생태계에 연관된 토큰들의 유동성 풀을 제공하는 DEX인 Osmosis 체인과 같은 경우 디페깅된 UST로 인한 피해를 최소화하기 위한 하드포크 제안이 통과되어 실행되기도 했습니다. UST 및 LUNA를 페어로 포함하였던 유동성 풀의 경우, 가격이 폭락하고 있는 UST 및 LUNA를 풀에 공급하고 다른 페어의 자산을 유동성 풀 밖으로 빼내는 swap이 발생하여 유동성 풀의 가치가 지속적으로 하락하였고, 밖으로 빼낸 토큰을 통한 차익거래를 수행하여 토큰의 가치가 낮아지는 현상이 발생하였습니다. 또, 이로 인해 풀에 유동성을 공급하고 있던 유동성 제공자(LP, Liquidity Provider)의 지분의 가치 또한 하락하여 유동성 제공자가 많은 손해를 감수하게 되었습니다. 즉 요약하자면, UST의 가격이 계속해서 폭락하는 와중에 IBC를 통해서 코스모스 생태계 내 다른 체인들로 UST가 공급돼, 다른 체인 또한 연쇄적으로 리스크에 노출돼 피해를 입게 된 것입니다.

Osmosis 거버넌스 프로포절 #226. 출처: Mintscan

마무리

지금까지 테라 스테이블코인과 관련된 일련의 사건들을 정리해보았습니다. 앞으로 테라 블록체인의 향방에 대해서도 많은 논의가 이루어지고 있지만, 가치판단의 영역에 가까워 본문에서는 다루지 않겠습니다. 다만 이 보고서를 통해 우리가 되짚어볼만한 요소들을 나열해보도록 하겠습니다.

  1. 알고리즘이 원활하게 작동하지 못했습니다. 시장이 패닉한 상황에서 UST 소각 수요가 테라 블록체인의 마켓 모듈이 감당할 수 없는 수준으로 늘어나게 되자, 더이상 UST와 LUNA간 교환 매커니즘이 최초의 설계 의도대로 작동하지 않았다는 것을 확인할 수 있었습니다. (1 UST와 1달러 어치의 LUNA를 교환할 수 없게 되었습니다.)
  2. 동시에, 체인의 거버넌스와 크게 연관있는 LUNA의 발행을 증가시켜 UST 소각 수요에 대응하고자 했던 매커니즘은 이번과 같은 패닉 상황에서 거버넌스 토큰의 하이퍼인플레이션을 초래하여 블록체인의 보안에 악영향을 끼칠 수 있었습니다. 이 과정에서 테라 커뮤니티에는 ‘LUNA의 발행량을 폭발적으로 늘림으로써 UST 페깅을 회복시키는 속도를 빠르게 할 것인가’와 ‘거버넌스 토큰인 LUNA의 발행량을 크게 늘리지 못하도록 막아 블록체인의 보안성을 유지할 것인가’ 사이의 딜레마가 발생하였습니다.
  3. 어떠한 거버넌스 제안이던 통과시키는데 일률적으로 필요한 7일이라는 기간은 이번 사건처럼 긴박한 사안을 결정하기에는 터무니없이 긴 시간이었습니다.
  4. 브릿지 및 (코스모스 생태계의) IBC로 연결된 외부 블록체인의 생태계까지 충격의 여파가 고스란히 전달되는 상황은 확장성과 탈중앙성을 높였지만, 보안성이 만족되지 못했던 블록체인 트릴레마의 담론을 떠올려볼 수 있었습니다.
  5. 앵커 프로토콜에 예치돼있었던 UST와 이번 사태의 연관성을 미루어 보았을 때, 특정 토큰의 Tokenomics가 어떻게 흘러가고 있는가, 어떤 DApp들이 해당 토큰의 수요를 견인하고 있는가, 사용처가 한 곳에 몰려있지는 않은가 등 토큰의 중앙화 정도를 고려해야 한다는 인식이 대두되었습니다.

더이상의 “Too big to fail”은 블록체인 업계에서 주장될 수 없는 상황을 맞이했습니다. 지금까지 긴 글 읽어주셔서 감사드리며, 본문이 여러분께서 최근의 상황을 객관적으로 이해하는데에 조금이라도 도움이 되기를 바랍니다. DSRV Research는 정보 불균형을 해소하기 위하여 앞으로도 꾸준히 노력하겠습니다.

Author
Seokjoong Yoon of DSRV, Research Associate (Twitter @imlearning_eth)

Reviewed by
Owen Hwang of DSRV, Research Manager (Twitter
@journeywith_eth)
Youngbin Park of DSRV, Research Associate (Twitter @bin0_0bin)

부록: 테라 마켓 모듈 가상 유동성에 대한 기술적인 설명

💡 부록; 테라 마켓 모듈의 가상 유동성 풀 (Virtual Liquidity Pools)

테라 거버넌스 1164번 제안은 "BasePool"의 크기를 기존 50,000,000SDR에서 100,000,000SDR로 증가시키고 "PoolRecoveryPeriod"를 기존 36블록에서 18블록으로 줄이는 것을 제안합니다. 보다 자세히 이해하기 위해서는 테라 마켓 모듈의 가상 유동성 풀에 대하여 알아보아야합니다. 선수 지식으로는 CPMM(Constant Product Market Maker)에 대한 이해가 필요합니다.

CPMM은 X*Y=K의 공식에 따라 작동합니다. 여기서 X는 풀 내 A토큰의 수량, Y는 풀 내 B토큰의 수량입니다. 두 토큰의 수량의 곱은 항상 K라는 상수로 일정해야합니다. 테라의 가상 유동성 풀에서는 이와 달리 X와 Y를 토큰의 수량으로 결정하지 않고, X와 Y의 가격으로 결정한다는 점에서 '가상' 유동성이라는 개념을 사용합니다.

테라 가상 유동성 풀에서는 다음과 같은 공식이 성립합니다[13]:
K = TerraPool * LunaPool * (LunaPrice/SDRPrice) TerraPool의 Terra란, 테라 스테이블코인 중 하나인 SDT를 말하며, SDT는 IMF 특별인출권인 SDR의 가격과 같습니다.

따라서 (SDTPrice/SDRPrice)는 1이기 때문에 위의 공식은 아래와 같이 다시 적을 수 있습니다:
K = TerraPool * (SDTPrice/SDRPrice) * LunaPool * (LunaPrice/SDRPrice) 즉, K = (TerraPool의 SDR가치) * (LunaPool의 SDR가치)입니다. X*Y=K에서 X와 Y가 수량이 아닌 가격이라는 것은 바로 이런 의미입니다.

여기에서 TerraPool은 거버넌스를 통해 변경이 제안되었던 "BasePool"에 TerraPoolDelta를 더한 값과 같습니다.[14] 즉, 다음과 같습니다.
TerraPool = BasePool + TerraPoolDelta

LunaPool은 다음과 같습니다.
LunaPool = (BasePool)^2/TerraPool

즉, BasePool의 값이 커질수록 더 큰 유동성 풀에서 swap하는 것과 같은 효과가 나기 때문에, price impact를 줄일 수 있으며 (즉, 1 UST를 최대한 1달러 어치에 가까운 LUNA와 교환할 수 있으며), 더 많은 UST를 LUNA로 교환시킬 수 있게 됩니다.

TerraPoolDelta는 swap에 의한 TerraPool과 LunaPool의 규모 변화를 반영하기 위한 변수입니다. 따라서 큰 규모의 swap이 일어날수록 TerraPoolDelta값이 커집니다. TerraPoolDelta값은 매 블록마다 그 값이 조금씩 줄어드는데, 이는 Terra와 LUNA의 유동성을 다시 1:1로 점점 회복시켜 1 UST를 1달러 어치의 LUNA로 교환할 수 있도록 합니다.

1164번 거버넌스 제안에서 제안한 "PoolRecoveryPeriod"가 줄어들수록, TerraPoolDelta가 다시 0으로 리셋되는 속도가 빨라져 Terra와 LUNA의 유동성을 다시 1:1로 회복시키는 속도가 빨라지는 효과가 있습니다.

--

--

Seokjoong Yoon
DSRV
Writer for

Blockchain Researcher @DSRV. Twitter @imlearning_eth