Navigator: 스왑 라우팅 엔진

Navigator 엔진은 현존하는 모든 클레이튼 네트워크 DEX들의 유동성을 활용합니다. 하나의 스왑 트랜잭션을 여러 DEX, 토큰, 프로토콜을 경유하는 최적의 경로를 찾아, 항상 최저가 토큰 구매를 보장합니다. 이를 보장하기 위해서는 여러 컴포넌트들의 유기적이고 안정적인 연동이 필요합니다.

스왑스캐너는 아래에서 설명할 1.Navigator, 2.Klaytn Node Cluster 3.NAEP(Navigator Aggregation Execution Protocol) 시스템을 통해 메인넷과의 블록체인 동기화, 블록체인 데이터에서 유동성 정보 추출, 최적 경로 계산 의 모든 파이프라인을 <1초 안에(Subsecond) 처리하여 거래자에게 최저가 토큰 구매 경로를 제공합니다.

1. Navigator

Navigator는 최저가 토큰 구매 가격을 얻기 위해 갱신되는 유동성 데이터를 실시간으로 활용, 최적 경로를 탐색하는 스왑스캐너만의 독자적인 알고리즘입니다.

  • 엄청난 양의 계산 알고리즘을 최적화, 분산 시스템으로 처리하여 <1초 안에 모든 유동성 데이터를 분석, 최적의 경로를 추출합니다.

대략 150개의 토큰이 상장 되어 있다고 가정하면 하나의 토큰을 거칠 때 마다 경우의 수는 x150배로 늘어납니다. 예를 들어 5가지 토큰을 경유하는 경로의 총 가짓수는 75,937,500,000개입니다. 여기서 교환하려는 토큰을 여러 경로로 나누는 경우의 수까지 고려하면, 계산량은 기하급수적으로 늘어납니다.

이 계산량을 처리하기 위한 연산 속도가 느려질 경우 이미 최적 경로라고 할 수 없게 됩니다. 클레이튼의 기본 block 생성 시간은 1초 입니다. 매 초 마다 블록이 생성되므로, 매 초 마다 유동성에 변동이 생길 수 있습니다.

즉, 클레이튼 block 생성 시간인 1초 이내에 엄청난 계산량을 처리할 수 있어야 최적의 경로를 추출할 수 있습니다. 불가능할 것 같았던 계산 알고리즘을 스왑스캐너의 기술력으로 가능하게 하였습니다.

  • 단순 유동성 비율 계산을 넘어 가스비, DEX 수수료 모두를 계산에 포함 시켜 최적의 경로를 찾습니다.

DEX 마다, pair 마다 유동성과 가스비가 매우 상이합니다. 단순하게 유동성 비율만 계산해서는 최적의 경로를 추출할 수 없습니다. Navigator 는 가스비와 각 DEX를 거칠 때 발생하는 수수료들을 계산에 포함시켰습니다.

  • <1초 마다 최신의 유동성 정보를 수집하여 실시간으로 최적 경로 계산에 활용합니다.

매 초 마다 바뀔 수 있는 유동성 정보의 특성 상 최저가 토큰 구매 경로를 보장하는 Navigator 에게는 항상 최신의 유동성 정보가 필요합니다. 유동성 정보가 1초라도 지나면 이미 신선하지 않은, 상한 정보가 됩니다. 대부분의 DEX들은 이 정보를 10초마다 한 번씩 갱신합니다. 하지만, Navigator는 안정적인 스왑스캐너의 Klaytn node cluster를 활용하여 <1초마다 유동성 정보를 수집, 실시간으로 최적 경로 계산에 활용합니다.

2. Klaytn Node Cluster

DEX들과 pair들의 유동성 정보를 공급하는 근원은 Klaytn node 입니다. 이 node가 얼마나 실제 네트워크와 빠르게 동기화 되는지 여부는, 실시간 최적 경로 탐색에 있어서 가장 중요한 요소입니다. 스왑스캐너는 아래와 같은 방식들로 node들을 운영, 이를 보장합니다.

  • 어떤 상황에서도 기능이 멈추지 않도록 여러 대의 node를 운영합니다.

모든 Production 서버 infrastructure가 그렇듯, 단 하나의 node만 운영 할 경우에는 장애가 발생 시 전체 기능이 멈추게 됩니다. 스왑스캐너는 비용 절감을 위해 단 하나의 node만 사용하는 위험한 행동을 하지 않습니다.

  • 클레이튼 권장 사양의 200%가 넘는 고성능 node를 사용합니다.

Node는 매 블록 생성 시마다 데이터를 읽어와서 검증하고 저장합니다. 블록에 들어 있는 트랜잭션의 개수가 많을수록 더 좋은 성능의 node가 필요하게 됩니다. 스왑스캐너는 비용 절감을 위해 저렴한 node를 사용하는 타 서비스와 다르게 고성능의 node를 사용합니다. 스왑스캐너의 node들은 16 vCPU, 64GB RAM, 120k Provisioned IOPS SSD를 활용합니다. 이는 클레이튼 권장 사양의 200%를 상회하는 성능입니다.

  • 시스템이 즉각 장애에 대응합니다.

스왑스캐너가 운영하는 node들은 매 초 메인넷과의 싱크를 확인하여 혹시 발생할 장애를 모니터링합니다. 장애 발생 시, 사람의 개입 없이 Load balancer, health check, advanced metric collection을 통하여 시스템이 즉각 장애 node를 퇴장 시키고(failover) 새 node로 자동 교체합니다.

3. NAEP(Navigator Aggregation Execution Protocol)

이 프로토콜(smart contract)은 Navigator가 계산해낸 실시간 최저가 토큰 구매 경로를 실제로 실행하는 역할을 담당합니다. 계산도 중요하지만 이를 실제 실행할 수 있는 지도 기술력의 핵심 중 하나입니다.

  • 모든 경로를 한 트랜잭션 안에 처리하여 블록 마다 변화할 수 있는 유동성에 대응합니다.

경로가 복잡하다고 여러 트랜잭션에 나누어 스왑을 실행하게 되면 모든 트랜잭션이 한 블록에 담기지 못 할 수 있습니다. 유동성은 매 블록마다 변화할 수 있기 때문에, 한 트랜잭션 안에 처리하지 않으면 최적 경로를 실행했다고 말 할 수 없습니다.

  • 받게 되는 토큰의 양을 직접 검증하여 연동한 DEX가 안전하지 않은 경우에도 걱정하실 필요가 없습니다.

만약 트랜잭션의 실행이 늦어져서 수 초 전 과거의 최적 경로로 스왑이 실행되어도 걱정하실 필요가 없습니다. NAEP는 트랜잭션이 실행되는 동안 수령하게 될 토큰의 양을 검증하여, 예상 수령 보다 적어지는 경우 트랜잭션을 자동으로 취소(rollback)합니다. 이 때 스왑은 이뤄지지 않고, 사라지는 토큰도 없습니다. 즉, 스왑스캐너가 연동한 DEX가 안전하지 않은 경우에도 전혀 걱정하지 않으셔도 됩니다!

  • MITM(man-in-the-middle) 공격에 안전합니다.

NAEP는 Navigator가 발행한 스왑 경로가 아닌 이상 트랜잭션을 절대 실행하지 않습니다. 트랜잭션 실행 시, 트랜잭션 수신 주소가 NAEP의 컨트랙트 주소와 일치하면 실제 트랜잭션 데이터(tx data)는 그 누구도 조작할 수 없습니다. 이는 아래와 같은 실행 구조로 가능합니다.

1) Navigator는 경로 계산 후, 해당 경로 데이터를 직접 서명하여 사용자에게 보내줍니다.

2) 사용자는 해당 데이터를 또다시 서명하여 NAEP에 전송합니다.

3) NAEP는 사용자의 서명과 Navigator의 서명을 모두 확인한 뒤 실제 스왑을 실행합니다.

Last updated