플레어 네트워크의 FTSO : 투표, 위임, 보상 그리고 WFLR

플레어 네트워크(Flare Network)의 오라클 Flare Time Series Oracle 동작 방식. Wrapped FLR(WFLR)을 이용한 투표와 위임

--

오라클 그리고 플레어네트워크의 FTSO

스테이블 코인을 비롯하여 디파이에서는 암호화폐의 가격을 정확하게 가져오는 것이 중요한 문제입니다. 암호화폐의 가격은 보통 오라클 시스템을 통해 오프체인에서 온체인으로 가져옵니다. 신뢰할 수 없는 가격 정보는 플래시론 공격과 같은 취약점을 만들게 되고, 이는 오라클의 가격 정보에 의존하는 디파이가 동작할 수 없도록 만듭니다. 이 글에서는 플레어 네트워크에 탑재된 오라클 방식인 FTSO (Flare Time Series Oracle)의 동작 방식을 분석해 보도록 하겠습니다.

TL;DR

  • FTSO는 플레어 네트워크의 가격 오라클 메커니즘입니다.
  • FTSO에서는 FLR과 F-Asset 토큰 홀더들이 제출한 값으로 가격을 결정합니다.
  • 가격을 결정하기 위해 가중 중간값(weighted median)을 사용합니다.
  • 실제 가격을 제출할 수 있는 권한은 WFLR 토큰을 통해 이루어집니다.
  • FLR 및 F-Asset 토큰 홀더들은 WFLR의 위임 기능을 통해 가격을 직접 제출하지 않고 다른 가격 프로바이더에게 위임할 수 있습니다.
  • 가격 프로바이더(Price Provider)들은 토큰 홀더로부터 권한을 위임받아 가격 정보를 대신 제출할 수 있습니다.
  • FTSO에서 가격 제출은 커밋 후 제출 스키마를 사용합니다.

FTSO 기본 동작 방식

플레어 네트워크의 FTSO에서는 각 자산의 가격 추정치를 FLR 및 F-Asset 토큰 홀더들이 제출합니다. 이 글에서는 간단한 설명을 위해 FLR 토큰 홀더들이 FTSO 가격을 제출하는 케이스만 다룹니다.

FLR 토큰 홀더들이 가격을 제출하고 나면, 제출된 추정치들을 모아서 (가중 추정) 분포를 만듭니다. 만들어진 분포에서 25%의 낮은 가격과 25%의 높은 가격을 잘라냅니다. (truncated)

잘라내고 남은 가격을 가지고 가중 중간값(weighted median)을 계산하여 오라클 가격으로 결정합니다. 가격을 결정하는데 기여한 (즉, 상위 25%에서 하위25% 사이의 가격을 제출한) 토큰 홀더들에게 보상을 지급하게 됩니다.

이때 FTSO 참여(+데이터 프로바이더 참여)에 대한 보상률은 FLR 토큰 연간 발행량의 10%로 초기 설정되어 있으며 거버넌스 투표를 통해 변경할 수 있습니다.

FTSO 동작 방식 예시

좀더 쉬운 이해를 위해 간단하게 예를 들어 보겠습니다.

  • 앨리스(Alice) : 10 투표 권한(FLR, 보팅 파워)으로 가격 3에 투표
  • 밥(Bob) : 20 투표 권한으로 가격 4에 투표
  • 찰리(Charlie) : 30 투표 권한으로 가격 5에 투표
  • 이브(Eve) : 20 투표 권한으로 가격 6에 투표

먼저 제출된 가격으로 가중 추정 분포를 생성합니다(그림의 왼쪽). 가격 제출에 관여한 투표 권한이 총 80 FLR이므로, 상위 25%의 20 FLR과 하위 25%의 20 FLR에 해당 하는 부분을 잘라냅니다. 위 그림의 회색 부분이 잘라낸 부분에 해당합니다.

잘라내고 남은 총 40 FLR(그림의 녹색)로 제출한 가격을 가지고 오라클 가격을 산출합니다. 40 FLR 중 10 FLR은 가격 4에 투표했고, 40 FLR 중 30 FLR은 가격 5에 투표했습니다. 따라서 다음과 같이 오라클 가격을 계산할 수 있습니다.

(1개의 가격 4)와 (3개의 가격 5)의 중간값 = 5

이때 가격 4에 투표된 20 FLR 중 밥의 투표 기여분은 10 FLR 만큼(50%)이고, 가격 5에 투표된 30 FLR 중 찰리의 투표 기여분은 30 FLR 만큼(100%)이 됩니다. 백서에 나온 공식에 따라 FTSO 보상은 다음과 같이 나누어 가지게 됩니다.

  • 앨리스 : 보상 없음 (제출한 투표가 모두 하위 25%에 해당)
  • 밥 : 총 FTSO 보상의 33.3% (제출한 투표 중 50%만 기여)
    = 0.5 / (0 + 0.5 + 1.0 + 0)
    = (10/20) / {(0/10 + 10/20 + 30/30 + 0/20)}
  • 찰리 : 총 FTSO 보상의 66.6% (제출한 투표 모두 기여)
    = 1.0 / (0 + 0.5 + 1.0 + 0)
    = (30/30) / {(0/10 + 10/20 + 30/30 + 0/20)}
  • 이브 : 보상 없음 (제출한 투표가 모두 상위 25%에 해당)

(위의 보상 설명에 잘못된 부분이 있어 수정되었습니다. 2021–07–21)

FTSO 동작 방식에 대한 좀 더 자세한 내용이 궁금하시다면 아래 링크에서 더 자세한 설명을 확인할 수 있습니다.

투표와 위임을 위한 Wrapped FLR (WFLR) 토큰

위에서는 간단히 설명하기 위하여 FLR 토큰을 이용하여 FTSO 투표를 하는 것으로 설명하였지만, 실제로 투표 권한을 갖는 토큰은 WFLR 토큰입니다.

WFLR 토큰은 일반적인 ERC20 토큰입니다. 다음과 같은 특징을 가지고 있습니다.

  • FLR 토큰과 1:1로 교환 가능
  • WFLR이 있어야 FTSO 투표에 참여 가능
  • 1 WFLR이 1개의 투표 권한(보팅 파워)을 가짐

WFLR의 또 하나의 특징은 투표 권한 위임이 가능하다는 점입니다. 즉, WFLR을 보유하고 있는 상태에서 다른 가격 프로바이더에게 가격 정보 투표 권한만 위임할 수 있습니다. 가격 위임은 최대 3개(의 주소)까지만 가능합니다.

WFLR의 기능을 정리하면 위의 그림과 같이 나타낼 수 있습니다. FLR의 예치와 회수를 통해 WFLR로 1:1 교환이 가능하며, WFLR 토큰을 보유하고 있는 상태로 투표 권한만 위임할 수 있는 기능을 내재하고 있습니다.

FTSO 프로바이더 (FTSO Provider)

FTSO 가격 제출은 몇 분에 한번씩 이루어집니다. 가격 제출을 할 때마다 트랜잭션이 필요한데, 사람이 몇 분마다 한번씩 계속 트랜잭션 서명을 하는 것은 굉장히 어려운 일입니다.

그래서 오라클 가격을 계속 제출해주는 FTSO 가격 프로바이더에게 위임이 필요합니다. 이때 WFLR 토큰의 위임 기능을 사용하게 됩니다.

FTSO 가격 제출 방식

FTSO에서 가격 제출은 커밋 후 제출 (commit and reveal) 스키마를 사용합니다. 이런 방식을 이용하는 이유는 먼저 제출한 가격 프로바이더의 가격을 보고 뒤에 가격을 제출하는 프로바이더가 그 가격에 맞추어 보상을 얻으려는 시도를 막기 위함입니다.

실제 동작하는 방식은 이렇습니다. 제출하려는 가격의 해시값만 먼저 제출하고(커밋), 모든 가격 프로바이더가 해시값을 제출하고 난 이후에 실제 가격을 제출합니다. 제출한 가격이 먼저 제출한 해시와 맞지 않으면 잘못된 가격 제출로 기각됩니다.

FTSO 가격 제출 및 권한 위임 예시

그럼 마지막으로 예시를 통해 정리해 보도록 하겠습니다.

  1. 앨리스는 10 FLR을 보유하고 있습니다. 앨리스에게 위임된 투표 권한은 없습니다.
  2. 앨리스는 자신의 10 FLR을 WFLR로 교환합니다. 10개의 WFLR을 가지고 있게 되므로 앨리스의 보팅 파워는 10이 됩니다.
  3. 밥은 30개의 WFLR을 가지고 있습니다. 따라서 밥의 보팅 파워는 30이 됩니다.
  4. 밥은 자신이 가진 보팅 파워의 50% 앨리스에게 위임하기로 합니다. 앨리스의 보팅 파워는 25가 되고, 밥의 보팅 파워는 15가 됩니다.
  5. 밥이 20개의 WFLR 토큰을 더 받았습니다. 이제 앨리스의 보팅 파워는 35가 되고 밥의 보팅 파워는 25가 됩니다.

위의 예시에서 볼 수 있듯이 위임하는 사람이 추가적인 WFLR 토큰을 보유하게되면 컨트랙트는 자동으로 위임한 비율에 맞추어 보팅 파워를 자동으로 업데이트 합니다. 또한, 위임은 수량 기반이 아니라 비율 기반으로 처리된다는 점이 중요합니다.

마치며

간략하게 플레어네트워크의 FTSO 동작 방식과 FTSO 위임을 위한 WFLR 토큰에 대해 알아보았습니다. 플레어네트워크에 대해 이해하는데 조금이라도 도움이 되셨기를 바랍니다. :)

참고자료

--

--

Minho, Yoo | D'CENT wallet & WEPIN wallet
D’CENT Wallet

Interested in Blockchain Tech. Developing Cryptocurrency wallet D’CENT and WEPIN. Learning is best way to improve.