동기

암호화폐의 종류와 시장이 확대되면서 암호화 토큰을 변환하거나 교환해야 할 필요성이 커지고 있습니다. 블록체인 환경의 주요 특징 중 하나는 탈중앙화이지만 최근까지는 Bitcoin과 Ethereum 같은 암호화폐의 경우 중앙집중형 거래소만 존재하였습니다. 많은 거래소들은 암호화폐, 실물화폐 그리고 암호화 토큰의 거래 서비스를 제공합니다. 예를 들면 Coinbase, BTC-e, ShapeShift 그리고 Mt.Gox와 같은 중앙집중형 거래소가 있습니다. 탈중앙화 영역에서의 중앙집권화된 거래소는 매우 유감스러운 일입니다. 중앙집중형 거래소에서는 거래를 하고자 하는 모든 사용자의 자금은 한곳에 보관되어야 합니다. 사용자의 자금은 거래소에 직접적으로 보관되며 매매에 대한 주문을 매칭하거나 오더북을 올바른 상태로 유지할 뿐만 아니라 예금자의 자금 또한 관리합니다. Mt.Gox의 붕괴는 왜 중앙집권형 거래소를 신뢰할 수 없는지에 대한 가장 좋은 예이며, 해킹 사건에 대한 손실액은 약 650,000 BTC 였습니다. 누군가가 거래소 시스템을 해킹 할 수 있으며 모든 사용자들이 모든 것을 잃을 수도 있습니다. 왜냐하면 BTC-e 펀드 해킹 사례처럼 사용자들의 프라이빗 키를 모두 한곳에 보관하기 때문입니다. 그리고 이와 유사한 방법으로 사용자들의 자금을 잃어버린 거래소는 앞서 언급한 두 곳 뿐만이 아닙니다. 거래소가 탈중앙화 처리 방법을 사용하게 되면 사용자들의 자산이 해커들의 선행매매 위험으로부터 안전하게 보관될 수 있습니다.

1. 탈중앙화 거래소

탈중앙화 거래소는 그들의 자본력으로 사용자의 신뢰를 얻기위해 노력하지 않습니다. 사용자들의 지갑은 단일 실체에 의해 관리되지 않습니다. 승인 절차의 일환으로써 사용자들은 직접적으로 그들의 주문에 디질털 서명을 합니다. 유저들은 그들의 자금을 관리하지만 on-chain 거래는 중앙집중형 거래소와 같이 비실시간 거래의 부작용이 있습니다.

탈중앙화 거래소는 중앙집중형 거래소에 비해 이점이 있지만 문제점 또한 존재합니다.

만약 거래소의 모든 구성 요소가 탈중앙화 되어있을 경우 구매와 판매 주문이 자동으로 매칭 되지 못할 것이며 해당 작업마저 사용자들이 수행해야 할 것입니다. 예를 들어 오더북에 올라온 승인된 특정 주문일 경우 다른 사용자는 디지털 서명된 카운터 오더를 추가할 수 있으며 한 쌍의 주문과 함께 완료된 트랜잭션을 블록체인에 보낼 수 있습니다. 그다음 구매자와 판매자 간에 자산이 이체될 것입니다.

또한 자동 매칭과 주문 취소가 느리기 때문에 마이너 선행매매에 대한 취약성이 존재할 것입니다. 다음 생성될 블록의 마이너는 취소된 주문을 실행할 선택권을 갖게 되며 잠재적으로는 이러한 주문으로부터 수익을 얻게 될 것입니다.

만약 우리가 거래소의 모든 구성 요소가 아닌 매칭 부분만을 탈중앙화한다면 어떨까요? 본 설계는 위에 언급한 두 가지, 주문을 취소한 중재자와 선행매매 마이너 문제를 해결할 수 있습니다. 중앙집중형 거래소와는 다르게 중앙화된 matcher를 탑재한 탈중앙화 솔루션은 사용자의 자금을 훔칠 수 있는 권한이 없을 것입니다.

2. Waves 탈중앙화 거래소

Waves는 탈중앙화 거래소 (DEX) 서비스를 제공합니다. 이는 전통적인 거래소와 같이 사용자들 간 여러 다른 자산을 거래할 수 있게 하며 탈중앙화된 특성으로 인해 최종 사용자에게 더욱더 안전한 보안 서비스를 보장합니다. Waves 기반 신규 자산을 생성할 수 있으며 토큰에 유동성을 제공하는 크라우드 펀딩 지분의 조기 거래를 가능하게 합니다. 이를 위해 토큰은 구매자와 판매자가 주문을 할 수 있는 공공의 채널에서 판매되어야 합니다.

실시간 거래는 DEX의 유일한 중앙집중형 설계 요소인 오더북 Matcher 덕분에 이루어집니다. 오더북 Matcher는 새로운 주문을 매칭하고 아주 빠른 속도로 거래를 수행합니다. 거래가 성공적으로 수행되었는지에 대해 다음 블록이 생성될 때까지 기다릴 필요가 없습니다. 이는 중앙집중형 거래소 수준의 속도를 제공함과 동시에 탈중앙화 프로토콜의 보안 수준을 제공합니다.

주문들은 각각의 노드들에 의해 쌍으로 연결되며 이런 노드들은 Matcher의 역할을 합니다. 거래 트랜잭션은 Waves 블록체인에 들어가기 전에 주문에 따라 가격을 매칭하는 노드들로부터 항상 검수됩니다. 그렇기 때문에 Matcher는 "잘못된" 트랜잭션을 시행할 수 없습니다. 주문들은 각각의 노드들에 의해 쌍으로 연결되며 이런 노드들은 Matcher의 역할을 합니다. 거래 트랜잭션은 Waves 블록체인에 들어가기 전에 주문에 따라 가격을 매칭하는 노드들로부터 항상 검수됩니다. 그렇기 때문에 Matcher는 "잘못된" 트랜잭션을 시행할 수 없습니다. 그런 다음 Matcher는 거래 트랜잭션을 만들고 이를 시그니처와 함께 서명한 다음 블록체인에 넣어 사용자의 잔고 변화를 수정하게 됩니다. Matcher는 주문을 부분적으로 매칭할 수 있습니다. 트랜잭션이 승인된 다음 Matcher의 서명은 마이닝 노드와 블록체인에 들어간 거래 트랜잭션에 의해 승인됩니다. 그리고 사용자의 잔고는 수량과 주문 수행 가격에 따라 변경됩니다. 중요한 점은 자금은 블록체인에 퍼블리싱 된 후에 전송된다는 것입니다. 만약 Matcher가 실패한다면 거래는 진행되지 않지만 자금을 잃지 않을 것입니다. 왜냐하면 거래소는 고객의 자산을 소유하지 않기 때문입니다.

사용자는 자산을 구매하거나 판매하기 위해 Limit 주문을 만들고 서명하며 Matcher 노드에게 해당 Limit 주문 요청서를 보냅니다. 본 거래소의 Limit 주문은 모든 거래소와 동일합니다. 고정된 수량의 토큰을 구매 (판매) 하기 위한 주문은 지정한 가격과 같거나 더 높은 가격으로 주문됩니다. 새로운 주문이 DEX에 요청되면 모든 필드의 적합성이 검사되고 서명은 발신자의 퍼블릭 키에 의해 인증됩니다. 그런 다음 내부 Matcher 상태를 기반으로 주문이 인증됩니다. 이러한 id를 가진 주문은 존재해서는 안 되며 특정 자산을 위한 모든 주문 수량의 합은 발신자 계정 자산의 잔고보다 작거나 같아야 합니다. DEX에 대한 작업 구성은 Figure 1에 나와 있습니다:

그림 1

사용자는 주문에 만료 시간(최대 타임스탬프)을 설정할 수 있으며 시간이 만료되면 주문은 자동으로 취소됩니다. DEX의 규칙 중 하나는 30일을 초과하는 모든 주문은 기본적으로 취소된다는 것입니다. 각 주문의 만료 시간은 사용자가 주문을 서명할 때 정할 수 있습니다. UNIX 시대 이후 만료 시간은 초의 absolute number를 나타내는 long interger value입니다. 주문이 미체결 상태이고 만료 시간이 현재 UNIX 타임 스탬프보다 남아 있으면 사용자가 이를 취소할 수 있습니다. 이 경우 해당 주문은 취소된 주문으로 블록체인에 들어가며 그 이후로 아무도 주문을 체결할 수 없습니다.

하나의 주문에 대한 전체 실행 주기는 다음과 같습니다:

  1. 요청된 주문에 가격 매칭이 가능한 카운터 오더가 없을 경우 해당 주문에 상응하는 오더북에 기록됩니다.
  2. 요청된 주문과 일치하는 카운터 오더가 있을 경우 해당 주문이 체결됩니다. 즉, 오더북에서 카운터오더는 제거되고 Matcher는 거래 트랜잭션을 생성합니다. 해당 트랜잭션은 Matcher의 프라이빗 키가 서명되고 블록체인에 기록되기 위해 Waves 네트워크로 전송됩니다.
  3. 요청된 주문 수량이 다수의 주문을 실행할 수 있을 만큼 많을 경우 Matcher는 다수의 트랜잭션을 생성합니다. 생성된 트랜잭션은 매칭 된 카운터 오더 수량과 동일한 수량을 가지고 있습니다. 매칭 된 카운터 오더는 수락 시간 순서대로 선택됩니다 (선입 선출).

주문의 단계에 따라 주문 상태의 표시가 다르게 나타납니다. 오더북에 있지만 체결되지 않은 주문은 "Accepted"로 표시되며 상태에 따라 "Filled", "Partially Filled" 또는 "Canceled"로 나타나기도 합니다. 완전히 체결되지 않은 주문은 취소될 수 있으며 취소 후 Matcher의 오더북에서 삭제됩니다.

3. Matcher 수수료 산출

매수 또는 매도 주문이든 거래 수량에 상관없이 하나의 주문에 대한 수수료는 0.003 WAVES로 동일합니다. 거래 트랜잭션은 매수자의 주문에서 매도자의 주문으로 가는 Matcher 수수료를 위한 두 가지의 개별 필드를 포함합니다. 몇몇의 트랜잭션에 의해 하나의 주문이 완전히 실행될 수 있으며 이 경우 모든 Matcher는 해당 트랜잭션에 포함된 주문에 수수료를 가합니다.

주문이 일부 거래에 의해 부분적으로 실행되는 경우 Matcher 수수료는 체결된 수량에 비례해서 해당 트랜잭션에 포함됩니다. 즉,

체결된 수량 * 주문 Matcher 수수료 / 주문 수량.

이 주문에 대한 나머지 Matcher 수수료는 주문이 모두 체결 될 때까지 다른 트랜잭션에 포함됩니다.

3.1 예시:

3가지의 주문이 있습니다 (그림 2): 두가지의 매수 주문과 하나의 매도 주문. 각각의 주문에 대해 사용자는 0.003 WAVES를 수수료로 지불해야하고 이 수수료는 주문이 체결됨에 따라 차감됩니다. 아래의 예시 확인:

  • 100%의 주문1과 70%의 분량의 주문3이 트랜잭션1에 의해 매칭되었으며 Matcher가 마이너들에게 0.003 WAVES의 트랜잭션 수수료를 지불하기에 이 트랜잭션의 Matcher의 수수료는 0.003 + 0.0021 - 0.003 = 0.0021 WAVES와 같습니다.
  • 50%의 분량의 주문2와 30% 분량의 주문3이 트랜잭션2에 의해 매칭되었으며 이 트랜잭션에 대한 Matcher 수수료는 0.00009 + 0.0015 - 0.003 = -0.0006 WAVES와 같습니다.

그러므로 위 두 트랜잭션에 대해 Matcher가 사용자들로 부터 받은 수수료는 0.0021 - 0.0006 = 0.0015 WAVES 입니다. 그리고 Matcher가 마이너에게 지불해야하는 수수료는 0.006 WAVES 입니다.

그림 2: Matcher 수수료 작업에 대한 예시, TX1 - 트랜잭션1, TX2 - 트랜잭션2, Ord1 - 주문1, Ord2 - 주문2, Ord3 - 주문3

Summary:

기간 Matcher의 수수료 마이너의 수수료 Matcher 수익률
전월 681.42336675 waves 569.721 waves 16.39%
전체 기간 3476.01418346 waves 2824.771 waves 18.74%

요약하자면 전체 기간 동안 Matcher는 총 수수료의 18.74%를 획득하였으며 그 외의 수수료는 블록에 트랜잭션을 기록하는 마이너들에게 지불되었습니다 (2018년 2월 8일 데이터).

4. DEX 설치하기

5. Matcher 설치하기

  • 사용자들은 Waves 소프트웨어를 설치하고 매칭 기능을 활성화시켜서 그들만의 Matcher 설치할 수 있습니다.
  • Matcher가 이가 제공하는 서비스로부터 수수료를 받을 수 있습니다. 이를 통해 당신의 마이닝 수익을 상당히 증가시킬 수 있습니다.
  • 사용자가 Matcher에게 주문을 보내면 그는 그의 자산에 대한 소유권을 다른 이에게 양도하는 것이 아닙니다. 해당 주문이 카운터 오더와 매칭 되기 전까지 자산은 그의 계정에 보유됩니다.

참고. 여기에서 Matcher에 대한 기술적 세부사항을 확인하세요.

results matching ""

    No results matching ""