2편: 메커니즘 최적화의 적용과 토큰 모델 설계 프로세스
앞서 메커니즘 최적화를 말했습니다. 그렇다면 메커니즘 최적화를 어떻게 블록체인에 사용할 수 있을까요? 개념적으로만 설명하면 잘 와닿지 않습니다.
이번 글에서는 탈중앙화 오라클의 예시를 가지고 최적화 문제를 풀어보겠습니다.
블록체인 상에 외부 데이터를 제공하는 주체를 오라클(Oracle)이라고 합니다. 이 오라클을 어떻게 하면 특정 주체가 컨트롤하지 않으면서 신뢰할 수 있는 데이터 공급원으로 쓸 수 있을까하는 것은 블록체인 설계 시 굉장히 중요한 부분입니다.
외부에서 발생한 데이터인 ‘서울의 평균 기온'을 블록체인에 기록하는 메커니즘을 만든다고 해볼까요?
먼저, 문제를 정의합니다.
꼭 문제 설정을 이렇게 해야하는 것은 아닙니다. 목적 함수와 제약 조건의 설정은 설계자의 재량에 달려있습니다.
다만 구체적이고 정량적일 수록 좋습니다. ‘탈중앙화'보다는 ‘단일 주체가 결과에 영향을 미칠 수 없어야 한다’가 낫고, ‘단일 주체가 결과에 영향을 미칠 수 없어야 한다’보다는 ‘특정 주체가 악의적이라고 했을 때 결과값이 3% 이상 바뀌어서는 안된다'와 같은 제약 조건이 더 좋다고 할 수 있습니다.
제약 조건을 더 잘 설정할 수도 있겠지만, 여기서는 설명이 목적이므로 이 정도로만 해보겠습니다.
자, 이 문제를 어떤 메커니즘으로 풀 수 있을까요? 저에게 가장 먼저 떠오른 것은 단순한 ‘오라클 선출’ 메커니즘입니다. Decision function과 Transfer function은 다음과 같습니다.
이런 식의 메커니즘을 설정했다고 가정해보겠습니다. 과연 우리가 설정한 제약조건을 만족시킬 수 있을까요?
오라클 선출 메커니즘에서는 오라클이 마음만 먹으면 결과를 얼마든지 조작할 수 있습니다. 선출이 얼마나 자주 될 것인지에 따라 다르겠지만 이 제약 조건은 만족시키기 어렵습니다.
사용자가 투표에 참여함으로 인해 얻을 수 있는 효용이 적습니다. 사용자가 투표에 참여함으로 인해 얻을 수 있는 효용이 적습니다. 어차피 투표를 참여해도 자신이 행사하는 영향력이 크지 않을 가능성이 높고, 또 특정 후보에게 유별나게 높은 선호를 가질 확률도 적습니다. 따라서 투표율이 낮을 수 밖에 없을 것으로 예상됩니다.
선출된 오라클은 일정한 양의 수수료를 받기 때문에, 유권자들이 자신을 선택하게 하기 위해서 뇌물을 줄 강력한 유인이 있습니다. 금권 선거가 가능한 것이죠.
이렇게 따져보니 ‘오라클 선출’ 메커니즘은 너무 나이브한 것 같습니다. 2번째 솔루션으로는 ‘Schelling coin’이라고 불리는 메커니즘을 사용해보겠습니다. (Scehlling coin은 2014년에 비탈릭 부테린이 쓴 ‘SchellingCoin: A minimal-trust Universal Data Feed’을 참고했습니다.)
이 경우 과연 제약 조건을 만족시킬 수 있을까요?
단일 주체가 값을 거짓으로 보고하더라도 중위값은 크게 바뀌지 않기 때문에 결과에 거의 영향을 미칠 수 없습니다.
담합의 유인은 없을까요? 담합을 해서 수익을 얻으려면, 담합한 사람들이 중위값을 맞추고, 다른 사람들이 중위값에서 벗어난 값을 말해야 합니다. 그러나 중위값의 경우는 특정 주체가 극단적인 값을 말한다고 해서 쉽게 바뀌지 않습니다. 매수해야할 주체가 훨씬 많아지고, 이 경우 얻을 수 있는 수익이 적어집니다. 따라서 담합이 어렵습니다.
그런데 참여 유인에서 약간 문제가 있습니다. 전략적인 참여자라면 보고에 참여하기 전에 득실을 따져볼 것입니다. 이 메커니즘에서는 다른 사람들이 나와 크게 다른 답을 말한다면 처벌받을 가능성이 있습니다. 이럴 땐 끝까지 다른 사람의 보고를 기다리는 것이 최선입니다. 어차피 일찍 말해서 보상이 더 큰 것도 아니니까요. 다른 사람들도 똑같이 자신이 마지막에 보고하기를 원합니다. 결과적으로 모두가 참여 안하는 방향으로 균형이 형성됩니다.
문제점이 발견되었으니, 다시 돌아가서 규칙을 살짝 수정해봅시다. 이번에는 앞서 말했던 쉘링 코인의 규칙에 딱 하나를 더 추가합니다.
선투표 할인(Early Voting Discount)
빨리 투표할수록 내야하는 보증금이 작아집니다.
선투표 할인을 사용하면 아까 말했던 행동을 방지할 수 있습니다. 빨리 투표할수록 이득이기 때문에, 만약 확신이 있다면 기다리지 않고 먼저 투표를 하겠죠. 아무도 투표하지 않는 문제를 막을 수 있습니다.
이렇듯 블록체인 위의 메커니즘을 최적화한다는 것은 끝없는 ‘설정-추론-변경'의 반복입니다.
메커니즘은 Decision function과 Transfer function으로 이뤄져 있습니다. 앞서 Schelling coin의 예시에서 Decision function은 ‘중위값’이었습니다. 하지만 이것을 ‘최대 최소를 제외한 평균값'으로, 또는 ‘최빈값'으로 바꿀 수도 있습니다. 얼마든지 다양하게 설정이 가능합니다.
Transfer function에서도 돈을 내는 부분을 일정한 가격으로 할 수도 있고, 일찍 투표하면 할인을 해줄 수도 있습니다. 또는 그전까지의 라운드에서 잘 맞췄으면 할인을 해주는 것도 가능하겠네요.
규칙을 설정하고 합리적 인간이 되어서 각 주체들의 행동을 예상해봅니다. 그 행동들이 과연 처음에 설정한 제약조건을 만족하면서 목적을 최대화할 수 있는지를 보는 거죠. 이 과정에서 가장 시간을 많이 쓰는 것은 ‘어뷰징 시나리오'를 생각해내는 것입니다. 탈중앙화 네트워크의 주체들은 자신의 이익을 극대화하기 위해 어떻게든 구멍을 찾아냅니다.
발견된 허점을 방어하기 위해서 다시 메커니즘의 규칙을 바꿔봅니다. 바꾸면 다른 쪽에 문제가 터집니다. 메커니즘 설계란 이런 허점을 최소화하기 위해 새로운 규칙을 생각해내고, 머리를 싸매는 일의 반복입니다.
물론 예시를 들었던 것보다 훨씬 더 많은 제약조건과 더 많은 규칙과 더 복잡한 상호작용을 고려해야 합니다. 완벽할 수는 없겠지만, 최대한 합리적으로 프로토콜을 설계하고자 하는 노력이죠.
메커니즘 최적화의 과정을 블록체인의 토큰 모델 설계에 적용해보았습니다.
토큰 모델 설계는 Agent를 정의하고, 최적화 문제를 설정하고, 메커니즘의 규칙 설정-변경을 반복하는 과정으로 표현할 수 있습니다.
실제 블록체인 서비스를 예시로 프로세스를 따라가 보겠습니다. 많은 분들에게 친숙한 ‘블록체인 기반 글쓰기 플랫폼’이 오늘의 예시입니다. 편의를 위해 이름은 ‘스띰’이라고 하겠습니다.
스띰의 Agent는 누가 있을까요? 작가, 큐레이터, 독자 이렇게 3명의 Agent가 있는 단순한 글쓰기 플랫폼이라고 해봅시다. 작가(Writer)는 좋은 컨텐츠를 쓰고 업로드하는 주체입니다. 큐레이터(Voter)는 이 컨텐츠의 퀄리티를 정확하게 평가하고 독자들이 볼 수 있도록 큐레이팅하는 사람입니다. 독자(reader)는 이 컨텐츠를 보는 사람이죠.
물론 이 3가지 주체가 분리되어있는 것은 아닙니다. 한 주체가 여러가지 역할을 할 수도 있습니다.
글쓰기 플랫폼의 목표는 무엇일까요? 저는 ‘수준 높은 글의 공급'을 극대화하는 것이라고 생각했습니다.
그리고 다음을 제약 조건으로 설정했습니다.
단일 주체, 혹은 소수의 그룹이 퀄리티 판단에 영향을 미쳐서는 안 됨.
작가들의 보상의 가치가 ‘스띰’의 성장에 연동되어야 함
초보 작가들에게 진입 장벽이 낮아야 함
목표가 ‘수준 높은 글의 공급’이라면, 무엇이 수준 높은지를 결정하고, 그에 비례해 보상을 주는 메커니즘이 필요합니다. ‘해당 글의 추천 수에 스띰 파워 가중치를 계산해 퀄리티로 인정한다’라는 Decision function을 정했습니다.
그리고 스띰 파워를 가지기 위해서는 스띰을 구매해서 묶어두어야 합니다. 따라서 스띰의 유통량은 줄게 되고, 가격이 상승합니다. 그러면 스띰 프로토콜은 스띰 토큰을 신규 발행해서 작가들에게 나눠줍니다. 즉, 스띰 파워 보유자들에게 세금을 걷어 작가들에게 나눠주는 셈이죠.
자, 이 상황에서 모든 주체들이 전략적으로 행동한다면, 설계자가 원하는 결과가 나올 수 있을까요? 다른 문제들도 있을 수 있지만, 저는 3가지 문제를 발견했습니다.
셀프 보팅 문제 : 스띰 파워가 많은 큐레이터가 작가인 경우, 글의 퀄리티에 상관없이 높은 보상을 받을 수 있음 (혹은 그룹끼리 서로 보팅해주기)
독자 수와 보상의 연동 : 독자들이 컨텐츠 수요가 높아지는 것과 토큰의 수요가 연동되어있지 않음 (컨텐츠를 많이 보는 것 =! 보팅을 많이 받는 것)
진입 장벽의 문제 : 스띰 파워가 없는 사람의 경우 영향력이 너무 미미해서, 스띰 파워의 효용을 느낄 수가 없음
문제가 발견되면, 설계자는 규칙을 수정해 해결책을 찾아야 합니다. 그래서 다음과 같은 새로운 규칙을 도입해봅니다.
자기 자신 혹은 같은 주체에게 반복적으로 보팅할 경우, 보팅 파워 빠르게 감소
유료 결제 모델 선택 가능
스띰 파워 임대 기능 도입
이렇게 발견된 문제들을 방지하는 장치들을 짜넣습니다. 물론 이것들도 또다른 문제를 야기할 수 있습니다. 그래서 토큰 모델의 설계자는 가장 합리적인 해결책이 나올 때까지, 이런 규칙을 짜고 머릿속으로 게임을 돌려보는 것이죠.
설계자의 입장에서 더 좋은 토큰 모델 설계를 하기 위해서는 어떤 것들이 필요할까요?
첫번째로 좋은 규칙의 집합, 즉 패턴을 많이 알면 좋습니다. 가능한 메커니즘의 조합은 무한히 많지만, 좋은 스타팅 포인트에서 최적화를 시작한다면 솔루션을 더 빠르게 찾을 수 있습니다. 패턴을 많이 알기 위해서는 케이스 스터디를 통해 여러 블록체인 프로젝트들에서 사용된 패턴들을 공부하는 것이 좋다고 생각합니다.
두번째로 실제 블록체인 서비스에서 나오는 실증적 데이터들이 필요합니다. 제대로 된 설계자라면, 실제로 돌아가는 서비스들이 보여주는 지표와 성과들을 가지고 더 나은 토큰 모델 설계란 배워가야할 것입니다. 안타깝게도 현재 블록체인 상에서 워킹하는 서비스들이 거의 없습니다.
세번째로 복잡한 메커니즘을 시뮬레이션할 툴이 필요합니다. 단순히 머리로 특정 메커니즘이 어떤 결과를 가져올지 추론하는 것은 한계가 있습니다. 네트워크 분석에 쓰이는 Agent-based simulation과 강화 학습 기술을 결합해 실제 인센티브 환경을 구현하고 Agent들이 어떤 전략을 선택하는지 시뮬레이션하는 툴을 개발 중입니다. 곧 소개드릴 수 있으면 좋겠네요.
마지막으로 메커니즘 최적화에 기반한 접근법의 한계점도 밝히고자 합니다.
메커니즘은 내부의 규칙만을 고려할 뿐, 외부 세계와의 상호작용까지는 고려하지 못합니다. 즉, 블록체인 서비스 내의 사용자와 공급자는 고려하지만, 암호화폐 시황이나 경쟁 프로토콜까지는 고려하지 못한다는 것이죠. 하지만 외부 요소는 Agent들의 행동에 상당한 영향력을 행사할 수 있습니다.
메커니즘 디자인은 게임 이론을 기반으로 하고 있기 때문에, 참여하는 주체들이 합리성과 일관성을 갖추고 있다고 가정합니다. 하지만 실제로 인간이 보여주는 합리성은 굉장히 제한적이며, 인간은 단순히 인센티브에 의해서만 움직이지 않습니다.
아무리 이론적으로 완벽한 메커니즘을 설계한다 하더라도, 시간이 지나면 상황은 바뀝니다. 그에 따라 메커니즘도 바뀌어야 하죠. 어떻게 적절하게 제도를 변화시킬 것인가도 중요합니다. 이 부분은 탈중앙화 네트워크의 거버넌스 문제와 맞닿아 있습니다. (참고: On-chain Voting :: How to embrace a voice)
아직 토큰 모델 설계에 대한 연구는 가야할 길이 멀다고 생각합니다. 그 길을 가기 위한 작은 노력으로써 메커니즘 디자인과 토큰 모델 설계를 접목시켜보았습니다. 혹시 의견이나 피드백이 있으시면 contact@deconlab.io로 연락주세요.
Decon은 블록체인 프로젝트들을 자문하고 있는 암호경제학 연구소로써 실제 가치를 만들어낼 수 있는 토큰 모델 설계 연구를 하고자 노력 중입니다.
Buterin, V. (2014). SchellingCoin: A minimal-trust Universal Data Feed
Evan, A. (2018) Crash course in mechanism design for Cryptoeconomic Applications
Jackson, M. (2014). Mechanism theory
Jackson, M. (2001). A crash course in implementation theory
Leyton-Brown, K. (2017). Mechanism design as an Optimization problem
Nisan, N. (2014). Algorithmic Mechanism Design
Stark, J. (2017). Making Sense of Cryptoeconomics
Buterin, V. (2017). Introduction to Cryptoeconomics
Maskin, E. (2013). Serious science — Mechanism design theory