뱅커 (Bancor)알고리즘에 대해서 알아 보기 Part. 1

Juno
EOS Chrome
Published in
10 min readNov 27, 2018

--

안녕하세요 IBCT, EOS CHROME 팀의 Juno입니다. 이번 포스팅에선 뱅커 알고리즘에 대해서 알아보도록 하겠습니다.

이번 뱅커 알고리즘 시리즈는 총 3개의 파트로 나누어져 있습니다.

Part 1. 뱅커 알고리즘에 대한 전반적인 설명과 Connector Weight 분석

Part 2. 뱅커 알고리즘을 통한 매수/매도 절차 설명

Part 3. 뱅커 Relay에 대한 설명

Part 1. 뱅커 알고리즘에 대한 전반적인 설명과 Connector Weight 분석

최초의 뱅커 알고리즘은 이더리움 네트워크 기반으로 출시 되었습니다. 실제로 2017년 ICO를 진행을 하였고 약 $ 150M 에 달하는 금액을 모금하여 화제가 되기도 하였습니다. 뱅커 알고리즘은 사용자들이 정해진 수학 공식에 맞게 자신이 보유한 토큰을 다른 토큰으로 중재자 없이 교환할 수 있게 합니다.

그렇다면 뱅커가 기존의 P2P거래와 다른것이 무엇인지 의문이 들 수 있는데요. P2P(Peer-to-Peer)거래 혹은 OVC (Over-the-Counter)거래 같은 경우엔 토큰 판매자가 토큰을 판매 한다는 글을 게시하고 가격, 수량 등 거래에 필요한 정보를 기입합니다. 이후 구매자가 나타나면 구매가 체결되는 형태를 띄게 됩니다. 이 경우 판매자는 구매자가 나타날때까지 기다려야 하므로 곧바로 자신의 토큰을 판매 하고자 하는 사람에게는 별로 효율적인 거래방법은 아닙니다. 뱅커의 경우 토큰을 판매하고자 하는 사람은 뱅커 스마트 컨트랙트로 자신의 토큰을 넣고 특정 뱅커 스마트 컨트랙트에 보관중이 었던 다른 토큰을 받을 수 있습니다. 쉽게 비교를 하자면 P2P 토큰 거래 방식은 도떼기 시장에서 자신의 물건을 나열하고 구매자를 구하는 것이라면, 뱅커 알고리즘은 토큰을 넣으면 다른 토큰이 나오는 자판기라고 생각하시면 됩니다.

1개의 뱅커 알고리즘을 사용하여 분산화 거래소를 구축할 수는 없습니다. 따라서 새로운 개념인 Bancor Relay가는 개념이 필요한데요. 이 부분은 Part 2. 에서 보다 자세히 설명해 드리도록 하겠습니다.

Order Book 기반의 거래

우선 뱅커 알고리즘은 기존의 Order Book 기반의 거래소와는 또 다른 개념입니다. 거래소의 경우 매수자 매도자가 자신이 판매 혹은 구매를 원하는 가겨과 수량을 입력하여 주문을 Order Book에 기재하는 방식을 사용 합니다. 가상화폐 거래를 해 보신 분이라면 한번쯤은 보셨으리라 생각 합니다. 반면에 뱅커 알고리즘은 위에서 말한 자판기와 같이 스마트 컨트랙트를 대상으로 토큰을 사고 팔 수 있습니다. 결국 뱅커 알고리즘을 사용하게 되면 거래소의 오더북과 같은 많은 데이터를 관리할 필요가 없게 되는 것입니다.

그렇다면 예제를 통해 어떤 식으로 구매자/판매자가 뱅커 스마트 컨트랙트를 대상으로 토큰을 사고 파는지 알아보도록 하겠습니다. 설명의 단순화를 위해 몇 가지 가정을 하도록 하겠습니다.

예제: HIT 토큰과 비트코인

뱅커 알고리즘 Part 1,2,3모두 예제 1을 사용하여 설명해 드리도록 하겠습니다. 몇 가지 전제 조건은 다음과 같습니다.

첫째로, 시장에는 1000개의 가상의 HIT 토큰이 발행 되어있습니다. 둘째로, 뱅커 스마트 컨트랙트 안에는 250개의 Bitcoin이 저장 되어 있습니다. 그리고 셋째로, Connector Weight (CW)가 50%로 세팅이 되어 있습니다.

Connector Weight (CW)

Connector Weight이란 Bezelel님의 정의에 의하면 다음과 같습니다: “CW란 고정 상수 값으로 HIT 토큰의 총 발행량의 총 가치(시총) 대비 Connector 토큰인 Bitcoin의 리저브 보유 비율을 의미합니다.” 위의 정의를 좀 풀어서 설명해 보도록 하겠습니다. Connector Weight은 은행의 지급준비금과 같습니다. CW는 이미 발행된 1000개의 HIT 토큰의 가치를 현재 스마트 컨트랙트 안에 저장 되어있는 250개의 Bitcoin이 ‘보증’ 하는 개념입니다. 여기서 사람들이 헷갈려 하는 부분은 가치의 척도가 Bitcoin이기 때문에 그렇습니다. “1 비트코인이 도대체 얼만데?”라는 물음이 해결이 되지 않기 때문에 HIT의 가치를 Bitcoin으로 측정하는 것이 직관적이지 않을 수 있습니다. 만약 250개의 비트코인을 25,000원으로 대체 한다면 이해하기가 훨씬 쉽습니다. “발행된 1000개의 HIT토큰 가치를 스마트 컨트랙트 내에 저장된 25,000원이 보증한다.” 좀 더 이해가 되시나요?

CW가 50%라는 것은 1000개의 HIT 토큰의 50%의 가치를 25,000원으로 보증하는 것입니다. CW가 10%라면 1000개의 HIT 토큰의 10% = 25,000원으로 만들어 주는것입니다. 여기서 매우 중요한 점은 한번 정해진 CW는 상수 값으로 변하지 않고 고정 되어 있습니다. 뱅커 알고리즘을 디자인 할 때 개발자의 의도에 따라 이 CW 변수를 조절할 수 있습니다.

50%의 경우 500 HIT = 25,000원, 즉 1 HIT = 50 원

10%의 경우 100 HIT = 25,000원, 즉 1 HIT = 250 원

100%의 경우 1000 HIT = 25,000원, 즉 1 HIT = 25 원

참 쉽죠? 결과적으로 모든 변수가 동일할 때 CW의 값에 따라 1개의 HIT 값이 달라지는 것입니다. 뱅커 알고리즘에서 CW값이 바뀜에 따라 HIT 토큰 가격과 시장에 발행되는 HIT 양의 관계가 다음의 그래프들로 설명될 수 있습니다.

Connector Weight 값에 따른 토큰 가격과 토큰 발행량의 관계

그래프가 나오면 머리가 아파질 수 있습니다. 하지만 너무 걱정하지 마세요. 하나씩 제가 설명을 드리겠습니다. 하나하나 뜯어보면 그리 복잡한 그래프가 아닙니다.

CW: 100% (HIT 토큰의 한 단위: 1개)

우선 그래프 (a) CW = 100% 경우를 살펴 보겠습니다. 그래프 모양이 수평이네요. 그래프 모양이 수평이란 것은 매번 새로운 HIT 토큰이 발행 될 때 토큰 가격이 변하지 않고 고정된 가격으로 제공된다는 것입니다. CW이 100%라는 것은 발행된 모든 HIT토큰의 가치를 25,000원으로 보장한다는 것입니다. 1000개의 HIT토큰이 발행 되었기 때문에 1000 = 25,000원이 되며, 1개의 HIT토큰은 25원이 됩니다. CW가 100%인 경우 추가 HIT토큰을 발행 한다고 해도 HIT토큰의 가격엔 변화가 없습니다.

CW:50% (HIT 토큰의 한 단위: 1개)

다음으로 그래프 (b) CW = 50% 를 살펴 보겠습니다. 그래프 모양은 +의 기울기를 갖는 직선입니다. 이 뜻은 매 번 토큰을 발행할때마다 토큰의 가격이 상승한다는 뜻입니다. CW이 50%라는 것은 발행된 모든 HIT토큰의 가치 중 절반을 25,000원으로 보장한다는 것입니다. 1000개의 HIT토큰이 발행 되었기 때문에 이에 절반에 해당하는 500 = 25,000원이 되며, 1개의 HIT토큰은 50원이 됩니다. 다시 말씀드리면, CW가 50%인 경우 추가 HIT토큰을 발행하게 되면 가격이 일정한 비율로 상승하게 됩니다. 그리고 토큰 가격 변동은 위의 경우 0.05로 일정한 값을 갖게 되고 결국 양의 기울기를 가지는 직선의 형태를 띄게 됩니다.

CW:10% (HIT 토큰의 한 단위: 1개)

다음으로 그래프 (C) CW = 10% 를 살펴 보겠습니다. 위의 그래프를 보면 직선 그래프처럼 보이지만 토큰 가격 변동을 살펴보면 미세하게 가격 증가폭이 확대됨을 확인할 수 있습니다. 전반적인 그래프 모양은 기울기가 양의 값으로 서서히 증가하는 곡선의 형태를 갖고 있습니다. 이 뜻은 매 번 토큰을 발행할때마다 토큰의 가격이 상승한다는 뜻임과 동시에 가격 상승폭 또한 증가한다는 의미 입니다. CW이 10%라는 것은 발행된 모든 HIT토큰의 가치 중 10%를 25,000원으로 보장한다는 것입니다. 1000개의 HIT토큰이 발행 되었기 때문에 이에 10%에 해당하는 100 = 25,000원이 되며, 1개의 HIT토큰은 250원이 됩니다. CW가 10%인 경우 추가 HIT토큰을 발행하게 되면 가격이 상승하게 되며 가격 상승폭 또한 상승하게 됩니다. 위의 경우 2.24, 2.27, 2.29로 가격 상승 폭이 확대되는 것을 확인할 수 있습니다.

여기서 중요한 부분은 CW가 50%보다 작을 경우, 증가폭이 확대 되는 그래프 형태를 띄게 되는데 이는 Price Slippage과 관련이 깊습니다. Price Slippage는 가격 변동을 의미 합니다. CW가 작으면 작을수록 1개의 토큰을 매수 또는 매도 할때 가격 변동이 심해진다는 뜻입니다. 2018년 7월 경 EOS 네트워크에서 발생한 RAM MARKET문제도 CW 변수값과 관련된 것으로 판단이 됩니다. 결국BLOCK ONE의 CTO Dan Larimer는 자신의 Medium 글을 통해 뱅커 알고리즘을 사용하는 RAM 마켓의 가격 변동을 잡기 위해 CW값을 0.05%에서 50%로 수정 할 것을 커뮤니티에 제안하였습니다.

CW:75% (HIT 토큰의 한 단위: 1개)

그래프 (d) CW = 75% 를 살펴 보겠습니다. 위의 그래프를 보면 직선 그래프처럼 보이지만 토큰 가격 변동을 살펴보면 미세하게 가격 증가율이 낮아짐을 확인할 수 있습니다. 전반적인 그래프 모양은 기울기가 양의 값으로 서서히 감소하는 곡선의 형태를 갖고 있습니다. 이 뜻은 매 번 토큰을 발행할때마다 토큰의 가격이 상승한다는 뜻임과 동시에 가격 상승폭은 감소한다는 의미 입니다. CW이 75%라는 것은 발행된 모든 HIT토큰의 가치 중 75%를 25,000원으로 보장한다는 것입니다. 1000개의 HIT토큰이 발행 되었기 때문에 이에 75%에 해당하는 750= 25,000원이 되며, 1개의 HIT토큰은 33.33원이 됩니다. CW가 70%인 경우 추가 HIT토큰을 발행하게 되면 가격이 상승하게 되며 가격 상승폭은 줄어들게 됩니다. 위의 경우 0.014, 0.011, 0.011원으로 가격 상승 폭이 감소 하는 것을 확인할 수 있습니다.

결론

지금까지 뱅커 알고리즘에 대한 전반적인 설명과 뱅커 알고리즘의 중추적인 역활을 하는 Connector Weight에 대한 개념에 대해서 알아 보았습니다. 뱅커 알고리즘을 사용하고자 하는 개발자 및 기획자는 반드시 CW의 개념에 대해서 이해 하고 있어야 합니다. EOS RAM MARTKET 사태를 통해서 알 수 있듯이 CW 값이 합리적으로 책정되어 있지 않은 경우 시장에 심각한 가격 변동성이 존재할 수 있습니다. 이는 블록체인 생태계 전반에도 굉장히 좋지 않은 영향을 미치게 됩니다. 뱅커 알고리즘 시리즈 Part 2. 에선 실제로 뱅커 알고리즘을 대상으로 토큰을 매수 및 매도를 할 때, 알고리즘 내에 가격 및 수량이 어떤 방식으로 결정 되는지에 대해서 알아보도록 하겠습니다.

--

--