본문으로 건너뛰기

스왑

DeepBook는 automatic market makers (AMMs)에서 흔히 볼 수 있는 스왑-like 인터페이스를 제공한다. 주문 함수와 달리 swap_exact_amountBalanceManager 없이 호출할 수 있다. 대신 Coin 객체로 직접 호출한다. base에서 quote로 스왑할 때는 base_in이 양수 값이어야 하며 quote_in은 0이어야 한다. quote에서 base로 스왑할 때는 quote_in이 양수여야 하고 base_in은 0이어야 한다. 거래 수수료를 지불하기 위해 일정량의 deep_in amount가 필요하다. 이 amount는 더 많이 잡을 수 있으며, 사용되지 않은 DEEP 토큰은 호출이 끝날 때 반환된다.

스왑을 시뮬레이션하기 위해 get_amount_out 엔드포인트를 사용할 수 있다. 이 함수는 스왑에 필요한 DEEP 토큰의 정확한 amount를 반환한다.

API

다음은 스왑를 위해 Pool이 노출하는 엔드포인트이다.

Click to open
Swap exact base for quote

balance_manager 없이 정확한 base 수량을 스왑한다. DEEP 수량은 더 많이 잡을 수 있다. 세 개의 Coin 객체를 반환한다:

  • BaseAsset
  • QuoteAsset
  • DEEP

입력 수량이 lot size로 나누어떨어지지 않으면 일부 base 수량이 남을 수 있다.

필요한 DEEP amount는 더 많이 잡을 수 있다. 남은 잔액은 반환된다.

Click to open
Swap exact quote for base

balance_manager 없이 정확한 quote 수량을 스왑한다. DEEP 수량은 더 많이 잡을 수 있다. 세 개의 Coin 객체를 반환한다:

  • BaseAsset
  • QuoteAsset
  • DEEP

입력 수량이 lot size로 나누어떨어지지 않으면 일부 quote 수량이 남을 수 있다.

Click to open
Swap exact quantity

이 함수는 세 번째 코인에 coin::zero()를 설정한 상태에서 앞의 두 함수가 호출하는 함수가다. base → quote 또는 quote → base에 대해 base나 quote 중 하나가 0 값이면 사용자는 이 함수를 직접 호출할 수 있다.

Click to open
Swap exact base for quote with manager

BalanceManager를 사용하여 정확한 base를 quote로 스왑한다. fees가 DEEP으로 지불된다고 가정한다. BalanceManager에 fees를 위한 충분한 DEEP이 있다고 가정한다. base와 quote인 두 개의 Coin 객체를 반환한다.

Click to open
Swap exact quote for base with manager

BalanceManager를 사용하여 정확한 quote를 base로 스왑한다. fees가 DEEP으로 지불된다고 가정한다. BalanceManager에 fees를 위한 충분한 DEEP이 있다고 가정한다. base와 quote인 두 개의 Coin 객체를 반환한다.

Click to open
Swap exact quantity with manager

BalanceManager를 사용하여 정확한 수량을 스왑한다. 이는 두 manager-based 스왑 함수가 호출하는 underlying 함수가다. fees가 DEEP으로 지불되고 BalanceManager에 fees를 위한 충분한 DEEP이 있다고 가정한다. base와 quote인 두 개의 Coin 객체를 반환한다.