IT/Blockchain2022. 9. 22. 20:48

안녕하세요. IT반장입니다. 

이번 글에서는 탈중앙화거래소 중에서 속도가 빠르고 최근 TVL이 가장 높은 dYdX에 대해서 알아보겠습니다.


목차

1. 개요
2. 아키텍쳐
3. 무기한 계약
4. 보안
5. 평가


1. 개요

- 목표

  • 사용자들이 중간자 개입 없이 자신만이 거래에 대한 권한을 가질 수 있는 강력하고 전문적인 거래소 구축
  • 전 세계 어디에서도 사용할 수 있는 트레이딩 플랫폼

- 설립자 Antonio Juliano

  • 전 Uber 개발자이자 Coinbase 소프트웨어 엔지니어인 Antonio Juliano는 2017년에 플랫폼을 설립했으며 2019년에 프로토콜을 출시
  • 탈중앙화 금융(DeFi) 세계에 마진 거래를 도입하기로 결정하고 dYdX에 대한 아이디어를 구상

- 본사는 미국 샌프란시스코

  • dYdX Foundation은 스위스 추크에 위치
  • 미국을 포함하여 제한된 국가는 서비스 안함

- 취급하는 암호화폐: 37개(2022.09.22 현재)

- 마진 거래: 10x ~ 20x

- 수수료: 무료(~10만 달러/월)

- 서비스 사고 및 다운타임에 대해서 공지하고 있음(참고[2]) 

- 데이터 센터: AWS AP-NORTHEAST-1 리전(도쿄)

  • 미국 IP는 엄격히 제한함

 

2. 아키텍쳐

- dYdX는 StarkEx (Ethereum Layer2 ZK-Rollup or Validium data-availability modes)를 연동함(참고[3])

- StarkEx Solution Architecture

  • StarkWare(StarkEx) 에서 컨트랙트 관리 및 검증을 수행함
  • 거래소는 거래를 매칭하여 제출함

StarkEx Solution Architecture

- StarkEx High-Level Architecture

  • 이용자의 자금을 악의적인 거래소가 훔칠 수 없도록 하면서도 고속 거래 및 낮은 수수료를 보장
  • 머클 트리 기반의 검증 방식 사용 (Fact Registry, 참고[4])  

StarkEx High-Level Architecture

- StarkEx Smart Contract Architecture

StarkEx Smart Contract Architecture

  1. Proxy Contract: 상태 정보 및 관련 컨트랙트 정보 저장(solidity proxy pattern, 참고[5])
  2. Dispatcher Contract: 업그레이드 가능한 컨트랙트 구현 패턴(diamond standard, 참고[6])
  3. Sub-Contracts: StarkEx 에서 필요한 기능들이 구현된 컨트랙트들
  4. Verifier Fact-Registry: Fact Registry를 검증하는 컨트랙트
  5. Committee Fact-Registry: Fact Registry를 등록하는 컨트랙트

- StarkEx Back End Architecture

StarkEx Back End Architecture

  1. Gateway: 거래소로 부터 Tx를 수신
  2. Batching & Validation: 배치 작업 및 Tx 검증
  3. Baches info: 배치 정보 공개
  4. Changes Approval GW: 사용자 지정 오프체인 로직을 사용할 수 있도록 함(위원회 승인 필요)
  5. Proving: 외부 증명 서비스를 통해 상태 전환 증명 생성, 온체인 검증자(Fact Registry)에 등록
  6. Packing: 블록체인에 전송할 데이터(주소, payload 등)를 묶음
  7. Blockchain Writer:  보낼 데이터에 네트워크 정보(가스, nonce, 서명 등)를 포함하여 블록체인에 전송
  8. Catcher: 블록체인을 모니터링하여 배치 모듈에 내용 전달

- StarkEx Partner Integration

StarkEx Partner Integration

  1. Front End: 사용자 요청에 대해 온체인(이더리움)과 오프체인(StarkEx) 둘 다 지원해야 함
    • 일반적으로 사용자가 온체인 요청을 하면 백엔드에서는 오프체인 요청이 되도록 구성
  2. Order Verification: 사용자 주문 확인(서명, 잔액, 금고ID 등)
  3. Business Logic: StarkEx에 전달할 Tx 처리 및 계정 상태 업데이트
  4. TX Stream:  0부터 시작하는 tx_ids라는 연속적인 식별자로 유효성을 검사하고, 인덱싱
  5. Tx Sender:  StarkEx Gateway에 Tx 전송 (비동기식)
  6. Error Handler: 유효하지 않은 거래 정보를 수신하여 이전 상태로 복원
  7. State Approval: 모든 배치를 블록체인으로 전송하기 전에 승인하는 절차
  8. Censorship Prevention: 검열 방지를 위해 사용자가 특정 작업을 블록체인 상의 StarkEx 컨트랙트에 직접 제출 가능하도록 함 

 

3. 무기한 계약(Perpetual Contracts)

- dYdX는 다양한 자산에 대한 비보관형 탈중앙화된 마진 상품을 제공

- Margin(증거금)

  • 담보는 USDC로 보유
개시 증거금 요건 = abs(S × P × I)
유지 증거금 요건 = abs(S × P × M)

총 개시 증거금 요건 = Σ abs(S i × Pi × I i )
총 유지 마진 요구 사항 = Σ abs(S i × P i × M i )

총 계정 가치 = Q + Σ (S i × P i )

무료 담보 = 총 계정 가치 - 총 개시 증거금 요구 사항

S 포지션 크기입니다(롱이면 양수, 숏이면 음수)
P 시장에 대한 오라클 가격입니다
I 는 시장의 개시 증거금 비율입니다.
M 는 시장에 대한 유지 마진 비율입니다.

- Liquidations(청산)

종가(숏) = P × (1 + (M × V / W))
종가(롱) = P × (1 − (M × V / W))

P 시장에 대한 오라클 가격입니다
M 는 시장에 대한 유지 마진 비율입니다.
V 위에서 정의한 총 계정 가치입니다.
W 위에서 정의한 총 유지 증거금 요구 사항입니다.

- Funding(펀딩)

  • 롱 과 숏 거래자 사이에 교환
  • 펀딩 비율은 1시간 비율로 표시
  • 펀딩 비율 계산
프리미엄 = (최대(0, 임팩트 입찰가 - 지수 가격) - 최대(0, 지수 가격 - 임팩트 매도호가)) / 지수 가격

Impact Bid Price = 임팩트 명목 가치의 시장 매도 평균 실행 가격
임팩트 매도호가 = 임팩트 명목 가치의 시장 매수에 대한 평균 실행 가격

영향 명목 금액 = 500 USDC / 개시 증거금 비율

펀딩 비율 = (프리미엄 요소 / 8) + 이자율 요소

- Contract Loss Mechanisms(계약 손실 메커니븜)

  • 변동성이 크게 되면 일부 계정의 가치는 0 아래로 떨어질 수 있음
  • 보험 기금으로 손실 부담
  • 보험 기금이 고갈된 경우 가장 높은 이익과 레버리지를 가진 포지션으로 마이너스 잔고 계정을 상쇄할 수 있음  

- Oracle Prices(오라클 가격)

  • 각 거래 후 각 계정이 잘 담보되었는지 확인
  • 계정을 청산해야 하는 시점 결정
  • 15개의 독립적인 Chainlink 노드로 계산

- Index Prices(지수 가격)

  • 펀딩 비율 계산
  • Stop-Limit and Take-Profilt 주문과 같은 트리거 가능한 주문 트리거(촉발)

 

4. 보안

- PeckShield 에 외부 감사(참고[7])

 

5.  평가

- 중앙화된 거래소의 빠른 거래 속도와 탈중앙화된 거래소의 스마트 컨트랙트 방식을 하이브리드 형태로 제공하는 DEX 서비스

- 기술적으로 완전 탈중앙화가 아닌 자체 거래소 구축 모듈에 의존하는 방식이므로 다양한 문제가 발생할 수 있음

- 이용자 보호를 위한 보험 및 추가적인 보호 방식을 제공하지만 공격 발생시 실효적으로 대응하기 어려운 것으로 판단됨  

 


참고 목록

[1] 홈페이지: https://trade.dydx.exchange/

[2] 서비스 제공 상태: https://status.dydx.exchange/uptime

[3] StarkEx: https://docs.starkware.co/starkex/

[4] StarkEx Fact Registry: https://docs.starkware.co/starkex/fact-registry.html

[5] Solidity Proxy Patterns: https://blog.openzeppelin.com/proxy-patterns/

[6] Diamond Standard: https://hiddentao.com/archives/2020/05/28/upgradeable-smart-contracts-using-diamond-standard

[7] dYdX security audit: https://github.com/starkware-libs/starkex-contracts/blob/master/audit/StarkPerpetual_v1.0_Audit_Report.pdf

 

문서 이력

- v1.0 (20220922) :  최초 등록


도움이 되셨다면 

눌러 주세요. ^^

반응형
Posted by ITBJ