신뢰할 수 있는 공평한 DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS)
이더리움의 인기가 토큰화, 탈중앙화 거래소(DEX) 및 DeFi 덕분에 계속 증가하면서 네트워크 사용자들은 전례 없는 수준의 높은 가스 비용을 지불하고 있습니다. 이는 이더리움이 큰 성공을 거뒀다는 반증이기도 하지만 안타깝게도 사용자에게는 더 높은 트랜잭션 비용과 더 긴 채굴 대기 시간을 의미합니다. 트랜잭션이 처리되기 전, 멤풀(mempool)에 머무르는 동안 선행매매(frontrunning)에 취약해져 예상치 못한 부작용이 발생합니다.
가스 비용이 낮은 경우에도 유저들은 멤풀을 통해 트랜잭션을 처리해야 하므로 능숙한 트레이더와 봇은 트랜잭션이 채굴되기 전에 미리 트랜잭션을 볼 수 있습니다. 이렇게 경험이 풍부한 사람들은 전략적으로 자신의 트랜잭션을 생성해 그들이 활용할 수 있는 이러한 형태의 사전에 입수한 고급 정보로부터 이익을 취할 수 있습니다. 이러한 경우 그들은 해당 트랜잭션보다 더 높은 가스 비용을 지불해 그들의 트랜잭션이 우선적으로 처리될 수 있도록 합니다.
이는 가상에만 존재하는 문제가 아닙니다. 최근 다이안 외(이 블로그 포스트의 작성자들을 포함) 연구에 따르면 DeFi 컨트랙트의 일부만 고려한다고 해도 수백만 달러 규모의 선행매매가 이뤄지는 것을 알 수 있었습니다.
오늘날 사람들은 다이안의 논문에 게재된 것 보다 더 큰 수익을 창출하고 있습니다. 또한 대부분의 거래 행위가 중앙화 거래소에서 이루어진다는 점을 미루어 봤을 때 운영자 및 다른 사람들이 선행매매를 할 수 있다는 것을 의미하고 연구 결과에 따른 수치는 빙산의 일각보다 더 작은 부분에 불과할 수 있습니다.[1] 월 스트리터들 또한 선행매매의 높은 수익성에 대해 이미 알고 있었으며 증권회사들은 고빈도 트레이더들에게 주기적으로 그들의 고객 오더를 매도하곤 합니다. 밑에 있는 예시는 이러한 문제가 오늘날 스마트 컨트랙트에 미칠 수 있는 영향에 대해 보여주고 있습니다.
DeFi 및 그 외 트랜잭션 처리 순서 문제
DeFi 컨트랙트를 운영하는 오퍼레이터들은 그들의 고객을 위한 공정성과 투명성을 원합니다. 오퍼레이터들은 종종 가스 캡(gas cap)과 같은 선행매매에 대한 대책을 갖고 있습니다. 하지만 이는 완벽한 해결방안이 될 수 없습니다. 또한 원하는 만큼 트랜잭션을 전송하려고 하는 적대적 마이너에 대한 보호책을 제공해주지 않습니다. 오라클 리포트 및 다른 트랜잭션 종류에 대한 선행매매는 비슷한 위협을 가합니다.
암호화폐 연구원인 필 다이안(Phil Daian) 외 연구원들은 MEV(Miner-Extractable Value)*라는 단어를 처음 사용해 적대적인 트랜잭션 오더를 통해 스마트 컨트랙트 시스템을 악용해 수익을 창출할 수 있는 기회를 계산하는 방법을 고안해냈습니다. MEV라는 단어는 Miner을 포함하고 있어 오해의 소지가 있지만 채굴자 뿐만 아니라 일반 유저들도 대상이 됩니다. 채굴자들은 블록 내 트랜잭션의 순서를 결정할 수 있는 무한한 파워를 가지고 있기 때문에 MEV는 공격자가 체인 공격으로 얻을 수 있는 가치를 표현하는 방식입니다. MEV는 블록체인이 일시적으로 중앙화가 된다는 공공연한 비밀로 인해 생기는 것으로 어떠한 점에서는 한 명의 채굴자가 채굴된 블록 트랜잭션의 순서를 어떻게 기록할지에 대한 독단적인 결정을 내릴 수 있기 때문에 발생합니다.
*MEV: 채굴자가 공격 시 얻을 수 있는 가치 (MEV가 높을수록 채굴자가 체인을 공격하기 위한 유인이 증가함)
최근 MEV 경매라 불리는 MEV 악용을 체계화시킨 서비스를 만들기 위한 제안도 있었습니다. MEV 경매에 대한 타당한 찬반 의견이 있었지만 MEV 경매는 블록체인 커뮤니티에 악영향을 미친다고 생각합니다. 이 경매가 불러일으킬 수 있는 효과에 대한 주장은 이곳에 나와있습니다.
확장성 및 트랜잭션 프라이버시라는 장점을 가지고 있는 롤업(rollup)과 같은 새로운 트랜잭션 처리 접근법도 등장하고 있지만, 이 또한 MEV 문제를 해결해주진 않습니다. 롤업 방식은 트랜잭션 데이터를 모으는 누군가가 트랜잭션을 처리하는 순서를 결정하도록 합니다. MEV를 REV(Rollup-Extractable Value)과 교환하는 것과 마찬가지입니다.
공평한 처리 순서 서비스(FSS) 소개
체인링크 로드맵에서의 다음 단계로 체인링크 랩(Chainlink Labs) 에서 탈중앙화 (및 중앙화) 시스템에서 트랜잭션 처리를 공평하게 할 수 있는 방법을 개발하고 있었습니다. 체인링크가 개발한 방식을 통해 롤업에서의 처리 순서 문제 해결 및 DeFi가 전반적으로 더 성장할 수 있도록 도울 수 있습니다.
체인링크가 개발한 해결법은 FSS(공평한 처리 순서 서비스, Fair Sequencing Service)라 불립니다. FSS는 높은 가스 비용과 불공평한 트랜잭션 처리 순서의 문제점을 해결하려는 목적을 가지고 있고 이를 사용하려는 모든 컨트랙트에게 도움이 될 수 있습니다. FSS를 활용하려는 컨트랙트는 기반 블록체인의 layer-1에 아무 변경 없이도 혜택을 누릴 수 있습니다.
즉, FSS라는 개념은 오라클 네트워크가 트랜잭션을 유저 트랜잭션과 오라클 리포트를 둘 다 포함한 특정 컨트랙트 SC로 전송하도록 하는 것입니다. 그 후 하나의 리더가 아닌 참여한 모든 오라클 노드들이 트랜잭션을 받은 후 순서에 대한 합의를 이룰 수 있도록 합니다. 그 다음에 오라클 노드들은 트랜잭션들을 컨트랙트 SC로 전송합니다. 노드들은 트랜잭션에 대해 임시 또는 시퀀스 숫자를 배치해 일괄적으로 전송합니다. MEV 경매와 마찬가지로 FSS는 블록 채굴 능력과 MEV 활용이라는 두 가지 속성을 따로 분리하지만MEV 경매와 다르게 선행매매에 대한 동기부여를 하지 않습니다. 전반적으로 FSS는 채굴에서 일시적으로 발생하는 중앙화를 없애고 트랜잭션 처리 순서 방식을 탈중앙화합니다.
가스 비용 기반의 트랜잭션 처리 순서 방식의 문제점을 고려했을 때 유저의 트랜잭션 처리 순서를 위해서 오라클 노드는 어떤 판단 기준을 갖춰야 할까요? 일반적인 기준이라면 도착 시간, 즉 선착순으로 트랜잭션을 처리하는 방식이어야 합니다. 하지만 선착순이라는 것은 정확히 어떤 의미일까요?
공평한 처리 방법(Order-fairness)
트랜잭션 처리 순서를 정하는 방식은 전혀 단순하지 않습니다. 사실 굉장히 심오하고 어려운 문제입니다.
비잔틴장애허용(Byzantine Fault Tolerence), 즉 허가형 시스템에 대한 합의에 대한 수십 년 간의 연구에도 불구하고 처리 순서 공평성에 대한 문제는 간과한 것으로 밝혀졌습니다. 대부분의 BFT 시스템은 즉각성(liveness) 및 일관성을 달성하는 것을 목표로 하기 때문에 모든 노드들이 모든 처리 순서에 대한 같은 입장을 바탕으로 신속하게 트랜잭션을 처리하는 것을 목표로 했습니다. 하지만 BFT 시스템 특성상 비슷한 시간대에 요청이 들어온 트랜잭션을 처리하는 방식에 대해서는 아무런 정의가 없었습니다. 만약 모든 노드가 T1을 T2보다 먼저 전송받더라도 BFT 시스템의 일반적인 방식에 따르면 T2가 T1보다 앞 순서로 배치되어도 승인이 되었습니다.
최근 Kelkar 외 (이 포스트의 저자 중 한 명이 공동집필) 연구에서 최초로 트랜잭션 처리 순서를 공평하게 하는 개념을 제시했습니다. 세부적 내용은 복잡하지만, 일반적인 개념에 따르면 대부분의 노드가 T1을 T2보다 먼저 전송받았을 시 T1는 T2보다 늦게 처리되지 않아야 한다는 것이었습니다. 이 연구에서는 해당 속성을 달성하기 위해 애퀴타스(Aequitas[2]) 라는 프로토콜 그룹을 제안합니다. 이러한 프로토콜은 현재는 원치 않은 비용을 발생시키지만 향후 발전을 통해 더 실용적인 변형된 프로토콜이 개발되리라 생각합니다.
FSS는 순서를 정하는 하나의 방식을 위한 프레임워크로 애퀴타스(Aequitas)가 하나의 예시입니다. 추후 FSS는 직접적으로 트랜잭션을 암호화시킨 후 임계치 설정을 통해 오라클 노드가 처리 순서를 정한 후에 해독하는 방식과 같은 더 간단한 방법을 실현할 수 있게 해줍니다. 또한 오라클 리포트를 일련의 트랜잭션에 삽입하는 것과 같은 다른 처리 순서 정책을 지원하게 해줄 것입니다. (만약 원한다면 MEV 경매도 진행할 수 있을 것입니다.)
즉 FSS의 목적은 DeFi 개발자들이 그들이 설정한 기준에 따라 유저들을 공평하게 대할 수 있도록 보장해주는 것입니다.
FSS를 통한 트랜잭션의 공평한 처리 방법은?
유저들은 오라클 네트워크에 직접 트랜잭션 처리를 요청할 수 있습니다. 트랜잭션을 공평한 방식으로 처리할 수 있도록 한 트랜잭션에 대해 다수의 노드들이 참여할 수 있도록 유저는 하나의 트랜잭션 처리를 다수의 노드들에게 동시에 요청해야 합니다.[3]
체인링크는 현재 오라클 노드가 멤풀에 있는 해당 블록체인을 모니터링해 관련된 컨트랙트 SCON을 대신해 트랜잭션을 추출하는 변형된 방식을 탐구하고 있습니다. 일반적으로 오라클 노드는 웹 서비스를 데이터 소스로 사용하지만 멤풀을 데이터 소스로 사용해 유저 트랜잭션에 해당하는 리포트를 생성할 수 있습니다. 하단 이미지를 참고해주세요.
멤풀을 이렇게 사용하는 데에는 다음과 같은 두 가지 큰 장점이 있습니다.
- 기존 호환성 유지: 유저들은 오라클 네트워크와 인터랙트하기 위해 특수 목적 소프트웨어를 사용할 필요 없이 블록체인에 직접 트랜잭션을 전송할 수 있습니다.
- 낮은 가스 비용: 만약 멤풀에 트랜잭션이 이미 포함되어 있다는 것만으로도 트랜잭션 처리가 보장이 된다면 유저들은 채굴 속도에 대해 걱정하지 않아도 됩니다. 이 경우에는 낮은 가스 가격으로도 트랜잭션을 전송할 수 있습니다. 해당 트랜잭션이 드디어 채굴이 되면 트랜잭션이 검열되지 않았다는 감사 추적 가능한 기록을 제공받게 됩니다.[4] 오라클 네트워크는 정렬된 유저 트랜잭션을 높은 가스 비용을 지불하는 컨트랙트에 묶음으로 재전송해 신속한 처리를 기대할 수 있습니다. 이렇게 트랜잭션 묶음으로 처리하거나 롤업 또는 다른 방식을 사용하면 네트워크에서 트랜잭션 당 가스 비용을 낮게 유지할 수 있습니다.
P2P 네트워크는 복잡하고 다수의 사람들과 빠른 네트워크를 보유한 공격자가 있다면 선행매매를 할 가능성이 있습니다. 하지만 만약 오라클 노드들이 개인들을 네트워크상에서 분산시켜 놓고 공격자 또는 악의적인 행위를 하는 개인에 대해 적극적으로 감시를 할 경우 선행매매를 시도하는 데 드는 비용을 많이 증가시킬 수 있습니다.
또한 스마트 컨트랙트 내에서 선행매매를 방지할 수 있도록 하는 동일한 방법(예: commit-reveal scheme 또는 verifiable delay function)도 오라클 노드에 적용하는 것에 대한 제안도 있습니다. 한 가지 중요한 장점은 오라클 노드들은 이러한 방식을 적용해 오프체인에서 방어를 구현할 것이며 (블록생성주기가 아닌 네트워크 딜레이의 순서에 따라) 훨씬 더 짧은 시간 척도에 대해서도 선행매매를 방지할 수 있을 것입니다.
FSS를 통해 네트워크 차원에서 선행매매를 방지할 수 있는 새롭고 간단한 방식도 지원 가능하게 됩니다. 예를 들어 유저들은 임계치-암호화된 트랜잭션을 오라클 노드로 전송해 트랜잭션 처리 순서에 대한 합의가 이뤄지면 트랜잭션 내용이 공개되도록 할 수 있습니다.[5] 순서를 정하기 전에 트랜잭션을 암호화하는 방식은 트랜잭션 내용을 기반으로 한 DEX 및 다른 DeFi 시스템에서는 선행매매를 방지하기 위한 간단하지만 강력한 방법이 될 수는 있지만, 트랜잭션이라는 메타데이터 자체에 기반한 선행매매는 막을 수 없습니다. (예를 들어 어떤 유저가 트랜잭션을 전송했다는 사실 자체가 다른 유저로 인해 선행매매를 하도록 유인하거나 다른 트랜잭션을 우선적으로 처리하도록 하는 것) 이더리움에서는 Submarine Sends와 같은 아이디어를 통해 선행매매를 방지할 수 있으며 유사한 방어 메커니즘이 네트워크 차원에서 적용될 수 있을지에 대한 흥미로운 질문을 던지고 있습니다.
결론
Batch auction과 같은 하나의 독립적인 시스템만 보면 공평한 것 같은 시스템도 다른 시스템과 함께 사용되면 공평하지 않은 경우가 많습니다.[6] 공평함이라는 것은 늘 달성하기 어려운 과제입니다. 체인링크가 FSS를 통해 달성하려는 목표는 기존과 같은 친근한 유저 경험을 전달할 수 있는 UX를 고수하면서도 DeFi 개발자들에게 그들이 만든 시스템이 그들이 선택한 방식을 통해 공평하게 운영될 수 있도록 하는 도구를 제공하는 것입니다. FSS에 대한 더 자세한 내용은 백서에 포함될 것입니다. 체인링크는 앞으로 트랜잭션 처리 방식이 더 공평해짐에 따라 DeFi가 약속했던 더 평등한 금융 체제를 달성할 수 있기를 희망합니다. 적어도 월 스트리트보다는 더 투명하고 공평한 체제를 만들 수 있기를 소망합니다.
이번 블로그 포스트 초안에 대한 의견을 남겨주신 Andrew Miller, Dan Moroz, Fan Zhang 과 Sergey Nazarov에게 감사 인사드립니다.
_____________________________________________
1. 말 그대로 빙하의 10% 만이 수면에 존재. 모든 거래소의 거래량 중 DEX 거래량은 0.1% 수준.
2. 라틴어로 “공평함(fairness)”
3. 검열에 대해 우려하는 유저들을 위해 오라클 기반 제출과 동시에 평행으로 운영되는 컨트랙트에 직접적으로 연결할 수 있는 조금 느린 채널.
4. 유저들은 더 높은 가스 비용을 지불하는 대신 재전송해 기존 트랜잭션을 대체할 수 있음. 중복 기재된 트랜잭션이 멤풀 내에서 처리되는 방법은 내부 정책에 따름. 예를 들어 오라클 네트워크에서 처음 전송된 트랜잭션만 유효하다고 인정하고 완전한 감사가능성(auditability)를 원한다면 유저들이 중복으로 기재할 수 없도록 함.
5. Khalil 외, 중앙화 거래소를 위한 유사한 방법을 제안함.
6. Batch auction 시스템이 만약 정해진 경매 시간 외에도 시장에서도 계속 판매되는 자산을 판매한다면 후자에 참여하는 사람들은 실시간 시장 정보를 바탕으로 경매를 참여할지 여부를 결정해 경매 스니핑(최대한 마지막 순간에 최고가 부르기)을 할 수 있습니다.
Chainlink 한국 공식 채널
Kakaotalk: https://open.kakao.com/o/gWXAAf0b
Telegram: https://t.me/chainlink_korea
Facebook Group: https://web.facebook.com/groups/459042728150845
문의사항: [email protected]
Chainlink 공식 채널
GitHub: https://github.com/smartcontractkit/chainlink
Twitter: https://twitter.com/chainlinkofficial
Telegram: https://t.me/chainlinkofficial