JDEX


1. 팀 소개

BEB 05 Final Project Team 04

  • 팀 명 : 종덱스

  • 프로젝트 명 : JDEX

  • 팀장 : 서종대

  • 팀원 : 김윤겸, 홍유진

  • Github Repo : https://github.com/yu-uj/BEB-05-final-JDEX

  • Date : 2022/08/31 - 2022/09/30

  • 팀 룰

    → 매일 오전 10시, 오후 5시 필수 회의 진행회의록 작성

    → 회의록 작성

    → 그 날의 진행 계획 및 진행 중인 상황 공유



2. 프로젝트 개요

💸 JDEX 프로젝트 목표

Klaytn 기반의 DEX(탈중앙화거래소) 구현.


💸 JDEX 란 ?

이젠 직접 자산을 관리하고 예치하세요.

JDEX는 기존의 중앙화된 거래소의 제삼자 개입 없이 개인 간 금융(P2P) 거래가 가능한 탈중앙화 거래소 입니다.

누구나 JDEX 웹 사이트에 방문하여 지갑(Kaikas)를 연결하고 보유하고 있는 토큰을 다른 사용자에게 전송하거나 다른 토큰으로 교환 할 수 있습니다.

또, 토큰을 지갑에 가지고만 있는 것이 아닌, 단일 혹은 페어 풀에 예치하고, 유동성 제공에 대한 보상(JDEXTOKEN)을 얻을 수 있습니다.


💸  JDEX 의 대표 기능

  • My Token

    : 소유하고 있는 토큰 목록을 확인하고, 다른 사람에게 원하는 토큰을 전송 할 수 있습니다.

  • Swap

    : 소유하고 있는 토큰을 다른 토큰들로 교환할 수 있습니다.

  • Staking

    : 소유하고 있는 토큰을 예치하여 ’JDEXTOKEN’을 보상으로 받을 수 있습니다.


⛓️ 왜 Klaytn 인가 ?

  1. 저비용
    1. 트랜잭션에서 발생하는 가스비가 1~20원 수준으로, 이더리움의 1/100에 해당하는 가스 비용을 필요로 하여 매우 저렴합니다.
  2. 높은 확장성(TPS)
    1. Klaytn은 실제 4000TPS의 트랜잭션 처리량을 가집니다. 이는 1초에 4000트랜잭션이 한 블록에 들어가는 확장성으로, 20TPS(Block Interval 15초)의 이더리움과 7TPS(Block Interval 10분)의 비트코인에 비교했을 때 월등히 높은 TPS 입니다.
  3. 짧은 완결성(Finality)
    1. 완결성은 블록에 담긴 거래가 바뀔 수 없다는 것을 보증하는 시간으로, 블록 생성 간격(Block Interval) * 검증 횟수로 계산합니다. 클레이튼은 1초의 완결성을 가져 초당 한 건의 합의와 동시에 처리합니다. 이더리움의 6분, 비트코인의 60분과 비교하여 매우 짧은 완결성을 가집니다.
  4. 새로운 시도
    1. Klaytn에 비하여 ETH는 접할 기회가 많았기 때문에 이번 프로젝트를 통해 Klaytn Chain을 경험하고, 배우고 싶었습니다.

⛓️ 왜 Klaytn 기반의 DEX인가 ?

  1. 기존의 보편화 된 덱스들은 이더리움의 메이저 덱스인 유니스왑 혹은 스시스왑을 클론 코딩하여 배포하였습니다. JDEX는 Klaytn에서 자체적으로 제공하는 Klaytn Dex Contracts를 분석하고, 배포하는 과정을 거쳐 KIP 컨트랙트 대신 이더리움의 ERC 컨트랙트를 수정하여 사용한 기존 Klaytn 덱스들과 차별점을 두었습니다.
  2. 개인 간 금융(P2P)이 이루어지는 DEX에서 저희가 중요하게 생각한 2가지 수수료전송 속도입니다. 탈중앙화 거래소(DEX)인 만큼 중앙화거래소(은행)과는 다른 장점이 있어야 한다고 생각했고, 수업을 통해 배운 ETH는 비싼 수수료와 느린 전송 속도로 체인으로의 뚜렷한 장점을 찾지 못하였습니다. 그래서 상대적으로 가스비가 저렴하고, 속도가 빠른 Klaytn Chain을 선택하게 되었습니다.


3. 기능별 시연 영상

  • Connect Wallet

    wallet

    • Kailkas 지갑 연결을 위한 모달 창을 보여줍니다.
  • My Token

    Transfer

    • My Token List
      • 연결된 지갑 보유한 Klay 토큰 및 KIP7 토큰 리스트업 합니다.
    • Transfer - 토큰 전송
      • 보유한 토큰을 다른 사람에게 전송할 수 있습니다.
  • Swap

    swap

    • 보유한 Klay / KIP7 토큰을 원하는 다른 KIP7 토큰으로 교환 할 수 있습니다.
  • Staking - 단일 예치

    • 보유한 토큰을 예치하고, 유동성에 대한 보상(LP Token)을 받습니다.

    • Single Pool List

      [ Deposit - 예치 ]

      singlepool

      [ Withdraw - 출금 ]

      singlewithdraw

      • 단일 풀 목록이 리스트 업 됩니다.
      • 풀을 선택하여 단일 예치(Deposit)와 출금(Withdraw)가 가능합니다.
  • Staking - 페어 예치

    • 보유한 토큰을 예치하고, 유동성에 대한 보상(LP Token)을 받습니다.

    • Pair Pool List

      [ Deposit - 예치 ]

      pairpool

      [ Withdraw - 출금 ]

      pairwithdraw

      • ALL / Klay / KIP 페어 풀 목록이 리스트 업 됩니다.
      • 원하는 페어 풀을 선택하여 토큰 페어 예치(Deposit)와 출금(Withdraw)가 가능합니다.
    • Create Pool

      create

      • 원하는 토큰 페어의 유동성 풀을 생성할 수 있습니다.


4. 관련 문서

📋 DB Schema

DB

📋 DB Api

API_List

📋 Wireframe

JDEX_Wireframe


📋 Flow Chart

JDEX Flowchart Final drawio


📋 Token Economy

JDEX_TokenEconomy

[JDEX의 Token Economy]

  • 개발자, 투자자, 유저들에게 적절한 양의 토큰을 분배하고, **예치(단일, 페어 풀)**에 대한 보상으로 JDX 토큰을 지급 받아 지속가능한 시스템을 구축하고자 하였습니다.
  • 보상으로 주어지는 JDX 토큰일정 지분 보유JDEX의 운영 방향성 및 협의에 대한 투표 거버넌스에 참여할 수 있습니다.


📚 JDEX STACKS

COLLABORATION TOOL


FRONTEND



BACKEND


BLOCKCHAIN




회고

BEB 부트캠프의 가장 장기 프로젝트인 파이널 프로젝트를 끝냈다.
이번 프로젝트는 클레이튼 체인을 사용한 탈중앙화거래소(DEX)를 직접 구현해보는 것이었다.
프로젝트 시작 전까지 나는 DEX에 대해 잘 몰랐다. DEX와 De-Fi에 대해서는 인지하고 있었으나, 사용해본 경험이 없었다.
그래서 블록체인을 사용한 금융, 전자화폐를 거래하는 로직과 동향을 먼저 파악했다.
그럼에도 이해가 가지 않는 부분이 존재했는데, 유동성 공급이라던가 페어풀에 예치했을 경우 받는 보상의 존재 등 궁금한 점이 생길 때마다 팀원분들께 물어봤던 것 같다.


우선 우리 팀원 분들은 매우 성실하고, 열정이 넘치고, 유쾌했다.
다들 진행 방향을 정하는데 적극적이고 망설임은 적었다. 서로의 의견을 추합하는 과정도 힘든 적이 없었다.
공부하고 성장하기 위한 프로젝트이며, 덱스의 구조를 이해하고 넘어가자는 우리 팀의 취지에 맞게 포지션을 나누지 않고 풀스택으로 진행했다.
테스크 공유는 각 맡은 페이지와 기능 별로 진행했으며 매일 하루 두번은 필수로 회의를 진행해서 진행 상황을 공유했다.
이 개발 프로세스가 좋았던 것은 우리는 회의를 자주 진행해서 각자 맡은 파트에 이슈가 생길 때 마다 같이 고민해서 해결했고,
개인이 진행한 부분의 코드 리뷰를 반드시 한 덕분에 다른 사람이 개발한 부분까지도 이해도가 높았다.
때문에 이슈가 발생 했을 때 해결할 방법이 생각난 사람과 테스크를 변경하여 진행하는 것도 가능했다.
물론 프로젝트 중간에 컨트랙트 배포 부분은 공동으로 진행했다.
우리는 클레이튼의 자체적인 덱스 컨트랙트를 사용하기 위해 방대한 자료를 봐야해서 많은 시간이 소요될 것을 예상했지만,
KIP7토큰 발행부터 전송, 스왑, 풀생성, 스테이킹, 보상 지급까지 하나 하나 우리가 배포했기 때문에 더욱 오래 걸렸다.
밤새 컨트랙트를 배포하고, 트랜잭션을 확인하고, 구조 파악에서 성공까지 정신은 피폐했지만 결코 포기하지 않았다.
어느 것 하나 우리 손을 거치지 않은 것이 없기 때문에 평가 크루분들의 냉혹한 반응에도 더 뿌듯한 마음으로 끝냈던 것 같다.
마음같아서는 수많은 실패 트랜잭션까지도 인쇄해서 방마다 붙여놓고 싶은 심정이다ㅋ


그리고 이번 프로젝트 팀은 팀원들의 격려와 서로 서로의 협동심이 빛났던 팀이었다.
팀원들과 소통을 자주 하니, 코드에 대한 이해도 또한 높아졌고 프로젝트에 대한 애정도 커졌다.
그래서 마무리를 잘 끝낸 것만으로도 팀원 모두 감격했고, 다른 사람들의 평가가 어떻든 정말 신경도 쓰이지 않았다.
JDEX는 내게 아주 소중한 프로젝트 경험이 될 것 같다.