uniswap은 DeFi에서 가장 많이 논의되고 중요한 프로젝트 중 하나다
유니스왑은 이더리움 블록체인 기반의 토큰의 탈중앙화된 거래를 위한 프로토콜이다. 유니스왑 프로토콜은 스마트 콘트랙트의 집합으로써 배포됐고 완전히 탈중앙화이고, 무허가이고, 검열 저항이다. Liquidity(유동성) pool, 자동화된 시장 조성자(Automated market makers), 끊임없는 상품 시장 조성자의 개념으로 만들어졌다.
Hayden Adams는 2018년 이더리움 메인넷에 유니스왑의 첫 버전을 만들어 배포했다. 2020년 두번째 버전인 uniswap V2가 출시되었다. 주요 특징은 ERC20-ERC20 유동성 풀의 추가였다. V2 이전에 각 유동성 풀은 ETH와 다른 화폐 중 하나로 구성되어야 했다. 예를 들어 USDC를 DAI로 거래하기 위해 사용자는 USDC를 ETH로 거래하고 ETH를 다시 DAI로 거래해야 했고 더 많은 가스비와 더 많은 슬리피지를 낳았다. ERC20-ERC20 풀을 제공하는 것은 ETH 공급을 원치 않는 유동성 공급자에게 더 낫다. V2는 on-chain price feeds와 flash swaps을 포함한다. V2는 Solidity로 작성됐다.
Uniswap V2는 두가지 콘트랙트 시스템이 있다. core, periphery
하나의 factory와 많은 콘트랙트의 쌍으로 이루어져 있다. Factory 콘트랙트는 많은 콘트랙트 쌍을 위한 책임이 있다. core 콘트랙트에 직접적으로 상호작용하는 것은 추천하지 않는다. 대신 periphery 콘트랙트를 사용한다.
Factory : factory 콘트랙트의 역할은 pairs라 불리는 유니스왑 내 다른 시장을 생성하고 다른 시장들을 위한 레지스트리 역할을 하는 것이다. 유일한 토큰 쌍당 오직 하나의 스마트 콘트랙트가 형성되게 한다.
Pairs : factory가 생성한 pairs라 불리는 시장이다. 유일한 토큰 쌍으로 구성되어 있다. 주요 목적은 자동화된 시장 조성자 역할을 하게 하고 풀의 토큰 잔액을 추적하는 것이다. 탈중앙화된 가격 oracle을 생성하는데 사용할 수 있는 데이터를 방출한다.
Periphery : periphery는 core와 상호작용을 돕는 도메인 명시 스마트 콘트랙트의 묶음으로 구성되어 있다.
Lirbrary : 데이터와 가격의 도출을 편리하게 하는 특징을 제공한다.
Router : 라우터 콘트랙트는 라이브러리를 사용하고 거래와 유동성 관리 기능을 제공하는 프론트엔드의 모든 기본 요구사항을 지원한다.
Uniswap 프로토콜과 상호작용 하기 위해 Uniswap JS SDK, ethers.js를 사용한다.