유니스왑의 기본적인 가격결정 매커니즘과 원리를 이해했으니, 이제 유니스왑이 버전 1,2,3을 거치면서 어떤 기술적인 성장을 했는지 심층적으로 알아보도록 하겠습니다.
전 포스팅을 보고오시기 바랍니다.
링크 :
V2
2020년 5월 18일에 공개된 유니스왑 버전2는 ERC20 토큰 간의 직접적인 페어 쌍 제공과 플래시 스왑(Flash Swap)을 주로, 여러 개선 사항들과 함께 업데이트되었습니다. 코드의 비가역성과 투명성을 보장하는 블록체인 스마트 컨트랙트의 특성상 첫번째 버전도 여전히 사용가능합니다.
uniswap v2 공식 문서👇
https://blog.uniswap.org/uniswap-v2
유니스왑 V2의 새로운 기능과 개선 사항은 아래와 같습니다.
- ERC20 / ERC20 페어 지원
- 가격 오라클
- 플래시 스왑
- 코어/헬퍼 아키텍처
- 기타 기술적 개선
- 프로토콜 수수료와 유니 토큰(Uni Token)의 등장
1. ERC20 / ERC20 페어 지원
유니스왑 V2에서는 ERC20 표준 계약을 따르는 두 토큰이라면 그 종류와 상관없이 직접적으로 유동성 풀에 추가할 수 있습니다. 이더리움을 거쳐서 풀을 형성했던 기존 V1은 유동성 풀이 이더리움 자체의 가치 변동에 큰 타격을 입는다는 취약점이 있었습니다. 이를 해결하기 위해 이더리움을 거치지 않고도 어떤 토큰이든 다른 어떤 ERC20 토큰과 직접적으로 풀에 추가될 수 있도록 한 버전 2에서는 토큰 양식을 맞춰주기 위해 Native ETH 대신 Wrapped ETH가 사용됩니다.
이더리움을 거치지 않고 거래하게 된 유동성 공급자들은 ETH에 강제적으로 노출되지 않고 다양한 ERC20 토큰으로 된 포지션을 유지할 수 있게 되었습니다. 예를 들어 DAI/USDC 페어는 이론적으로는 유동성 공급자들에게 거의 변동성이 없어야 하지만, 거래에 유용합니다.
이뿐만 아니라 직접적인 ERC20/ERC20 페어를 갖는 것은 ETH을 경유하는 데에 드는 슬리피지를 예방하며 수수료를 절약하고, 직접적으로 페어링되지 않은 두 자산 사이에서도 직접 원하는 경로를 설정해 목적에 맞는 이득을 취할 수 있습니다.
2. 가격 오라클(Price Oracle)
가격 오라클은 블록체인에서 자산 가격을 제공하는 메커니즘입니다. 블록체인은 독립된 생태계로써, off-chain 상의 데이터를 활용하기 위해서는 중앙화된 거래소에서 자산 가격을 API로 가져오거나 외부 데이터를 직접 요청하는 방법밖에 없습니다.
(이때 블록체인 밖에 있는 데이터를 오프체인(off-chain)이라고 하고, 그 데이터가 블록체인 안으로 들어온 것을 온체인(on-chain)이라고 합니다)
인터넷 보안 문제, 가격 조작이나 DNS 레코드 해킹, API 서버 다운 등의 문제가 발생할 수 있기에 가격과 같은 외부 정보를 가져올 때 데이터 출처에 대한 신뢰를 얻는 것이 가장 중요합니다. 신뢰할 수 있고 정확한 온체인 가격을 제공하는 chainlink와 같은 서비스를 사용하는 것도 web3 생태계의 일부분으로 자리잡았습니다. 하지만 유니스왑은 높은 유동성과 차익거래로 인해 자산 가격은 중앙화된 거래소의 가격과 유사하다고 가정하고, 실제 가격을 추적하는 대신 각 초마다의 가격을 더하는 방식을 사용합니다. 이와 관련해서 소위 말하는 TWAP(Time-Weighted-Asset-Price)의 개념이 등장합니다.
TWAP의 구체적인 매커니즘은 아래 링크를 참조하시기 바랍니다.
https://next-block.tistory.com/entry/UniswapV3-Price-Oracle
https://blog.uniswap.org/uniswap-v3-oracles
3. 플래시 스왑(Flash Swap)
유니스왑 버전 2에서는 플래시 스왑 기능도 추가되었습니다.
플래시 스왑이나 플래시 론의 기본적인 매커니즘은 사용자에게 담보를 요구하지 않고도 유동성을 제공할 수 있다는 것에 있습니다. 이는 한 트랜잭션 안에 대출해준 유동성을 다시 공급받겠음을 확신할 수 있기에 가능한 기능입니다. 개인적으로 관련 기능들은 탈중앙화와 DEX의 꽃이라고 생각하는데, 여러 위험한 공격 위험들에도 불구하고 해당 기능을 유지하기로 Uniswap 팀이 결정한 이유도 이와 비슷한 것임을 짐작할 수 있습니다.
공식 문서에서 설명하는 것처럼, 플래시 스왑을 사용하면 차익 거래, 자산 유동화와 담보 이전 등의 기능을 수행할 수 있습니다. 다만 Flash Loan과 달리 플래시 스왑은 여러 세부적인 차이점으로부터 비롯되는 장점이 있는데, 해당 내용은 아래 링크를 참조하시기 바랍니다.
Flash Loan과 Flash Swap의 차이점 링크😃
https://docs.tinyman.org/protocol-specification/flash-swap
4. 코어/헬퍼 아키텍처와 기타 기술적 개선사항
시스템 구성 요소가 더 잘 분리되고 재결합되고, 더욱 유연한 서비스를 제공하기 위해 코드에서의 최적화가 이루어졌다는 내용입니다. Uniswap V2 Periphery 를 제공해서 편의성을 높이고, ETH 대신에 WETH를 사용하고 Core 컨트랙트가 토큰 잔액을 내부적으로 소유하고, 코어 컨트랙트의 몇몇 기능들을 라우터 컨트랙트로 이전했습니다.
파이썬 Subset인 Vyper로 작성된 V1과 다르게 v2부터는 솔리디티로 작성되었습니다.
V3
Uniswap V3는 이전과는 아예 달라졌다고 할 수 있을 정도로 혁신적 업데이트를 거쳤습니다.. 이전 버전에서는 AMM 시스템에 의해 가격이 결정되어 유저들이 주로 ‘Price Taker’로 참여했습니다. 그러나 Order Book을 기반으로 하는 거래소는 ‘Price Maker’와 ‘Price Taker’ 모두 가능한 것처럼, 유니스왑 버전 3는 AMM에서 오더북 기능을 구현하는 것에 성공했습니다.
Uniswap V3의 핵심 개념은 ‘Tick’에서 시작합니다. Tick은 최소 가격 움직임을 나타내는 단위로, 거래 가격 범위를 가격 단위로 쪼개어 표현합니다. 이를 통해 거래는 Order Book 기반 거래소와 유사한 방식으로 이루어집니다. 다만 몇 가지 차이가 있습니다. 각 Tick의 가격 범위는 시스템에 의해 결정되며, 유저들은 이를 제안할 수 없습니다. 또한, Tick 내에서 거래가 이뤄지는 경우에는 AMM의 가격 책정 공식을 따르지만, 가격 범위를 벗어나는 경우에는 공식 업데이트가 필요합니다. 더불어, 특정 가격 범위 내에 어떤 가격으로든 주문을 할 수 있습니다.
이런 Tick 시스템을 통해 Uniswap V3는 AMM의 이점과 Order Book 기반 거래소의 이점을 접목시켰습니다. 또한, 각 자산 Pair에 따라 다른 유동성 풀이 존재할 수 있으며, 유동성을 집중할 수 있는 ‘Concentrated Liquidity’ 시스템을 도입했습니다. 이전 버전에서의 LPs는 고정된 가격 범위에 유동성을 공급했지만, V3에서는 LPs가 원하는 범위에 유동성을 공급하고, 이를 NFT 형태로 보상받게 되었습니다.
Uniswap V3의 변화로 인해 DeFi 서비스의 패러다임이 바뀌었다고 해도 과언이 아닙니다. 개개인의 유동성 공급 전략 설정이 새로운 DeFi 서비스의 중요한 요소로 부각되었고, 각 LPs는 다양한 유동성 풀에서 수익을 극대화할 수 있는 전략을 개발하고 활용할 수 있게 되었습니다.
인사이트 (생각 혹은 전망 정리)
-임정준
이더리움 네트워크의 속도가 개선되고 수수료가 절감되면서 이더리움 기반의 토큰 생태계가 더 활성화 되고 있는데, 이에 따라 이더리움 기반 토큰의 거래 장터인 유니스왑이 활성화되는 것은 너무 당연하다고 생각합니다. 하지만 주의해야 할 점도 있습니다. 유니스왑은 DEX(탈중앙화 거래소)라는 이름에 걸맞지 않게 규제와 관련된 약점을 가질 수 있다는 점입니다. 상품 거래소에 있는 것과 유사한 파생 상품을 무단으로 제공하는 것을 방지하기 위한 명목으로 100개 이상의 파생 토큰 거래쌍을 거래 대상에서 제외한 사례와 같이 탈중앙화의 원칙을 어기는 것으로 비판을 받을 수 있는 일들이 점점 일어난다면, DEX는 결국 탈중앙화의 이름을 쓴 또 하나의 중앙화된 거래소가 되지 않을까 하는 우려가 듭니다. 블록체인 네트워크 위의 중앙화 거래소 탄생을 막기 위해, 관련 종사자와 시장 참여자들 지속적인 피드백이 필요할 것으로 보입니다.
- 김겨레
경제학자 로널드 코스는 <기업 시장 그리고 법>이라는 책에서 거래비용 개념을 통해 ‘기업’이라는 조직의 근원에 대해 다룹니다. 기업이라는 집단이 존재한다는 것은 생각해보면 신기한 일입니다. 만약 자연 상태에서 시장경제가 원활하게 돌아간다면, 굳이 기업이 존재할 필요없이 모두가 자신의 일을 수행하고, P2P로 수행한 일에 따라 나온 결과물의 잉여를 ‘시장’에서 교환하면 됩니다. 이러면 기업이라는 중앙 집단에 소속되어 분업화된 일을 수행하지 않아도 경제 생태계가 잘 돌아갈 수 있을 것 같습니다.
하지만 인간 사회에는 어쨋든 현재 기업이라는 중앙화된 성격을 가진 집단이 생겨났고, 대부분의 인간은 기업에 들어가서 일을 하게 되었습니다. 신기한 일입니다. 로널드 코스라는 경제학자는 이런 기업의 탄생을 설명하는 과정에서 ‘거래비용’이라는 개념을 등장시켰습니다.
다시 자연상태로 돌아가보겠습니다. <모두가 자신의 일을 수행하고, P2P로 수행한 일에 따라 나온 결과물의 잉여를 ‘시장’에서 교환>을 합니다. 여기서 뭔가 이상한 게 느껴져야 합니다. 모두가 자신의 일을 수행한다? P2P로 잉여를 교환한다? ‘자신의 일’은 인간 사회 전체 측면에서 어떻게 분배되고, 잉여의 교환은 어떻게 어디서 이뤄질까요? 쉽지 않다는 것을 알 수 있습니다.
내가 좋은 농기계를 만들 줄 알아도 농부를 만나 거래를 해야 교환이 이뤄질 수 있고, 내가 아무리 말을 통해 사람들에게 재미라는 가치를 줄 수 있어도 많은 사람에게 말할 수 있는 공간이 필요합니다. 농부를 찾고 만나는 일, 많은 사람에게 말할 수 있는 공간을 마련하는 일은 굉장한 노력, 시간이 듭니다. 이것이 바로 ‘거래비용’입니다.
한 회사 내부에서 일어나는 일을 봐도 알 수 있습니다. 외주를 맡겨서 시장 교환거래를 통해 어떤 절차를 수행할 수 있음에도 회사 내부에서 여러 절차를 수행하는 이유는 바로 ‘거래비용’이 있기 때문입니다. 기업 내부의 ‘내부자 거래’에서는 그런 거래비용이 획기적으로 낮아집니다. 기업가가 리스크를 떠 안을 수 있는 책임감이 있다면 말입니다. 뜬금없이 거래비용과 기업의 근원에 대한 이야기가 왜 나오는지 궁금할 수 있습니다. 저는 Uniswap이 가장 큰 DEX로 자리매김한 핵심 요인이 여기에 있다고 보기 때문입니다.
V2에서 V3로 Uniswap이 변하는 과정에서 Uniswap은 코드에 대한 접근 권한을 제한했고, 거래에 있어서 거래소 차원에서 여러 제약을 가한 바 있습니다. 이에 탈중앙화를 지향하는 많은 이들이 비판한 바 있습니다. 하지만 제가 생각했을 때 Uniswap의 이런 조치가 있었기에 이용자들의 거래비용 및 ‘개발자들의 거래비용’이 효과적으로 줄어들 수 있었다고 생각합니다. Uniswap은 일종의 코드 작업의 ‘내부화 과정’, 즉 참여하는 개발자 집단이 ‘기업화’되는 과정을 거쳤기 때문에 거래비용을 효과적으로 낮추고 많은 이용자를 유지할 수 있었다는 의미입니다.
Uniswap이 앞으로 어떤 길을 갈지는 모릅니다. 하지만 저는 최소한 현재와 같은 기조를 유지해야 향후 지속적으로 비즈니스 모델을 유지할 수 있을 것이라고 생각합니다. 결국 중앙화된 기업이 되지는 않더라도, 해당 생태계를 유지하는 핵심 집단이 ‘기업화’되는 과정은 필연적으로 겪어야 지속 가능한 비즈니스 모델로 발전할 수 있으리라고 생각합니다.