성장 스토리 ⭐️
home
📕

Ch 2. 온체인 마켓

앞선 페이지에서 테라 프로토콜은 “온체인 마켓을 통해 시장에서의 테라 가격과 상관없이 1 TerraSDR와 1 SDR 값어치의 루나를 교환”할 수 있도록 하고, 이를 통해 테라 공급량을 조절한다고 했습니다. 이는 테라 가격 유지를 위해서 매우 중요한 원칙입니다. 왜냐하면 이 교환 비율이 지켜지지 않는다면 테라가 목표 가격에서 벗어났을때 시장 참여자들에게 차익 거래 기회를 제공해줄 수단이 없어지고, 테라 공급량 조절도 정상적으로 작동하지 않을 것이기 때문입니다. 그렇기 때문에 테라 프로토콜은 오라클 모듈과 Voting 과정까지 둬서 이를 지키려 합니다.
하지만 테라 프로토콜은 온체인 마켓을 설계하고 구현할때 이것만큼이나 중요한 원칙들을 설정하였습니다. 테라 프로토콜 파라미터의 업데이트도 밑에서 언급할 원칙에 따라서 진행될 정도로 이 챕터에서 다루어지는 내용은 테라 프로토콜에서 중요한 역할을 하고 있습니다. 심지어 이 원칙들을 위해서 1 TerraSDR과 1 SDR 어치의 루나 교환이라는 교환 비율이 깨지기도 할 정도로요.

원칙

원칙 1. 온체인 마켓의 목적은 테라 수요 변화에 따라 테라 공급량을 조절하는 것이다.

그래서 테라 프로토콜은 테라를 실제로 활용하기 위한 스왑이나 테라 가격 유지를 위한 스왑은 장려하되, 투기적인 목적에서 혹은 오프체인과 온체인 상의 시세 차이를 노리고 실행하는 온체인 스왑은 제재하고 있습니다. 테라 미디엄 아티클에서 환율 차익을 목적으로 한 온체인 스왑은 억제하려고 하지만, 송금 목적의 테라 스테이블 코인 간 스왑은 장려하고 있기도 하고요. 그리고 온체인 마켓에 부과되는 수수료 종류(Tobin Tax, Spread Fee)들은 모두 위의 원칙도 고려하여서 설정되었습니다.
이 원칙은 테라 미디엄에 “테라 공급량 변화는 테라 활용 수요에 의해서만 일어나야 한다.” 고 적혀있는 것을 조금 더 풀어서 적은 것입니다. 테라 프로토콜 온체인 마켓의 최우선 목표는 테라 가격 조절을 위한 테라-루나의 교환과 테라 공급량 조절에 있습니다. 실제로 테라 디스코드 커뮤니티, 그리고 리서치 리포트를 보면 가격 유지와 상관없이 단순히 테라와 루나를 교환할 때는 온체인 마켓이 아니라 테라 스왑 혹은 오프체인 마켓을 사용하라고 제안하고 있기도 하고요. 온체인 마켓 스왑은 테라 프로토콜을 대상으로 진행된다는 점에서 이는 매우 중요한 원칙입니다. 왜냐하면 참여자들이 온체인 마켓을 투자 수단으로 사용하여 테라 가격 유지와는 상관없이 테라와 루나를 발행한다면, 이는 테라 생태계 구성원들의 손실을 초래할 수 있기 때문입니다.

원칙 2. 테라 발행, 소각에 의해 테라 네트워크가 불안정해지면 안 된다.

이 원칙은 한번에 너무 많은 테라가 발행되거나 소각되면 안 된다는 것을 의미합니다(그리고 이는 차익 거래자들의 얻는 차익의 규모를 어느 정도는 제한하는 효과도 가집니다). 예를 들어, 현재 TerraSDR 가격이 1.02 SDR이고 시장에 총 공급되어 있는 TerraSDR 양이 100개라고 해봅시다. 이 때 시장에 공급되어야 하는 TerraSDR 개수는 2-5개 정도일 겁니다. 하지만 차익 실현의 기회가 열렸다고 아무런 제약없이 시장 참여자들이 많은 양의 TerraSDR를 발행하고 시장에 풀어버린다면 테라 가격은 오히려 더 불안정해질 겁니다. 그래서 테라 프로토콜에서는 테라 공급량과 상관없이 짧은 기간동안 한 방향으로만 테라가 발행, 소각되는 것을 막으려 합니다.

원칙 3. 테라 가격과 상관없이 1 TerraSDR과 1 SDR를 교환할 수 있도록 노력한다.

밑에서 설명드리겠지만 구현 특성상, 테라-루나 온체인 마켓에서 (1 TerraSDR  1 SDR 가치의 루나)의 교환 비율이 깨지기도 합니다. 그래서 이 원칙에서는 ‘노력'한다는 표현을 썼습니다. 그럼에도 장기적으로는 (1 TerraSDR  1 SDR 가치의 루나)의 교환 비율이 제공되어야만 테라 가격을 적절하게 유지할 수 있습니다.

원칙 정리

위 원칙들을 기반 테라 프로토콜은 온체인 마켓에 다음의 역할을 할 수 있는 장치를 설정해두었습니다. 이 페이지에서 설명드리는 온체인 마켓의 작동 방식과 파라미터들도 아래의 요소들을 고려하여서 설정되었습니다.
[원칙1] 단순히 토큰 간 교환을 위해 온체인 마켓을 사용하는 것에 대해서는 비용을 지불하게 한다.
[원칙2] 한번에 일어나는 너무 큰 규모의 테라-루나 교환에 대해서는 큰 비용을 지불하게 한다.
[원칙2] 테라→루나, 루나→테라 중 한 방향으로만 교환이 일어날 때에 큰 비용을 부과하게 한다.
[원칙3] 장기적으로는 (1 TerraSDR  1 SDR 가치의 루나)의 교환 비율이 회복되어야 한다.

작동 방식

공식

테라 프로토콜은 유니스왑의 constant product Automated Market Maker(AMM)와 비슷한 방식으로 온체인 마켓을 구현하였습니다. 단, 여기서 사용한 AMM은 실제로 토큰이 양쪽 풀에 들어가있는 AMM 풀이 아니라, 테라 프로토콜이 정해놓은 파라미터에 의해서 교환 비율이 결정되는 가상의 AMM입니다. 프로토콜에서 사용하는 AMM 공식은 다음과 같습니다.
Constant_Product=PoolTerra  PoolLuna  (PriceLuna/PriceSDR)Constant\_Product = Pool_{Terra}\ *\ Pool_{Luna}\ *\ (Price_{Luna}/Price_{SDR})
테라 프로토콜은 위 식에서 PoolTerraPool_{Terra}PoolLuna  (PriceLuna/PriceSDR)Pool_{Luna}\ *\ (Price_{Luna}/Price_{SDR})의 값이 같아지도록 유지하고 있는데, 이는 온체인 마켓에서 1 TerraSDR가 1 SDR 가치의 루나와 교환될 수 있도록 하는 풀 사이즈 값입니다. 그래서 실질적으로는 Constant_ProductConstant\_Product의 값이 (PoolTerra)2(Pool_{Terra})^2로 관리되고 유지됩니다.

교환에 따른 풀 사이즈 변경

이미지 자체 제작
유니스왑 AMM과 마찬가지로 시장 참여자들의 차익 거래 과정에서 테라와 루나 교환이 일어나면, 교환 내용에 따라서 PoolTerraPool_{Terra}PoolLunaPool_{Luna}의 크기가 달라지게 됩니다. 달라진 비율에 따라서 온체인 마켓 상의 테라-루나 교환 비율도 바뀌게 되고요. 이 때문에 이 페이지 시작할 때 언급한 “온체인 마켓을 통해 시장에서의 테라 가격과 상관없이 1 TerraSDR와 1 SDR 값어치의 루나를 교환할 수 있게 한다”는 것이 언제나 보장되지는 않습니다.

온체인 마켓 AMM 풀 사이즈의 복구

온체인 마켓 스왑에 의해 변경된 풀 사이즈와 교환 비율이 계속해서 지속될 경우, 온체인 마켓은 테라 가격 유지 역할은 못하게 됩니다. 이 때는 온체인 마켓이 제공하는 테라-루나 교한 비율이 오프체인 마켓과 테라-루나 교환 비율이 결국엔 같아져서, 온체인 마켓도 또 다른 하나의 테라-루나 마켓 메이커로 전락해버리기 때문입니다. 그래서 프로토콜은 테라 풀 사이즈 복구 주기(PoolRecoveryPeriod)마다 AMM 양 쪽의 풀 사이즈를 본래 크기로 초기화시키는 작업을 합니다. 이를 통해 온체인 마켓에서 테라와 루나의 적절한 교환 비율(1 TerraSDR  1 SDR 가치의 루나)이 장기적으로는 보장되게 합니다.

관련 파라미터

온체인 마켓 AMM이 테라-루나 교환 기능을 담당하는 만큼, 여기서 등장하는 파라미터들 대부분은 테라 발행, 소각의 유동성과 관련됩니다. 만약 온체인 마켓의 유동성이 아주 크다면 테라 차익 거래자들은 아무리 큰 규모의 거래를 해도 (1 TerraSDR  1 SDR 가치의 루나)의 교환 비율을 보장받을 수 있습니다. 그에 따라 짧은 시간동안 많은 양의 테라가 발행되고 소각되는 것이 가능해지고요. 하지만 온체인 유동성을 무한히 크게 잡는다고 좋은 것은 아닙니다. 온체인 마켓의 유동성이 오프체인 루나 마켓의 유동성보다 크다면, 온체인에서 차익을 실현할 때의 기대 수익이 오프체인에서 가격을 조작하는 비용보다 더 커지기 때문입니다. 이는 오라클 조작 공격으로도 이어지게 됩니다. 이 섹션에서는 각 파라미터가 테라 온체인 마켓 유동성과 어떻게 연결되는지 설명합니다.

테라 풀 사이즈(PoolTerra)Pool_{Terra})

풀 사이즈(PoolTerraPool_{Terra})는 테라 프로토콜의 파라미터로서 네트워크에서 매우 중요한 역할을 합니다. 풀 사이즈 값의 설정 목적은 한번에 이루어지는 온체인 스왑 규모가 너무 커지거나, 온체인에서 한 방향으로만 거래가 너무 몰릴 때 스왑 비용을 증가시키는 데에 있습니다. 유니스왑 AMM과 마찬가지로 테라에서도 풀 사이즈에 따라 테라-루나 스왑의 슬리피지가 달라지기 때문입니다.
풀 사이즈가 너무 클 경우에는 아무 슬리피지 없이 한 방향으로 테라-루나 거래를 지속할 수 있다는 점에서 온체인 마켓 테라 발행 유동성도 너무 커져버립니다. 이는 앞에서 설명드린 오라클 가격 조작 공격 위험으로 이어집니다. 반대로 풀 사이즈가 너무 작을 때도 문제가 발생합니다. 이때는 테라 가격이 패깅 가격에서 벗어났을때 온체인 마켓이 충분한 양의 테라를 발행, 소각해주지 못합니다. 왜냐하면 테라-루나 스왑에 따른 슬리피지가 커져서 테라 가격 유지를 위해 차익 거래를 하는 사용자들이 손해를 보게되기 때문이죠. 이와 같이 풀 사이즈를 통해 테라 프로토콜의 온체인 마켓이 적절한 속도로 테라 공급량을 조절하기 때문에, 목표치에 따라 테라 풀 사이즈를 설정하는 것은 매우 중요합니다.
참고로 테라 커뮤니티에서는 온체인 마켓의 유동성을 오프체인 마켓의 유동성보다 약간 작게 설정하려고 합니다. 테라 커뮤니티에서 제시된 한 의견에서는 오프체인 마켓 호가 데이터를 이용해서 매도 규모에 따른 슬리피지 비율을 계산하고, 이 중에서 가장 유동성이 작은 마켓의 슬리피지를 기준으로 유동성 풀 사이즈를 선정하자고 하였습니다.
그 외에도 풀 사이즈 파라미터는 투기 목적의 차익 거래자들의 수익을 제한하는 역할도 하고 있습니다. 풀 사이즈에 따라 테라-루나 거래에 슬리피지가 발생하기 때문에, 투기 목적의 차익 거래자들은 프론트 러닝 공격 기회를 포착하더라도 제한된 규모의 수익만 얻을 수 있습니다.
풀 사이즈는 테라 생태계 성장에 따라서 점점 설정값이 더 커지고 있습니다. 이는 자연스러운 변화입니다. 왜냐하면 테라 생태계가 확대됨에 따라 테라 공급량이 늘어나있고, 적절한 가격 유지를 위해서 더 큰 규모의 테라 공급량 변화가 필요해지기 때문입니다.
풀 사이즈 값은 수수료 파트에서 설명할 Spread Fee와 밀접한 관계를 갖습니다.

테라 풀 사이즈 복구 주기(PoolRecoveryPeriodPoolRecoveryPeriod)

위에서 언급했듯이, 테라 풀 사이즈는 일정 주기마다 (1 TerraSDR  1 SDR 가치의 루나)의 교환 비율을 제공해주는 초기 풀 사이즈로 복구됩니다. 이에 따라서 테라 차익 거래자들도 다시 테라 가격에 따라서 테라 공급량을 적절히 조절해줄 수 있게 됩니다. 즉, 테라 풀 사이즈 복구 주기는 차익 거래에 따라 테라 공급량이 조절되는 속도를 조절해주고, 이런 측면에서 이 파라미터는 온체인 마켓의 유동성 조절과 밀접한 관계가 있습니다.
이 복구 주기가 너무 짧다면 온체인 마켓이 무한대의 유동성을 가지게 되는 것과 마찬가지가 되어서 위에서 언급한 풀 사이즈 유동성이 너무 클 때 발생하는 부작용들이 발생하게 됩니다. 반대로 이 주기가 너무 길다면 이는 또 유동성 부족으로 이어질 수 있습니다. 왜냐하면 패깅 비율에서 벗어난 테라-루나의 교환 비율이 온체인 마켓에서 오래동안 유지될 것이고, 그에 따라 테라 차익 거래자들이 차익 거래자들이 온체인 마켓을 통해 충분한 양의 테라를 발행, 소각하지 못하게 되기 때문입니다. 따라서 이 값 또한 적절한 수준에서 설정해야 합니다.
복구 주기 파라미터는 테라 생태계 성장에 따라서 설정값이 계속해서 짧아지고 있습니다. 테라 커뮤니티는 목표로 하는 온체인 마켓 유동성이 있을때, 시뮬레이션을 통해 적절한 복구 주기를 찾고 있습니다.

최소 Spread Fee(minSpread)

최소 Spread는 온체인 마켓의 테라 매수 호가와 매도 호가 간의 최소 간격을 의미합니다. 예를 들어 최소 Spread Fee가 2%라는 것은, 온체인 마켓의 TerraSDR 구매자는 여기서 TerraSDR를 1.02 SDR 이하로는 못 사들이고, 반대로 TerraSDR 판매자는 온체인 마켓에다가 자신의 TerraSDR를 0.98 SDR 이상의 가격으로는 못 판다는 것을 의미합니다(이 부분은 리서치 페이퍼를 기준으로 설명드린 건데(테라 리서치 리포트 - Terra Constant-Product Swaps Proposal), 코드를 봤을때는 테라 리서치 리포트의 설명과 또 다르게 되어있는것 같아서 더 확인해봐야합니다. 여기서는 전체적인 개념만 설명하겠습니다).
최소 Spread Fee는 TerraSDR 가격이 SDR 가격 부근에서 형성되고 있을때 온체인 마켓에서 테라-루나 스왑하는 비용을 증가시킵니다. 그리고 이는 테라 가격이 적정 수치를 유지하고 있을때 온체인 마켓의 유동성을 떨어트립니다. 왜냐하면 최소 Spread Fee에 의해서 오프체인 마켓에서 테라-루나를 교환하는 것이 온체인 마켓보다 비용면에서 유리해지기 때문이죠. 이를 통해 최소 Spread Fee는 온체인 마켓이 테라의 가격 유지가 아니라 테라-루나의 마켓 메이커로 활용되는 것을 방지하는 역할을 합니다.
최소 Spread Fee는 또 다른 형태로 위의 역할을 합니다. 유니스왑에서는 AMM 알고리즘을 통해서 임의의 두 코인간 적절한 거래 비율을 결정하였다면, 테라 프로토콜에서는 스테이블 코인 가격이 패깅 화폐 가치로부터 벗어났을때 스테이블 코인의 공급량을 조절하기 위해 AMM을 사용하고 있습니다. 그렇기 때문에 테라 프로토콜은 온체인 마켓에서의 테라 스테이블 코인 구매자와 판매자에게 다른 교환 비율을 제시하여야 합니다. 예를 들어 오프체인에서의 TerraSDR 가격이 0.95 SDR이고, AMM에서 루나로 계산되는 TerraSDR의 균형가도 똑같이 0.95 SDR이라고 해봅시다. 이때, 온체인 마켓에서 시장 참여자들에게 TerraSDR 판매를 0.95 SDR에 하고 있으면 온체인 마켓은 테라 가격 조정과는 상관없는 명목으로 테라를 발행하고 있게 됩니다. 즉, 온체인 마켓이 오프체인 마켓 같은 테라-루나 마켓 메이커로 전락해버리는 거죠. 테라 프로토콜은 최소 Spread Fee를 둬서 이를 막고 있습니다.
최소 Spread Fee는 초기에 최소 값이 2%로 설정되어 있었습니다. 그러다보니 테라 블록체인 참여자들이 패깅 화폐 가치에서 2% 범위 내에서는 테라 가치 유지를 위해 마켓 스왑을 할 이유가 없었고, 패깅 화폐 2% 범위 내에서는 테라의 가격을 패깅 화폐로 맞추는데 어려움이 있었습니다. 그에 따라 최소 Spread Fee를 0.5%로 낮추자는 제안이 제시되었고 현재는 최소값이 0.5%로 설정되었습니다.
위의 역할 외에도, 최소 Spread Fee는 루나 가격 급변 시기에 발생하는 프론트 러닝 공격을 방지하는 역할도 합니다. 예를 들어, TerraUSD 가격이 1 USD에 잘 패깅되어있고 온체인 마켓에서 1 루나로 10 TerraUSD를 발행할 수 있다고 하겠습니다. 그리고 오프체인 마켓에서의 루나 가격이 변동하여 루나 가격이 9.98 USD로 떨어졌다고 해봅시다. 이때 투기 목적의 차익 거래자는 프론트 러닝 공격을 통해 온체인에서 루나를 테라로 스왑하고 일정 시간 이후에 다시 그 테라를 루나로 바꿈으로써 차익을 실현할 겁니다. 하지만 최소 Spread Fee가 적용된다면 위 공격은 수익성이 없어지게 됩니다.

온체인 마켓 정리

유동성이 너무 클 경우 발생하는 문제
한번에 발행되고 소각될 수 있는 테라 양이 너무 많아짐에 따라 테라 공급량이 급변하게 되고, 이는 오히려 테라 네트워크의 안정성에 악영향을 줌
(테라 가격 유지와 상관없이) 투기 목적으로 온체인 마켓을 이용한 차익 거래자들이 너무 큰 수익을 얻게 되고, 이는 루나 스테이킹 인센티브를 불안정하게 함
유동성이 너무 작을 경우 발생하는 문제
테라 가격 변동에 따라 충분한 양의 테라가 공급, 회수되지 못해서 테라 가격 회복이 힘들어짐
테라 커뮤니티에서 온체인 마켓 유동성 관리하는 방식
오프체인 루나, 테라 유동성을 모니터링하면서 천천히 유동성을 키워나감
효과
목적
풀 사이즈
AMM 알고리즘에 의해 거래 규모, 온체인 마켓 현황에 따른 슬리피지를 발생
[원칙2] 온체인 마켓 테라 발행 유동성 조절 [원칙2] 투기 목적의 차익 거래자 수익 제한
복구 주기
일정 주기마다 풀 사이즈를 초기값으로 복구시켜 차익 거래자들이 온전히 테라-현물 화폐 차익을 누릴 수 있게함
[원칙2] 온체인 마켓 테라 발행 유동성 조절 [원칙3] 테라-루나 적절 교환 비율을 보장
최소 Spread
오프체인 테라 가격이 목표 가격 근처에서 형성되어있을때 온체인 마켓을 통한 테라-루나 교환의 비용 증가
[원칙1] 온체인 마켓이 테라-루나 마켓 메이커로 전락하는 것 방지 [원칙1] 프론트 러닝 공격 방지