EOS Ram 마켓 Bancor Relay Token 매커니즘 이해하기

in #eos6 years ago (edited)

EOS 메인넷 런칭 후 EOS Ram Market은 2주~3주 만에 엄청난 거래량을 보여주며 초기 램가격의 20~30배까지 급등하며 EOS 생태계의 핫이슈로 떠올랐습니다. 1%의 램거래 수수료는 EOS 체인 상에서 소각되는 효과가 있어서,  체인 상에서 매 블록마다 추가 발행되어 Block Producer 들에게 주어져 EOS 인플레이션을 일으키는 블록 보상 발행량보다 램거래 수수료의 소각량이 더 커져서 최근 EOS 체인은 디플레이션 상태가 되기도 했습니다. 퍼블릭 체인이 인위적인 토큰소각이 없이도 디플레이션 상태로 간다는 것은 정말 혁신적이라 할 수 있습니다. 

EOS Ram 마켓은 Bancor의 탈중앙화 토큰 거래 알고리즘(Bancor Relay Token)을 이용하여 구현되었는데요. [ https://storage.googleapis.com/website-bancor/2018/04/01ba8253-bancor_protocol_whitepaper_en.pdf ] EOS 홀더라면 최근 램 거래에 대한 이야기도 많이 듣고 누구나 한번쯤 램거래에 대해 고민도 해보셨을 테고 램마켓의 동작 원리에 대해서 많은 분들이 궁금해 하시고 계십니다만, Bancor기반 EOS Ram 마켓의 동작 원리를 쉽게 이해하기는 어렵고 많은 오해들이 있는 상황입니다. Bancor Protocol은 Daniel Larimer가 EOS 구현에 적극 도입하였고, 향후 EOS 내 탈중앙화 토큰 거래소 구현에 적극적으로 쓰일 예정이기도 합니다. 그래서 램마켓 동작에대해서 개념적으로 이해할수 있도록 도와드리는 글을 작성하게 되었습니다. 

Bancor 프로토콜 기반 탈중앙화 거래소가 기존 일반적인 거래소 동작 방식인 Buy/Sell 오더북(Order-Book) 기반 거래소와 다른점은 Buy/Sell 오더북이 없이 블록체인 상의 스마트 컨트랙트를 상대로 토큰을 사고팔 수 있다는 것입니다. 일정량의 거래 대상 토큰을 스마트컨트랙트가 리저브(Reserve)로 보유하면서 토큰 간 교환 요청시(buy/sell) 스마트 컨트랙트가 보유한 토큰 리저브에 있는 토큰을 거래 요청자와 교환을 하고 토큰 가격을 알고리즘적으로 자동으로 변경해주는 방식입니다. A 토큰을 B 토큰으로 교환하기 위해서는 A 토큰을 스마트컨트랙트에 보내면 스마트컨트랙트가 계산한 현재가격 비율로 스마트 컨트랙트가 리저브로 보유하고 있던 B 토큰을 받게되고 B토큰의 가격은 미리 정해진 알고리즘으로 변경(구매시 상승, 판매시 하락)하게 됩니다. B토큰을 스마트컨트랙트에 다시 팔면 A 토큰을 돌려받고 B토큰의 가격은 알고리즘에 의해 다시 떨어진 가격이 됩니다. 일반적인 거래소에서의 거래는 다른 누군가가 올려놓은 가격조건이 맞는 Buy/Sell 주문를 취해서 주문을 올린 거래자들끼리 거래가 이루어지는 것이라면, Bancor 기반 거래소는 블록체인 상의 거래소 로봇이 보유하고 있는 물량을 로봇에 탑재된 미리 정해진 알고리즘으로 계산한 가격으로 거래를 하는 것이라고 이해 할 수 있습니다. 기존의 거래소 시스템에 높은 트랜잭션 처리 성능이 필요한 이유는 오더북을 관리해야하기 때문인데 (Buy Order / Sell Order / Cancel Order), Bancor 기반 거래소는 오더북이 없이 실제 거래만 처리하면 되기 때문에 불필요한 트랜잭션 없이 매우 효율적으로 거래소가 동작할 수 있습니다. 

Bancor Relay Token 매커니즘을 이해하기 위해서는 Bancor 백서에 설명된 기본 Building Block인 "Smart Token"을 이해해야 합니다. 

예를들어 설명하겠습니다. 스마트컨트랙트 상에서 발행되는 "SMART"라는 Smart Token이 있다고 합시다. SMART는 컨트랙트 상에 초기상태로 1000 SMART 가 발행되어 있고, SMART 토큰은 EOS 토큰을 가지고 스마트 컨트랙트를 통해 추가 발행(구매)할 수가 있습니다. 컨트랙트 초기 상태에 250 EOS가 리저브(Reserve)로 준비되어 있고 Connector Weight 는 50%로 설정되어 있습니다. Connector Weight(CW)는 Bancor를 이해하는데 핵심적인 파라메터인데요, CW는 "SMART" 토큰의 총 발행량의 총 가치(시총) 대비 Connector 토큰인 EOS 토큰의 리저브 보유 비율을 의미합니다. 이 CW는 고정된 상수값으로 SMART 토큰의 총 발행량과 EOS 토큰의 리저브 수량이 변경되더라도 항상 일정하게 유지되어야 하는 값입니다. 위 예에서 초기 상태에 SMART 토큰의 현재 공급량인 1000 SMART 가치의 50%를 250 EOS가 백킹(backing)하고 있고, SMART, EOS 량이 변화되더라도 킹 비율 50%는 항상 유지되어야 합니다. 그래서 총 발행량 1000 SMART의 가치는 500 EOS (250EOS(50%) *2)가 되어야 하고 초기상태의 1 SMART의 가격은 500 EOS / 1000 SMART = 0.5 EOS/SMART 가 되는 것입니다. Connector 토큰인 EOS 토큰을 리저브에 추가하면 SMART 토큰을 추가 발행하고 EOS 토큰을 리저브에서 삭제하면 SMART 토큰을 소각하여 발행량을 줄이는 것입니다. 컨트랙트 상에서 마음대로 발행하고 소각하는 이 Smart Token 모델이 이 자체로 거래소로 동작할수 있는지에 대한 의문이 드실텐데요. Smart Token 모델은 이 자체가 의미있는 거래소 컨트랙트가 되는 것이 아니고 실제 거래소 컨트랙트를 구현하는 Building Block이 되는 것입니다. 왜 그런지는 후반부에 설명을 드리구요. 지금은 Smart Token 모델이란 것이 Connector 토큰인 EOS를 넣으면 SMART 토큰을 추가 발행하고, SMART 토큰을 소각하면 Connector 토큰인 EOS토큰을 리저브에서 빼서 돌려주고, 정해진 Connector Weight 값(발행된 SMART 총 가치 대비 EOS 리저브 비율)이 일정하게 유지되도록 SMART 토큰 가격을 결정해서 추가 발행/소각을 하게 된다는 "수학적 모델"로 이해하시면 됩니다. 

이렇게 Connector Weight (리저브 비율)를 항상 고정된 값으로 유지시키도록 SMART 토큰의 총 발행량과 Connector 토큰인 EOS 토큰의 리저브 량, 토큰 가격을 조절하는 알고리즘(수식)을 유도해 낸 것이 Bancor의 업적!입니다. CW=50%로 유지할 때 SMART 토큰 총 공급량(x축) 대비 1 SMART 토큰의 EOS기준 가격(y축) 그래프는 아래와 같이 linear 그래프가 됩니다. CW 값이 50%보다 작으면 아래로 볼록한 곡선이 되고, CW 값이 50% 보다 크면 위로 불록하게 완만하게 증가하는 곡선이 되고 CW값이 100%가 되면 SMART 토큰 가치의 100%를 EOS 리저브로 보유해야하므로 1 SMART 토큰의 가격은 1 EOS와 동일한 상수 그래프가 됩니다. 

초기상태가 1000 SMART, 250 EOS 리저브를 가지고 있고 CW=50% 인 경우 그래프는 아래와 같습니다. 

SMART 공급량(x축) vs SMART 가격(EOS/SMART)(y축) 그래프와 x축 사이의 면적(0부터 현재 SMART 공급량까지의 적분값)은 현재 Connector 토큰(EOS)의 리저브량이 됩니다. [ SMART * (EOS /SMART) = EOS ] 공급량 vs 가격 그래프 상의 모든점은 정해진 CW값(50%)를 만족하게 됩니다. 위 그래프에서 초기(현재) 상태인 점 A 는 SMART 토큰 총공급량 1000 SMART 이고 EOS 리저브가 250 EOS (면적) 이고 가격이 0.5 EOS/SMART 이며, CW값은 EOS 리저브 / SMART 토큰 총가치 = 250 EOS / ( 1000 SMART * 0.5 EOS/SMART ) = 50% 가 됨을 확인할 수 있습니다. 상태 A에서 100 SMART를 추가 발행하기 위해서는 (상태 B로 이동) EOS 리저브를 52.5 EOS 만큼(면적) 더 증가시켜야 하고 가격은 0.55 EOS/SMART 로 변경됩니다. 상태 B에서도 마찬가지로 CW=50%가 유지가 되는 것을 확인할 수 있습니다. (250 EOS + 52.5 EOS) / (1100 SMART * 0.55 EOS/SMART ) = 50%. 이처럼 SMART 토큰을 더 발행(구매)하기 위해서는 그래프상에서 SMART 토큰의 공급량 값(x축 값)을 이동시킨만큼 추가로 늘어나는 면적만큼의 EOS 토큰을 리저브에 더 추가를 해야하고 공급량이 변화한 후의 SMART 토큰의 가격은 가격그래프상 이동된 위치로 증가합니다. 여기서 주의할 점은 토큰 변환이 일어난 후의 가격과 토큰을 변환한 주체가 실질적으로 적용받은 토큰 변환 가격이 다르다는 것입니다. 52.5 EOS를 투입하여 SMART 토큰을 구매한 주체는 실질적으로는 SMART 토큰 공급량이 1000일때부터 시작해서 미세한 양의 EOS를 투입하여 그래프상의 현재가격으로 미세한 양의 SMART토큰을 발급받고(미분), 이동된 가격을 기준으로 또 미세한 양의 EOS를 투입하여 미세한 양의 SMART 토큰을 발급받는 식으로 가격 변화를 적분하는 형태로 EOS 토큰이 투입되어야 하기 때문입니다. 위 예에서 52.5 EOS로 100 SMART를 발급받은 주체에게 (평균적으로) 적용된 가격은 52.5 EOS / 100 SMART = 0.525 EOS/SMART이지만 토큰 변환 처리후 가격은 0.55 EOS/SMART로 변경됩니다. 

반대로 SMART 토큰을 소각(판매)하면 SMART 토큰 공급량(x축 값) 값을 감소시키고 그에 따라 줄어드는 만큼의 면적에 해당하는 EOS를 리저브에서 제거할 수 있으며 가격은 그래프를 따라 감소합니다. 이렇게 EOS 리저브(면적)와 SMART 토큰 공급량(x값), SMART 토큰 가격(y값)이 CW값에 따라 결정되는 그래프 패턴에 따라 CW값을 일정하게 유지시켜주면서 서로 연결되어 값이 변화하게 됩니다. CW값이 50%가 아닌 경우는 직선 그래프가 아닌 곡선형태의 그래프를 따라 상태가 이동하게 됩니다. 

이렇게 Connected 토큰을 리저브에 추가할 때 발행되는 Smart Token의 양, Smart Token을 소각할 때, 리저브에서 반환되는 Connected Token의 양을 CW값에 따라 미분/적분이 적용되어 바로바로 계산할 수 있는 수식을 Bancor에서 유도하여 Bancor 백서에 수식이 제시되어 있습니다. (위의 예제(CW=0.5, 1000 SMART, 250 EOS 를 아래 수식에 대입해보시면 토큰량이 정확하게 계산되는 것을 확인하실수 있습니다..) 

100 SMART = 1000 SMART * [ ( 1 + (52.5 EOS /250 EOS) )^0.5 - 1 ] 

52.5 EOS = 250 EOS * [ ( 1 + (100SMART/1000SMART) )^2 - 1) ] 

위 수식의 유도과정은 별도의 Paper로 공개되어 있습니다. (고등학교 이과 수학의 미분적분을 잘 할 수 있으면 어느정도 이해할수 있습니다.) 

https://drive.google.com/file/d/0B3HPNP-GDn7aRkVaV3dkVl9NS2M/view ] 

Smart Token 기본 모델은  Connector 토큰 (리저브)을 투입하면 새로운 토큰이 자동으로 발행되기 때문이 이 모델만으로 거래소를 구현할수는 없습니다. 거래소에서 자동으로 토큰이 발행된다면 거래소가 아니고 기계에서 토큰이 생성되는 토큰 자판기가 되겠죠. 그런데 이 Smart Token 모델에 Connector 토큰을 두개를 연결하여 하나의 Connector토큰으로 부터 Smart Token을 발행하고 발행된 Smart Token을 다른 Connector 토큰으로 즉시 변환하면 두 종류의 토큰을 각각의 리저브를 유지하면서 토큰 거래소(변환) 스마트컨트랙트를 구현할 수 있습니다. 이것이 Bancor "Relay Token" 모델입니다. 

EOS Ram 마켓의 경우, EOS토큰을 "RAMCORE"라는 스마트토큰으로 순간적으로 변환 후 RAMCORE 토큰을 순간적으로 RAM토큰으로 변환하는 것입니다. (EOS 램마켓은 뱅코르 Relay Token을 구현한 것. 뱅코 백서 5.1 More Scalable and Reliable Token Markets) 

EOS 토큰 홀더가 RAM을 구매하기 위해서는, 자신의 EOS 일정량을 EOS Ram 마켓 시스템 컨트랙트로 보내서 스마트컨트랙트는 EOS 리저브를 늘려 RAMCORE 토큰을 추가 발행하고 (RAMCORE<->EOS 가격 그래프상 상태 이동(면적증가)), 발행된 RAMCORE 토큰을 즉시 소각하여 RAMCORE<->RAM Connector를 통해 RAM 토큰으로 변환 하는 것입니다.(RAMCORE<->RAM 가격 그래프 상 상태이동(면적 감소)) RAM을 보유한 사용자가 RAM을 판매하기 위해서는 반대로 사용자가 RAM토큰을 스마트컨트랙트로 보내서 RAM Connector 토큰 리저브를 늘려주고 RAMCORE 토큰을 발행한 후 즉시 RAMCORE 토큰을 소각하고 EOS 토큰으로 변환하여 램을 시스템에 판매한 사용자에게 EOS를 돌려주게 됩니다. 

RAMCORE <-> EOS 의 Connector Weight(CW)가 50%, RAMCORE <-> RAM의 CW가 50%로 설정되어 있다면, RAMCORE 스마트토큰 (Relay Token)의 총가치의 50%를 EOS 리저브가 담당하고 나머지 50%를 RAM 리저브가 담당하도록 가격변동 계산되며 RAMCORE 토큰은 발행 즉시 가상 토큰의 시총은 고정시키는 것입니다. CW를 10% 10% 씩 1:1 비율로 설정해도 효과는 같습니다. 

EOS(50%) <-> RAMCORE(100%) <-> RAM(50%) 

EOS 메인넷에 사용된 EOSIO 소스코드를 보면 램마켓 초기상태의 RAMCORE 총량은 100억개로 되어 있고 RAM 토큰 리저브 총량은 64기가 바이트, EOS 리저브 총량은 EOS 총량 10억개의 0.1%인 1M EOS로 설정되었습니다. 

RAMCORE 토큰은 변화가 없습니다(EOS 와 RAM 사이 이동의 매개체일뿐) RAM 구매,판매가 일어남에 따라 EOS토큰 리저브량과 RAM 토큰 리저브 량이 계속 변화하고 EOS/RAMCORE, RAM/RAMCORE 가격이 계속 변동되는 것입니다. 

EOS 뱅코르 백서보고 EOS RAM Market을 이해해보려고 할때 어려운 부분이 CW기준 Smart Token 가격 그래프가 EOS <-> RAM 그래프가 아니고 EOS<-> RAMCORE 또는 RAM <-> RAMCORE 그래프라는 것입니다. RAMCORE를 backing 하는 커넥터 토큰 두개(EOS, RAM)를 연결해야만 뱅코 거래소 컨트랙트가 구현되는 것입니다. 

EOS 리저브와 RAM 리저브가 토큰양이 고정된 RAMCORE 토큰의 시총을 정해진 일정 비율을 항상 담당해야 하므로, RAM 리저브가 줄어들면 줄어들수록(RAM이 많이 팔릴수록) EOS/RAMCORE 가격이 올라가고 RAM/RAMCORE 가격은 떨어지며, RAM이 100%에 가까이 판매됨에 따라 EOS/RAM 가격은 무한으로 발산하게 됩니다. CW=50%로 바꾼다고 해서 EOS/RAM 가격이 linear그래프가 되는 것이 아닙니다. CW값과 상관없이 한쪽 Connector Balance(리저브) 양이 작아질수록 가격은 급격하게 치솟게 됩니다. 

CW가 RAMCORE <-> EOS 50%, RAMCORE <-> RAM 50%인 경우, RAM 구매/판매가 일어날때 아래와 같이 EOS/RAMCORE 가격 그래프(선형)와 RAM/RAMCORE 가격 그래프(선형)가 서로 연동되어 EOS, RAM 리저브를 변동시키면서 EOS/RAMCORE, RAM/RAMCORE 가격이 변동하면서 EOS Ram 마켓이 동작하는 것을 상상해 보실 수 있습니다. 아래 두 그래프의 아래 면적이 각각 EOS 토큰 리저브(connector balance), RAM 토큰 리저브의 양입니다. 

EOS를 투입하여 새로 발행된 RAMCORE를 즉시 RAM토큰으로 변환하면 (RAM 구매), EOS/RAMCORE 그래프의 직선(CW=50%인경우) 기울기는 올라가고 RAM/RAMCORE 그래프의 기울기는 감소하여 EOS 리저브 증가, RAM 리저브 감소하며, EOS/RAMCORE 가격은 올라가고, RAM/RAMCORE 가격은 내려가며 EOS/RAM 가격은 올가가게 됩니다. 반대로 RAM을 투입하여 새로 발행된 RAMCORE를 즉시 EOS 토큰으로 변환하면 (RAM 판매), RAM/RAMCORE 그래프의 직선(CW=50%인경우) 기울기는 올라가고 EOS/RAMCORE 그래프의 기울기는 감소하여 RAM 리저브 증가, EOS 리저브 감소하며, EOS/RAMCORE가격은 내려가고, RAM/RAMCORE 가격은 올라가며 EOS/RAM 가격은 내려가게 됩니다. 

Bancor Smart Token, Bancor Replay Token, EOS RAM Market 이해해 도움이 되셨길 바라며, Up-vote 부탁드립니다!ㅎ 

------------------------------------------- 

Bezalel Lim 

CTO, Yosemite X Inc. https://yosemitex.com 

Yosemite X는 EOS, Stellar 블록체인을 모티브로 ICO없는 Fiat-Stable Coin 기반,  

PoW, PoS 보다 공정하고 합리적인 Proof-of-Transaction(PoT) 기반 Yosemite Public Blockchain을 개발하고 있습니다. 

Sort:  

상세한 설명 감사합니다. 잘읽었습니다!

@bezalel님 상세한 포스팅 감사합니다! 잘보고 풀봇, 팔로우, 리스팀하고 갑니다! :D 앞으로도 좋은 정보 많이 부탁드립니다!

Congratulations @bezalel! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

You published your First Post

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @steemitboard:
SteemitBoard World Cup Contest - The semi-finals are coming. Be ready!


Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes


Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

이오스 램 마켓 원리 설명 감사합니다. 👍

Congratulations @bezalel! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:
SteemitBoard World Cup Contest - The semi-finals are coming. Be ready!


Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes


Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

상세한 설명 감사합니다~
덕분에 반코에 대한 이해가 되어 가네요...^^

좋은 글 감사합니다~! 보팅하고 갑니다!

Congratulations @bezalel! You received a personal award!

1 Year on Steemit

Click here to view your Board of Honor

Do not miss the last post from @steemitboard:

Saint Nicholas challenge for good boys and girls

Support SteemitBoard's project! Vote for its witness and get one more award!


@bezalel, sorry to see you have less Steem Power.
Your level lowered and you are now a Red Fish!

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @bezalel! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!