토르체인(THORChain): 멀티체인 유동성 프로토콜

100y
Decipher Media |디사이퍼 미디어
16 min readMar 19, 2022

본 아티클에서는 서로 다른 블록체인 네트워크에서 서로 다른 종류의 자산 교환까지 가능하게 하는 ‘토르체인(THORchain)’에 대해 살펴봅니다.글에 들어가기 앞서서, 필자는 토르체인과 아무런 연관이 없음을 밝힙니다.

Author
Jason of Decipher
Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)
Reviewed By 정재환

목차
1. 멀티체인(Multichain)의 시대
2. 기존 Bridge의 문제
3. 토르체인(Thorchain) 개요
4. 보안과 유동성의 밸런스 — Incentive Pendulum
5. 유동성 공급
6. Vault 관리 및 자산 거래 과정

1. 멀티체인(Multichain)의 시대

현재 블록체인 사용자들은 멀티체인(Multichain)의 시대에 살아가고 있습니다. 비트코인과 이더리움이 전체 암호화폐 시장에서 차지하는 비중이 독보적이었던 이전과는 달리, 테라(Terra)나 솔라나(Solana)와 같은 다양한 블록체인 네트워크들이 생기고 성장하였습니다. 현재는 비트코인(BTC)과 이더리움(ETH)의 시가총액 규모만 각각 $800B와 $350B에 육박하며, 이외의 블록체인 네트워크들도 2021년 이후로 급속도로 성장하며 상당한 유동성을 다루고 있기 때문에, 네트워크간 유동성 파편화는 더 이상 무시할 수 없는 문제가 되었습니다.

다양한 bridge 서비스 (Source: Dmitriy Berenzon)

유동성의 파편화 문제를 해결하기 위해 블록체인 네트워크간 자산 이동을 용이하게 해주는 다양한 bridge 솔루션들이 출시되어 현재 서비스 중에 있습니다. 다양한 블록체인 네트워크와 토큰이 존재하는 만큼, 정말 다양한 bridge 솔루션들이 존재하지만, 거의 모든 bridge들은 원리적인 측면에 있어 크게 2가지 분류에 속하게 됩니다. 하나는 Lock & Mint 방식이며, 다른 하나는 유동성 네트워크 방식입니다. 예시로 A체인에서 B체인으로 X토큰을 전송하는 과정을 통해 살펴봅시다.

Lock & Mint 방식 —사용자는 A체인에서 보내려는 양의 X토큰을 동결(Lock)합니다. Bridge에 존재하는 중개인들은 이 사실을 검증하고, B체인에서 사용자에게 동결시킨 토큰의 양과 동일한 가치를 갖는 일종의 바우처와 같은 X’ 토큰을 발행(Mint)하여 지급합니다. 여기서 X’ 토큰을 Wrapped 토큰이라고 합니다.

유동성 네트워크 방식 — 이 방식을 사용하기 위해서는 A체인과 B체인에 이미 막대한 양의 X토큰 유동성이 존재해야 합니다. 사용자는 A체인에 존재하는 X토큰 유동성 풀에 X토큰을 예치하면, 스마트 컨트랙트에 의해 자동적으로 B체인에 존재하는 X토큰 유동성 풀에서 X토큰을 지급 받을 수 있습니다.

더 자세한 분류와 원리에 대해서 궁금하신 분께서는 필자가 작성에 참여했던 디사이퍼 미디엄 [Bridge Series] (1편, 2편, 3편)를 읽어보시는 것을 추천 드립니다.

2. 기존 Bridge의 문제

하지만 [Bridge Series]에서 다루었던 bridge들도 한계가 존재합니다. 대부분의 bridge 솔루션들은 동일한 토큰을 한 체인에서 다른 체인으로 전송하는 역할을 수행할 뿐입니다. 만약 사용자가 한 네트워크에 소지하고 있는 토큰을 다른 네트워크에 존재하는 동일한 토큰이 아닌 다른 토큰으로 교환하고 싶다면 어떻게 해야할까요? 비트코인 네트워크의 BTC를 이더리움 네트워크의 ETH로 교환하는 것을 예시로 살펴보겠습니다.

먼저 중앙화된 거래소(Centralized Exchange)를 이용하는 방법입니다. 사용자는 비트코인 네트워크에서 거래소로 BTC를 전송한 후, 거래소 마켓 내에서 오더북을 통해 BTC를 ETH로 교환한 후 사용자의 이더리움 네트워크 상의 지갑으로 ETH를 전송할 수 있습니다. 이 방법은 편리하긴 하지만, 탈중앙을 추구하는 블록체인의 정신과 어긋나게 중앙화된 거래소를 이용한다는 모순이 존재합니다.

두 번째로는 위에서 언급한 bridge 서비스들을 이용하는 것입니다. 중앙화된 bridge인 WBTC를 이용하거나, 탈중앙 bridge인 Interlay를 이용하여 비트코인 네트워크의 BTC를 wrapping된 형태로 이더리움 네트워크에 전송한 후, Uniswap과 같은 탈중앙 거래소(DEX)에서 ETH로 교환하는 방법입니다. 중앙화된 방식이 아닌 탈중앙 bridge를 이용하긴 하지만, 교환 방식에 있어서 한 번에 진행하지 못 한다는 불편함을 지니고 있습니다.

위에서 제시한 두 가지 방법 이외에 좀 더 간편하고 탈중앙적으로 서로 다른 두 블록체인 네트워크에서 자산을 교환하는 방법은 없을까요? 이는 바로THORChain 프로토콜이 해결하고자 하는 문제입니다. THORChain은 중앙화된 거래소와 유사한 방식을 탈중앙적으로 사용하여, Wrapping 과정 없이 서로 다른 두 블록체인 네트워크에서의 native한 자산을 교환할 수 있게 하는 탈중앙 유동성 프로토콜이자 블록체인 네트워크입니다.

3. 토르체인(THORChain) 개요

토르체인(THORChain)은 자체 코인인 RUNE을 중심으로 작동되는 텐더민트(Tendermint)코스모스SDK를 기반으로 만들어진 탈중앙 유동성 블록체인 네트워크입니다. dApp이 아닌, 블록체인 네트워크의 형태를 띄고 있기 때문에 고유의 합의 알고리즘을 가지며 악의적인 노드가 전체의 1/3 미만으로 존재해도 안전한 텐더민트 BFT 모델을 사용합니다. 탈중앙 방식을 추구해야하기 때문에 자산을 관리하거나 트랜잭션에 서명을 하는 키 분배와 서명 방식이 중요합니다. 따라서 THORChain은 이를 위해 Threshold Signature Scheme(TSS)를 사용하고, 이는 뒤에서 자세히 설명하겠습니다.

Source: Messari

Uniswap이나 Pancakeswap과 같이 각 dApp이 속한 블록체인 네트워크 위의 자산만 거래를 가능한 것이 아닌, THORChain에서는 지원하는 모든 블록체인 네트워크의 native한 자산의 거래를 지원합니다. 자산의 교환이 이루어질 때에는, 서론에서 언급했던 Lock & Mint 방식과 달리, 인위적인 wrapping 과정 없이 연결된 각 블록체인 네트워크의 native한 자산의 거래를 가능하게 해주며, 유동성 공급자들이 이미 각 네트워크 별로 존재하는 vault에 native한 자산을 예치해두기 때문에 bridge의 작동 원리 중 유동성 네트워크 방식에 조금 더 가깝다고 할 수 있습니다.

4. 보안과 유동성의 밸런스 — Incentive Pendulum

Incentive Pendulum (Source: Finematics)

대부분의 블록체인 네트워크들이 겪는 딜레마가 있습니다. 바로 보안과 유동성의 밸런스입니다. 지분증명(PoS) 네트워크의 경우 네트워크에 스테이킹 된 native 토큰의 양이 그 네트워크의 보안 수준을 결정합니다. 따라서 네트워크 입장에선 사용자들의 코인 스테이킹을 장려하기 위해, 스테이킹 한 사용자들을 위해 블록 보상을 통해서 native 토큰을 mining할 수 있도록 합니다. 하지만 사용자 입장의 경우 네트워크에 스테이킹할 때 기대할 수 있는 수익보다, 네트워크 상의 어느 한 DEX에 유동성 공급을 하여 얻을 수 있는 기대수익이 크다면, 네트워크에 스테이킹할 유인이 떨어지게 되고, 그 네트워크는 보안에 위협을 받을 수 있습니다.

THORChain에서는 이 딜레마를 해결하기 위해 Incentive Pendulum이라는 메커니즘을 도입하였습니다. 이 메커니즘은 RUNE 토큰이 가장 최적의 상태(optimal state)로 사용되는 상황을 유도합니다. THORChain에서 정의하는 최적의 상태는 67%의 RUNE이 네트워크에 스테이킹 되고, 나머지 33%의 RUNE이 유동성 공급에 사용되는 상황입니다.

네트워크의 보안과 유동성의 최적 상태 (Source: THORChain DOCS)

만약 최적의 상태에 비해서 유동성 공급에 더 많은 RUNE이 존재한다면, 유동성 공급에 사용된 RUNE 코인의 양을 줄이고 네트워크 스테이킹을 장려하기위해, 네트워크는 RUNE 토큰을 스테이킹 하고 있는 노드 오퍼레이터들의 보상을 늘리고, 유동성 공급자들의 보상을 감소시켜 최적의 상태를 만듭니다. 반대로 유동성이 부족하고 네트워크에 스테이킹된 RUNE의 양이 많다면, 노드 오퍼레이터들의 보상을 줄이고 유동성 공급자들의 보상을 증가시킵니다. 아래의 표는 최적의 상태에서 벗어난 정도에 따른 노드 오퍼레이터와 유동성 공급자들에게 제공되는 인센티브를 나타냅니다.

네트워크 스테이킹 및 유동성의 비율에 따른 인센티브 (Source: THORChain Whitepaper)

최적의 상태에 도달했을 시에는 전체 네트워크의 수익의 67%는 노드 오퍼레이터들에게 제공되며 33%는 유동성 공급자들에게 제공됩니다.

Source: Messari

또한 재밌는 사실은, 이 때 RUNE의 가치를 예측할 수 있게 됩니다. RUNE의 경우 마켓에 상장되어 거래되는 것이기 때문에 투기적인 프리미엄(speculative premium)이 붙을 수 밖에 없지만, 그 외에 결정론적인 가치(deterministic value)를 보유하고 있습니다. 최적의 상태에서는 유동성 풀에서 RUNE과 다른 자산들이 1:1의 비율로 존재하며, 네트워크에 스테이킹 된 RUNE의 가치가 유동성 풀에 존재하는 RUNE의 가치보다 2배이므로, THORChain에 존재하는 RUNE의 가치는 네트워크에 존재하는 다른 non-native 자산들(ex. BTC, ETH, BNB …)의 3배로 결정되게 됩니다. 따라서 RUNE의 시가총액은 THORChain에 예치된 non-native 자산들의 가치의 최소 3배로 결정될 수 있습니다.

현재 글을 작성하고 있는 2022년 3월 20일 기준 RUNE을 제외한 TVL은 $158,344,480으로 RUNE의 최소 시총은 이의 3배인 $475,033,440이며, 현재 공급량인 300,755,174로 나누면 현재의 결정론적인 가치(deterministic value)는 1 RUNE = $1.58로 계산할 수 있습니다. 현재 RUNE의 시장 가격은 $9.32로 메인넷 출시, 합성자산 서비스인 THORSynths, 그리고 UST와 LUNA 도입에 대한 기대감으로 결정론적인 가치 외에 투기적인 프리미엄이 붙었다는 것을 알 수 있습니다.

5. 유동성 공급

사용자들이 THORChain을 이용해 서로 다른 두 블록체인 네트워크에서 native 자산을 교환하는 과정을 위해 각 블록체인 네트워크별로 충분한 유동성이 존재해야 합니다. 따라서 이를 위해 거래 수수료와 RUNE 코인을 인센티브로 제공하며 유동성 공급자들로부터 유동성을 확보하는 방식을 취하고 있습니다.

Uniswap과 같은 DEX와 달리 THORChain에 유동성을 공급할 시에는 모든 native 자산의 유동성 풀(liquidity pool)은 THORChain 자체 코인인 RUNE과 1:1 가치로 구성되도록 합니다. 예를 들어 THORChain에서 BTC, ETH, BNB, LTC를 지원하면 유동성 풀이 BTC-ETH, BTC-BNB, BTC-LTC, ETH-BNB, ETH-LTC, BNB-LTC처럼 총 6종류의 페어로 존재하는 것이 아닌, BTC-RUNE, ETH-RUNE, BNB-RUNE, LTC-RUNE과 같이 4 종류의 형태로 존재하게 됩니다. 이렇게 RUNE 코인을 모든 유동성 풀에서 공통 자산으로 사용하게 될 경우 유동성의 파편화를 방지할 수 있다는 이점이 있습니다.

Source: THORChain DOCS

THORChain에서 지원하는 블록체인 네트워크의 개수가 N개라고 가정할 때, 공통자산인 RUNE을 사용하지 않고 각각 모든 코인별로 유동성 풀을 만들 경우 N(N-1)/2 (=NC2)의 유동성 풀이 생기게 됩니다. 하지만 THORChain의 경우와 같이 RUNE이라는 공통자산과 1:1로 유동성 풀을 만들게 되면 딱 N개의유동성 풀만 형성되어 유동성을 더 효율적으로 사용할 수 있게 됩니다.

6. Vault 관리 및 자산 거래 과정

THORChain의 전체 작동 방식 (Source:THORChain DOCS)

서론에서 언급했듯이 THORChain은 중앙화 거래소(Centralized Exchange)와 비슷하지만, 가장 큰 차이점은 거래소 내 지갑을 탈중앙적으로 관리한다는 것입니다. 즉 중앙화된 주체가 지갑을 관리하는 것이 아니라, Threshold Signature Scheme (TSS)라는 방식을 사용하여 공동으로 각 네트워크별 자산의 지갑(vault)를 관리합니다. TSS는 2018년에 Genarro-Goldfeder이 제시한 scheme에 기반한 분산 서명 threshold 프로토콜입니다. 이는 다수의 노드들이 서로 협력하여 특정 서명의 유효성을 검증할 수 있는 퍼블릭키를 생성할 수 있게 합니다. 이러한 특성은 일정 수 이상의 노드들의 협력을 필요로 하기 때문에 중앙화의 문제로부터 오는 단일 장애점(single point of failure)을 방지할 수 있습니다.

Inbound Vault v.s. Outbound Vault (Source: Messari)

THORChain에서 vault는 크게 두 가지 종류가 있습니다. 사용자가 A토큰으로 B토큰을 교환한다고 가정할 시, 사용자로부터 A토큰이 들어오는 inbound vault (Asgard TSS Vault)와 B토큰을 사용자에게 출금해주는 outbound vault (Yggdrasil Vault)가 존재합니다. Inbound vault는 40개의 노드로 관리가 되며, Outbound vault는 이와 달리 오직 한 명의 서명자만 존재합니다. 한 명이 vault를 관리하게 되면 위험하다고 생각하실 수 있지만, 이는 [Bridge Series]에서 설명했던 Insured 방식을 사용하여, 경제적인 패널티 방식을 도입하여 방지합니다. Outbound vault에서 단일 서명자가 취급할 수 있는 자산의 양은 노드가 되기 위해 스테이킹한 자산 규모의 25% 수준으로 제한하여, 만약 이를 악의적으로 탈취할 경우 스테이킹한 자산에 패널티를 주어 더 큰 손실을 볼 수 있기 때문에 방지됩니다.

THORChain에서 자산의 거래는 노드들이 각 블록체인 네트워크 별 존재하는 vault를 관찰하고 트랜잭션을 검증하며 일어나게 됩니다.

Biforst protocol (Source: THORChain DOCS)

각 노드들은 1-way state peg 방식을 사용하는 Bifrost protocol을 사용하여 연결된 블록체인 네트워크의 inbound vault를 관측합니다. 만약 관측하고 있는 inbound vault로 자금이 들어오는 트랜잭션을 발견하면, 이를 THORChain 블록체인 네트워크로 witness transaction 형태로 전환하여 넘깁니다. Witness transaction의 파라미터들은 체인의 종류와 상관없이 다음과 같습니다.

Source: THORChain DOCS

THORChain에서는 Bifrost protocol로 부터 받은 pending 상태의 witness transaction을 노드들의 합의를 통해 검증하여 finalised 상태로 전환합니다. THORChain 자체에서는 State Machine이 finalised 상태의 witness transaction을 프로세싱 하여 트랜잭션의 순서나 상태변화를 기록하게 됩니다.

THORChain State Machine (Source: THORChain DOCS)

THORChain 내에서 finalised 상태로 전환된 transaction은 이제 다시 Bifrost protocol로 전송되어 서명을 거쳐 outbound vault에서 자산이 사용자에게 출금될 수 있도록 합니다. 여기서 서명은 위에서 언급했던 TSS 방식을 사용하는 module을 이용해 이루어지게 됩니다.

위에서 설명한 복잡한 자산 거래 과정을 간단히 정리하면 다음과 같습니다. 비트코인 네트워크의 BTC를 이더리움 네트워크의 ETH로 교환하는 과정을 통해 살펴보겠습니다.

Source: Messari
  1. THORChain의 노드들은 사용자가 BTC를 비트코인 네트워크의 노드들이 관리하는 BTC 주소 (vault)에 전송했음을 확인합니다.
  2. 노드들은 사용자의 BTC 전송이 유효한지 검증합니다.
  3. 유효하다면, 노드들은 공동으로 관리하고 있는 이더리움 네트워크의 vault에서 ETH를 사용자에게 출금하는 트랜잭션에 서명합니다.

위 과정과 같이 사용자는 UI/UX 측면에서 BTC를 전송하고 ETH를 받음에 따라 RUNE과 상호작용하는 과정이 없다고 생각할 수 있지만, 실제로는 위의 5. 유동성공급 파트에서 보았듯이 다양한 종류의 자산들은 RUNE과 함께 페어로 존재합니다. 따라서 실제 거래는 BTC-RUNE, RUNE-ETH 2개의 유동성 풀을 거쳐 일어나게 되며, 세부적으로는 BTC가 vault에 도착하면, RUNE은 BTC-RUNE 풀에서 RUNE-ETH 풀로 이동하고, 동일한 가치의 ETH가 사용자의 지갑으로 전송되게 됩니다.

Source: Finematics

--

--